=== release 1.25.1 ===

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

	* NEWS:
	* RELEASE:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.25.1

2025-01-13 18:10:31 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* docs/meson.build:
	* ext/aalib/meson.build:
	* ext/adaptivedemux2/hls/meson.build:
	* ext/adaptivedemux2/meson.build:
	* ext/amrnb/meson.build:
	* ext/amrwbdec/meson.build:
	* ext/cairo/meson.build:
	* ext/dv/meson.build:
	* ext/flac/meson.build:
	* ext/gdk_pixbuf/meson.build:
	* ext/gtk/meson.build:
	* ext/jack/meson.build:
	* ext/jpeg/meson.build:
	* ext/lame/meson.build:
	* ext/libcaca/meson.build:
	* ext/libpng/meson.build:
	* ext/mpg123/meson.build:
	* ext/pulse/meson.build:
	* ext/qt/meson.build:
	* ext/qt6/meson.build:
	* ext/raw1394/meson.build:
	* ext/shout2/meson.build:
	* ext/soup/meson.build:
	* ext/speex/meson.build:
	* ext/taglib/meson.build:
	* ext/twolame/meson.build:
	* ext/vpx/meson.build:
	* ext/wavpack/meson.build:
	* gst/alpha/meson.build:
	* gst/apetag/meson.build:
	* gst/audiofx/meson.build:
	* gst/audioparsers/meson.build:
	* gst/auparse/meson.build:
	* gst/autodetect/meson.build:
	* gst/avi/meson.build:
	* gst/cutter/meson.build:
	* gst/debugutils/meson.build:
	* gst/deinterlace/meson.build:
	* gst/dtmf/meson.build:
	* gst/effectv/meson.build:
	* gst/equalizer/meson.build:
	* gst/flv/meson.build:
	* gst/flx/meson.build:
	* gst/goom/meson.build:
	* gst/goom2k1/meson.build:
	* gst/icydemux/meson.build:
	* gst/id3demux/meson.build:
	* gst/imagefreeze/meson.build:
	* gst/interleave/meson.build:
	* gst/isomp4/meson.build:
	* gst/law/meson.build:
	* gst/level/meson.build:
	* gst/matroska/meson.build:
	* gst/meson.build:
	* gst/monoscope/meson.build:
	* gst/multifile/meson.build:
	* gst/multipart/meson.build:
	* gst/replaygain/meson.build:
	* gst/rtp/meson.build:
	* gst/rtpmanager/meson.build:
	* gst/rtsp/meson.build:
	* gst/shapewipe/meson.build:
	* gst/smpte/meson.build:
	* gst/spectrum/meson.build:
	* gst/udp/meson.build:
	* gst/videobox/meson.build:
	* gst/videocrop/meson.build:
	* gst/videofilter/meson.build:
	* gst/videomixer/meson.build:
	* gst/wavenc/meson.build:
	* gst/wavparse/meson.build:
	* gst/xingmux/meson.build:
	* gst/y4m/meson.build:
	* meson.build:
	* sys/directsound/meson.build:
	* sys/oss/meson.build:
	* sys/oss4/meson.build:
	* sys/osxaudio/meson.build:
	* sys/osxvideo/meson.build:
	* sys/rpicamsrc/meson.build:
	* sys/v4l2/meson.build:
	* sys/waveform/meson.build:
	* sys/ximage/meson.build:
	  docs: port plugins to explicit sources
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8273>

2025-01-04 10:06:46 +0100  Edward Hervey <edward@centricular.com>

	* meson.build:
	  good: Enable extra warning flags
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>

2025-01-04 10:06:15 +0100  Edward Hervey <edward@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	  splitmuxsink: Fix GST_(S)TIME_{ARGS|FORMAT} usage
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>

2025-01-04 10:05:54 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstisoff.c:
	* ext/qt/gstqtsink.cc:
	* ext/qt/gstqtsrc.cc:
	* ext/qt6/gstqml6glsink.cc:
	* ext/qt6/gstqml6glsrc.cc:
	* ext/wavpack/gstwavpackcommon.c:
	* gst/audioparsers/gstwavpackparse.c:
	* gst/avi/gstavidemux.c:
	* gst/debugutils/gstpushfilesrc.c:
	* gst/deinterlace/gstdeinterlace.c:
	* gst/goom/goom_core.c:
	* gst/interleave/interleave.c:
	* gst/isomp4/gstisoff.c:
	* gst/isomp4/qtdemux.c:
	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-parse.c:
	* gst/rtpmanager/gstrtprtxqueue.c:
	* gst/rtsp/gstrtspsrc.c:
	* gst/wavparse/gstwavparse.c:
	  good: Clearly specify fallthrough in switch/case
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>

2025-01-04 10:02:20 +0100  Edward Hervey <edward@centricular.com>

	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-parse.c:
	  matroska: Reorder switch/case for parsing
	  Just makes it clearer
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>

2025-01-04 10:01:40 +0100  Edward Hervey <edward@centricular.com>

	* gst/isomp4/gstqtmux.c:
	  qtmux: Fix GST_STIME_ARGS usage
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>

2025-01-04 10:00:59 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2: Fix CLAMP usage
	  It's a positive value
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>

2025-01-04 10:00:07 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
	  adaptivedemux2: Remove useless ABS
	  Just compare the difference (in the right order)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>

2025-01-04 10:03:42 +0100  Edward Hervey <edward@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	  splitmuxsink: Fix wrong usage of GstClockTime vs GstClockTimeDiff
	  This could potentially have caused issues (because of the rest of the code using
	  checks for signed invalid values on a unsigned value)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8286>

2025-01-04 10:03:12 +0100  Edward Hervey <edward@centricular.com>

	* gst/multifile/gstsplitmuxsrc.c:
	  splitmuxsrc: Add missing break
	  This would cause the reconfigure path to be called
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8286>

2025-01-04 09:59:55 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Add missing break
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8286>

2025-01-04 09:59:34 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	  adaptivedemux2: Fix usage of GstClockTime vs GstClockTimeDiff
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8286>

2025-01-07 09:31:26 +0100  Edward Hervey <edward@centricular.com>

	* gst/multifile/gstsplitmuxsrc.c:
	  splitmuxsrc: Ensure only a single stream-start event is pushed
	  Since we are simulating a single output, we want to ensure only a single
	  stream-start is pushed downstream. We do *not* want to send a (potentially) new
	  stream start event after flushing (like after seeks).
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4146
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8252>

2025-01-09 17:12:54 +0000  Will Miller <will.miller@pexip.com>

	* gst/rtp/gstrtpvp9pay.c:
	* tests/check/elements/rtpvp9.c:
	  rtpvp9pay: fix profile parsing
	  Incorrect parsing of these bits meant that we were incorrectly parsing
	  the VP9 uncompressed bitstream header for some profiles, as the header
	  is of variable length and format depending on the profile. Amongst
	  various unintended effects, this caused the width and height from the SS
	  to be incorrectly parsed and set in the caps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8275>

2018-10-16 12:42:22 +0100  Alex Ashley <bugzilla@ashley-family.net>

	* tests/check/elements/dash_mpd.c:
	  dashdemux2: mpdparser: add test for ISO8601 durations that overflow
	  See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/82
	  and https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2576
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8209>

2024-11-08 12:06:28 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxaudio/gstosxaudiosrc.c:
	* sys/osxaudio/gstosxcoreaudio.h:
	  osxaudiosrc: Work around timestamps on iOS not starting from 0
	  On macOS, you always get your own 'timeline' for the AudioUnit session, so timestamps start from 0.
	  On iOS however, AudioUnit seems to give you a 'shared' timeline so timestamps start at a later, non-0 point in time.
	  Simply offsetting seems to do the trick.
	  This was causing osxaudiosrc to not output any sound on iOS.
	  Regressed in 2df9283d3f2ea06af5ebd6db03a6d545cac52f19
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7856>

2024-11-08 12:02:23 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxaudio/gstosxcoreaudiocommon.c:
	  osxaudiosrc: Fix render callback removal when pausing/stopping
	  At least on iOS, the 'input' callback kept being called after going to PAUSED.
	  Specifying the right type (like in gst_core_audio_io_proc_start()) fixes that.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7856>

2024-11-08 11:57:49 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxaudio/gstosxcoreaudiocommon.c:
	  osxaudio: Fix AudioOutputUnitStart() deadlock on iOS >=17
	  At some point in iOS 17, this call started waiting for the first render callback (io_proc) to finish.
	  In our case, that callback also takes the ringbuf object lock by calling gst_audio_ring_buffer_set_timestamp(),
	  which results in a deadlock.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7856>

2024-11-08 11:54:27 +0100  Piotr Brzeziński <piotr@centricular.com>

	* meson.build:
	* sys/osxaudio/gstiosaudiosession.h:
	* sys/osxaudio/gstiosaudiosession.m:
	* sys/osxaudio/gstosxaudiosink.c:
	* sys/osxaudio/gstosxaudiosink.h:
	* sys/osxaudio/gstosxaudiosrc.c:
	* sys/osxaudio/gstosxaudiosrc.h:
	* sys/osxaudio/gstosxcoreaudio.c:
	* sys/osxaudio/gstosxcoreaudio.h:
	* sys/osxaudio/gstosxcoreaudioremoteio.c:
	* sys/osxaudio/meson.build:
	  osxaudio: Automatically set up AVAudioSession on iOS
	  A correctly configured AVAudioSession is needed on iOS to:
	  - allow the application to capture microphone audio (in some cases)
	  - avoid playback being silenced in silent mode
	  Without this, initializing AudioUnit for capture can fail on iOS >=17 (from my testing).
	  Since AVAudioSession has a lot of settings, in most cases its setup should be handled by the user/app.
	  However, just to have a basic default scenario covered, let's configure the bare minimum ourselves,
	  and allow anyone to disable that behaviour by setting configure-session=false on src/sink.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7856>

2025-01-06 20:30:51 +0800  Dean Zhang (张安迪) <dean.zhang@mediatek.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2videodec: release decode only frame in input list
	  For some frames with decode-only flag, the v4l2 decoder will not
	  put them in output list. The corresponding decode-only frames will
	  be still kept in input list, which may cause potential performance
	  issue when the input list is full. So release the decode-only frames
	  according to the decode-only flag after they are processed by decoder
	  driver.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8153>

2024-12-31 11:49:21 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-mux.c:
	* tests/check/elements/matroskamux.c:
	  matroskamux: Consider audio buffers as keyframes when writing out simpleblocks
	  Otherwise mpv complains and considers the file broken.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4142
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8225>

2024-12-31 11:42:04 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-mux.c:
	  matroskamux: Fix audio-only stream conditions
	  The num_a_streams and related counters are used for pad numbers and don't give
	  the absolute number of streams in this run of the muxer.
	  Also, consider the output audio-only if there are more than 1 audio stream too.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4142
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8225>

2024-12-17 20:08:24 +0100  Christian Meissl <meissl.christian@gmail.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: fix accumulated base offset in segment seeks
	  analog to fix for matroska-demux
	  commit f3c126d07c8a85e76bf5abdfa7f140bbf20545ea
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8240>

2024-12-17 21:23:34 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/fourcc.h:
	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux.h:
	* gst/isomp4/qtdemux_types.c:
	  qtdemux: Add support for ISO/IEC 23003-5 raw PCM audio
	  And also support the ISO/IEC 14496-12 chnl channel layout box as required
	  by ISO/IEC 23003-5.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8171>

2025-01-02 12:24:03 +0100  Jochen Henneberg <jochen@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Undef helper macros after use
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8127>

2024-12-18 08:44:30 +0100  Jochen Henneberg <jochen@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Validate matrix before doing simplified multiply
	  The matrix multiplication makes some assumption about the element
	  values to simplify the math with fixpoint values. If this is allowed
	  for the given matrices is now checked first.
	  Then the debug output for matrix and a comment have been fixed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8127>

2024-12-17 10:48:45 +0100  Jochen Henneberg <jochen@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fixup for orientation matrix parsing
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8127>

2024-12-10 21:34:48 +0100  Jochen Henneberg <jochen@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Use mvhd transform matrix and support for flipping
	  The mvhd matrix is now combined with the tkhd matrix. The combined
	  matrix is then checked if it matches one of the standard values for
	  GST_TAG_IMAGE_ORIENTATION.
	  This check now includes matrices with flipping.
	  Fixes #4064
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8127>

2024-12-09 14:26:03 +0100  Albert Sjolund <alberts@axis.com>

	* gst/rtpmanager/gstrtpsession.c:
	  rtpsession: send twcc struct in both directions
	  As there are signals around rtpsession in both directions,
	  send twcc data both upstream and downstream.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7940>

2024-12-25 16:22:23 +0100  Tim-Philipp Müller <tim@centricular.com>

	* tests/check/elements/aacparse.c:
	  aacparse: add test to make sure output caps are set also on reuse
	  See https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/350
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8214>

2024-12-18 11:43:16 -0300  Thibault Saunier <tsaunier@igalia.com>

	* docs/gst_plugins_cache.json:
	* gst/videofilter/gstvideoflip.c:
	  videoflip: Add support for Y444_16XX
	  Necessary code already existed, it was just a matter of advertising it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8177>

2024-12-21 14:39:58 +0100  Robert Mader <robert.mader@collabora.com>

	* docs/gst_plugins_cache.json:
	* sys/v4l2/gstv4l2object.c:
	  v4l2: object: Add P010 format
	  For 10bit content. Tested with HEVC on a Pixel3a (qcom).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8194>

2024-12-19 17:01:28 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/multifile/gstsplitmuxsrc.c:
	  splitmuxsrc: Post messages when a fragment is started
	  This allows the application to keep track which fragment is currently active.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8184>

2024-12-18 13:18:32 -0300  Thibault Saunier <tsaunier@igalia.com>

	* docs/meson.build:
	  doc: Handle gst_dep.get_variable('libexecdir') failure
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178>

2024-12-18 12:27:30 -0300  Thibault Saunier <tsaunier@igalia.com>

	* docs/meson.build:
	  doc: Allow updating the plugins cache for all modules even if hotdoc is not present
	  This was possible for some modules but not all, for no good reason.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178>

2024-12-18 15:15:22 +0100  Carlos Falgueras García <cfalgueras@fluendo.com>

	* gst/rtp/gstrtph264pay.c:
	* gst/rtp/gstrtph265pay.c:
	  rtph26xpay: Fix the default framerate
	  Use 0/1 instead of 0/0 as the default framerate for rtph26{4,5}pay.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8176>

2024-12-18 16:21:47 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* docs/gst_plugins_cache.json:
	  doc: v4l2: Update documentation cache for DMA_DRM
	  The template caps now exposes DMA_DRM formats.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>

2024-12-18 15:30:24 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: object: Adjust DMABuf negotiation base on io-mode
	  If the io-mode is forced by user to MMAP, USERPTR or RW, don't try and
	  negotiated DMABuf caps feature. This would otherwise fail later.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>

2024-12-18 15:13:17 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2bufferpool.h:
	  v4l2: pool: Adjust pool behaviour when DMA_DRM is used
	  We disable the copy threshold and always add GstVideoMeta.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>

2024-08-22 16:08:03 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	* sys/v4l2/gstv4l2src.c:
	* sys/v4l2/gstv4l2transform.c:
	* sys/v4l2/gstv4l2videodec.c:
	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2: Add support for setting memory:DMABuf caps
	  This is the final step to allow negotiation of this caps features. Limiting the
	  features based on the io-mode shall come next.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>

2024-08-20 15:20:02 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: object: Implement probing memory:DMABuf caps feature
	  This is the caps obtained trough caps query. We now have both system and
	  DMAbuf varaint, while maintaining support for meta:Interlaced feature.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>

2024-08-15 14:28:51 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2: object: Add memory:DMABuf caps feature to template caps
	  In this patch, we introduce memory:DMABuf caps feature into V4L2
	  elements template caps. This is required to allow caps query,
	  allocation query and set_format to use it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>

2024-08-15 09:54:26 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: Directly map V4L2 formats to DRM formats
	  As in the long term not all V4L2 formats will have a libgstvideo
	  implementation, add a dedicated DRM fourcc map. This will be used
	  to enable memory:DMABuf caps features.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>

2024-08-15 09:53:06 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/ext/drm_fourcc.h:
	  v4l2: Include a copy of drm_fourcc.h
	  This one has been imported from libdrm 2.4.122.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>

2024-12-09 15:12:57 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/osxaudio/gstosxaudiosink.c:
	* sys/osxaudio/gstosxaudiosrc.c:
	  vtenc, osxaudio: Fix missing since markers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>

2024-12-09 15:18:55 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* docs/gst_plugins_cache.json:
	* sys/osxaudio/gstatenc.c:
	  atenc: Add missing since markers and mark plugin API
	  Also update the plugin docs cache.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>

2024-12-05 00:32:37 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	  docs: Update macOS plugin docs again
	  Contains the following updates:
	  * New properties on avfvideosrc: screen-crop-*
	  * H265 and H265 Alpha support in vtdec and vtenc (VideoToolbox)
	  * ProRes support in vtenc
	  * New properties on vtenc elements: rate-control, data-rate-limits,
	  max-frame-delay
	  * New plugin atenc (AudioToolbox) with support for encoding AAC
	  * Plugin move: atdec moved from -bad to -good
	  * New property on osxaudio elements: unique-id
	  * OS X -> macOS
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>

2024-12-12 12:05:04 +1100  Matthew Waters <matthew@centricular.com>

	* gst/rtp/gstrtppassthroughpay.c:
	  rtppassthroughpay: ensure buffer is writable before mapping writable
	  It is entirely possible that the incoming buffer into _chain() is not writable
	  and will result in a critical when trying to map().
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8131>

2024-12-04 16:10:46 +0000  Philippe Normand <philn@igalia.com>

	* gst/rtpmanager/gstrtpsession.c:
	* gst/rtpmanager/rtpsession.c:
	* gst/rtpmanager/rtpsession.h:
	  rtpsession: Fix twcc stats structure leaks
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8073>

2024-12-04 16:52:55 +0800  Qian Hu <Qian.Hu@mediatek.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: move height setting outside of per-plane loop
	  In the V4L2 format, the height parameter
	  is an attribute of the entire image, not of an individual plane.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8088>

2024-12-04 16:42:49 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	  splitmuxsrc: Calculate the end offset of a fragment once known
	  If a new fragment is added with a valid duration but no offset then the start
	  offset is set later based on the end offset of the previous fragment. At that
	  point the end offset of this fragment can also be calculated and not doing so
	  would give the next fragment the same start offset.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8069>

2024-12-04 17:13:12 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstflacparse.c:
	* gst/audioparsers/gstflacparse.h:
	  flacparse: Improve header validity checks
	  Allow sample rate, number of channels and bps to change and in that case update
	  the caps accordingly.
	  Also move (non-fatal) validity checks and storing of the header values outside
	  the actual parsing once we actually know that a valid frame is available.
	  And also don't warn on the last frame with fixed block size blocking strategy
	  that the block size has changed: the last frame is allowed to be smaller.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3281
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8075>

2024-09-27 00:31:36 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Add size check for parsing SMI / SEQH atom
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-244
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3853
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>

2024-09-26 19:16:19 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Check for invalid atom length when extracting Closed Caption data
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-243
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3849
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>

2024-09-27 10:39:30 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Actually handle errors returns from various functions instead of ignoring them
	  Ignoring them might cause the element to continue as if all is fine despite the
	  internal state being inconsistent. This can lead to all kinds of follow-up
	  issues, including memory safety issues.
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-245
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3847
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>

2024-09-27 10:38:50 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Make sure there are enough offsets to read when parsing samples
	  While this specific case is also caught when initializing co_chunk, the error
	  is ignored in various places and calling into the function would lead to out of
	  bounds reads if the error message doesn't cause the pipeline to be shut down
	  fast enough.
	  To avoid this, no matter what, make sure enough offsets are available when
	  parsing them. While this is potentially slower, the same is already done in the
	  non-chunks_are_samples case.
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-245
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3847
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>

2024-09-27 09:47:50 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix error handling when parsing cenc sample groups fails
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-238, GHSL-2024-239, GHSL-2024-240
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3846
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>

2024-09-27 00:12:57 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix length checks and offsets in stsd entry parsing
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-242
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3845
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>

2024-09-26 14:17:02 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Make sure enough data is available before reading wave header node
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-236
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3843
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>

2024-09-26 09:20:28 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Make sure only an even number of bytes is processed when handling CEA608 data
	  An odd number of bytes would lead to out of bound reads and writes, and doesn't
	  make any sense as CEA608 comes in byte pairs.
	  Strip off any leftover bytes and assume everything before that is valid.
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-195
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3841
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>

2024-09-27 15:50:54 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Check sizes of stsc/stco/stts before trying to merge entries
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-246
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3854
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>

2024-09-26 18:41:39 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux_dump.c:
	  qtdemux: Don't iterate over all trun entries if none of the flags are set
	  Nothing would be printed anyway.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>

2024-09-26 18:40:56 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix debug output during trun parsing
	  Various integers are unsigned so print them as such. Also print the actual
	  allocation size if allocation fails, not only parts of it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>

2024-09-26 18:39:37 +0300  Antonio Morales <antonio-morales@github.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix integer overflow when allocating the samples table for fragmented MP4
	  This can lead to out of bounds writes and NULL pointer dereferences.
	  Fixes GHSL-2024-094, GHSL-2024-237, GHSL-2024-241
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3839
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>

2024-10-09 11:52:52 -0400  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-demux.c:
	  matroskademux: Put a copy of the codec data into the A_MS/ACM caps
	  The original codec data buffer is owned by matroskademux and does not
	  necessarily live as long as the caps.
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-280
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3894
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>

2024-09-30 19:19:42 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-ids.c:
	  matroskademux: Skip over zero-sized Xiph stream headers
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-251
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3867
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>

2024-09-30 19:06:03 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-demux.c:
	  matroskademux: Skip over laces directly when postprocessing the frame fails
	  Otherwise NULL buffers might be handled afterwards.
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-249
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3865
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>

2024-09-30 19:04:51 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-demux.c:
	  matroskademux: Don't take data out of an empty adapter when processing WavPack frames
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-249
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3865
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>

2024-09-30 18:25:53 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-demux.c:
	  matroskademux: Check for big enough WavPack codec private data before accessing it
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-250
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3866
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>

2024-09-30 16:33:39 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-demux.c:
	  matroskademux: Fix off-by-one when parsing multi-channel WavPack
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>

2024-09-30 16:32:48 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-demux.c:
	  matroskademux: Only unmap GstMapInfo in WavPack header extraction error paths if previously mapped
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-197
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3863
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>

2024-10-04 14:04:03 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/avi/gstavisubtitle.c:
	  avisubtitle: Fix size checks and avoid overflows when checking sizes
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-262
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3890
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8043>

2024-10-04 13:51:00 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Check size before reading ds64 chunk
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-261
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3889
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>

2024-10-04 13:27:27 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Fix clipping of size to the file size
	  The size does not include the 8 bytes tag and length, so an additional 8 bytes
	  must be removed here. 8 bytes are always available at this point because
	  otherwise the parsing of the tag and length right above would've failed.
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-260
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3888
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>

2024-10-04 13:22:02 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Check that at least 32 bytes are available before parsing smpl chunks
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-259
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3887
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>

2024-10-04 13:21:44 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Check that at least 4 bytes are available before parsing cue chunks
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>

2024-10-04 13:15:27 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Fix parsing of acid chunk
	  Simply casting the bytes to a struct can lead to crashes because of unaligned
	  reads, and is also missing the endianness swapping that is necessary on big
	  endian architectures.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>

2024-10-04 13:09:43 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Make sure enough data for the tag list tag is available before parsing
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-258
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3886
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>

2024-10-04 13:00:57 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: Check for short reads when parsing headers in pull mode
	  And also return the actual flow return to the caller instead of always returning
	  GST_FLOW_ERROR.
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-258, GHSL-2024-260
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3886
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3888
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>

2024-10-02 14:44:21 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/gdk_pixbuf/gstgdkpixbufdec.c:
	  gdkpixbufdec: Check if initializing the video info actually succeeded
	  Otherwise a 0-byte buffer would be allocated, which gives NULL memory when
	  mapped.
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-118
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3876
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8041>

2024-09-30 16:22:19 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/jpeg/gstjpegdec.c:
	  jpegdec: Directly error out on negotiation failures
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-247
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3862
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8040>

2024-09-26 22:16:06 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Avoid integer overflow when parsing Theora extension
	  Thanks to Antonio Morales for finding and reporting the issue.
	  Fixes GHSL-2024-166
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3851
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8032>

2024-11-29 13:41:54 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst/level/gstlevel.c:
	  level: Fix integer overflow when filling LevelMeta
	  The level in GstAudioLevelMeta is represented as a signed 8bit value from 0 to
	  127 (with 127 meaning silence). When converting from double, make sure to clip
	  the value, this also prevent integer overflow in the conversion. This fixes an
	  issue where a lower then -127db is reported and random level with near silent
	  streams (due to integer overflow).
	  Fixes #4068
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8012>

2024-12-01 11:40:14 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/flv/gstflvmux.c:
	  flvmux: Fix off-by-one in month/day-of-the-week array
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4074
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8017>

2024-11-28 22:26:17 -0500  Olivier Crête <olivier.crete@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2src: Handle framerate not being a range
	  The framerate can be a range or a fraction, one now needs to handle both
	  cases. If it's not a range, then the framerate needs to be exactly the same.
	  Also avoid leaking the GstStructure
	  Fixes a regression introduced by https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7850
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8000>

2024-11-29 12:16:48 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Update version of tcp-timestamp property to 1.24.10
	  It was backported to 1.24.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8005>

2024-11-28 12:56:33 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/shout2/gstshout2.c:
	  shout2send: Unref event at the end of the event function
	  The function takes ownership of it and should get rid of it at the end.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7992>

2024-11-22 19:37:27 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	* gst/rtsp/gstrtspsrc.h:
	  rtspsrc: Use a flow combiner at the source pads instead of custom logic
	  Most importantly, this ensures that UDP streams still continue to run even if
	  they are not linked for a while. With decodebin3 the pads will all be unlinked
	  unless selected, and selecting a stream at a later time would otherwise switch
	  to a stream with a stopped udpsrc.
	  Apart from that this also ensures that actual errors from handling RTP packets
	  between udpsrc and the source pads are not silently ignored but considered
	  errors like they would be for TCP/interleaved.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7946>

2024-11-22 19:36:46 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Don't set pad event/query function twice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7946>

2024-11-27 12:16:37 +0100  Jonas Rebmann <jre@pengutronix.de>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2videodec: fix freeze race condition
	  This fixes a possible deadlock between gst_v4l2_video_dec_change_state
	  and gst_v4l2_video_dec_loop on the buffer pool.
	  When stopping capture, the flushing state of the v4l2 capture buffer
	  pool gets reverted in the processing loop after it was set via
	  gst_v4l2_object_unlock (self->v4l2capture) (in
	  gst_v4l2_video_dec_change_state). As a result, gst_v4l2_video_dec_loop
	  does not return and consequently, gst_pad_stop_task gets stuck waiting
	  for the GST_PAD_STREAM_LOCK. To circumvent this, skip acquiring the
	  buffer pool if stopping capture.
	  Suggested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7958>

2024-11-22 18:59:53 +1100  Matthew Waters <matthew@centricular.com>

	* ext/qt/gstqsgmaterial.cc:
	* ext/qt6/gstqsg6material.cc:
	  qt(6)/material: ensure that we always update the context in setBuffer()
	  Scenario is that there are two (or more) GstGLContext's wrapping Qt's GL
	  context from either multiple qml(6)glsink or qml(6)glsrc elements.  Call flow is this:
	  1. material 1 setBuffer()
	  2. material 1 bind()
	  3. material 2 setBuffer()
	  4. material 2 bind()
	  If the call to setBuffer() reuses the same buffer as previous call, then the
	  qt context is not updated in the material.  If however the previously used qt
	  context by the material had been deactivated or freed, then bind() would fail
	  and could result in a critical like so:
	  gst_gl_context_thread_add: assertion 'context->priv->active_thread == g_thread_self ()' failed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7970>

2024-11-21 15:45:24 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt/meson.build:
	* ext/qt6/meson.build:
	  meson: Use new has_tools kwarg to avoid unnecessary lrelease dependency
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7937>

2024-11-26 10:51:12 +0000  Philippe Normand <philn@igalia.com>

	* ext/meson.build:
	  meson: Check for libsoup only if required
	  LibSoup is needed for the soup and adaptivedemux2 plugins, so there is no need
	  to do the lookup if none of those plugins is enabled.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7964>

2024-11-25 15:47:22 +0100  Tomáš Polomský <1155369-polomsky@users.noreply.gitlab.freedesktop.org>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: Fixed incorrect maximum value for int range
	  There are objects where maximum is not multiplication of the step,
	  e.g. there was a combination where max was 65535 with step 2.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7953>

2024-11-25 14:25:52 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	* gst/multifile/gstsplitmuxpartreader.h:
	  splitmuxsrc: Convert part reader to a bin with a non-async bus
	  A pipeline always has an async bus, which involves allocating an fd pair. As
	  splitmuxsrc only uses the bus' sync handler, this is not required and can easily
	  cause splitmuxsrc to exceed the fd limit for no good reason.
	  The other features of GstPipeline are also not needed here, e.g. clock selection.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7952>

2024-11-21 00:07:31 +0100  Diego Nieto <diego.nieto.m@outlook.com>

	* gst/rtpmanager/rtpsource.c:
	  rtpsource: include config.h header to avoid g_memdup2 link issue
	  Without adding the header a link issue related g_memdup2 might happen.
	  In versions below 2.67.4 that symbol is manually introduced in the
	  meson config files.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7933>

2024-02-01 14:53:57 -0300  Thibault Saunier <tsaunier@igalia.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Handle needing more data when draining segment
	  Some streams in the wild have empty segments at the beginning and
	  hlsdemux2 use to stall forever while we can handle it by processing
	  the following ones. The gap handling mechanism in adaptivedemux2
	  works properly and pushes the required gaps.
	  Update validate medias so the hls stream is present.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6034>

2024-08-29 16:39:14 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* ext/qt6/gstqml6glsrc.cc:
	* ext/qt6/qt6glwindow.cc:
	* ext/qt6/qt6glwindow.h:
	  qmlgl6src: Use downstream pool when available
	  This make use of the pool that has been negotiated with downstream in the
	  decide_allocation function.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7904>

2024-11-19 11:54:12 +0100  Marek Olejnik <molejnik@fluendo.com>

	* docs/gst_plugins_cache.json:
	* gst/debugutils/gstnavigationtest.c:
	  navigationtest: Fix plugin description
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7922>

2024-07-19 19:44:57 +0800  Qian Hu (胡骞) <qian.hu@mediatek.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: pass buffer align info for upstream
	  if downstream v4l2 output has large alignment requirement
	  this patch will pass align info for upstream element
	  and decide allocation will use these info to meet alignment
	  requirement.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7201>

2024-11-13 17:02:33 +1100  Matthew Waters <matthew@centricular.com>

	* gst/rtp/gstrtph264pay.c:
	* gst/rtp/gstrtph265pay.c:
	  rtph26xpay: silence some maybe-unitialized warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875>

2024-11-13 16:56:57 +1100  Matthew Waters <matthew@centricular.com>

	* ext/soup/gstsouphttpsrc.c:
	  souphttpsrc: silence some maybe-uninitialized warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875>

2024-11-13 16:56:22 +1100  Matthew Waters <matthew@centricular.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2videodec: silennce some maybe-uninitialized warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875>

2024-11-15 11:44:17 +0100  Albert Sjolund <alberts@axis.com>

	* gst/rtpmanager/gstrtphdrext-twcc.c:
	  rtpmanager: don't map READWRITE in twcc header ext
	  There is no need to map the buffer as writable, as there is
	  only a read performed on the mapped buffer. This is in line
	  with other header extensions, as no other extensions maps
	  it as readwrite.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7895>

2024-11-15 11:46:14 -0300  Thibault Saunier <tsaunier@igalia.com>

	* meson.build:
	  meson: Bump minimum version to 1.3
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4025
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7899>

2024-11-15 10:29:39 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-mux.c:
	  matroskamux: Simplify timestamp comparison logic in find_best_pad()
	  If a buffer has no timestamp it is immediately muxed so we can directly break
	  the loop and simplify comparisons in the other cases.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7872>

2024-11-12 11:36:38 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-mux.c:
	  matroskamux: Don't time out in live mode if no timestamped next buffer is available
	  The muxer can only advance the time if it has a timestamped buffer that can be
	  output, otherwise it will just busy-wait and use up a lot of CPU.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7872>

2024-10-28 14:21:40 +0000  Philippe Normand <philn@igalia.com>

	* gst/matroska/matroska-mux.c:
	  matroskamux: Delay stream-header until all sink pads have caps
	  If we don't wait, an incomplete header might be generated due to a race between
	  the _aggregate thread and the sink pad setcaps.
	  Fixes #3929
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7872>

2024-11-06 13:51:46 +0000  Marianna Smidth Buschle <msb@qtec.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: Fixed framerate negotiation
	  We had a problem with negotiation of the framerate.
	  Gstreamer was querying the FRAMEINTERVALS based on the max frame size
	  instead of the desired frame size.
	  This was resulting in non-negotiated errors when trying to run with a
	  smaller frame size and fps higher than the max for the max image size.
	  Fx the max framerate for 1024x1024 RGB on CMOSIS4000 is 28.292
	  While for 1024x100 RGB it is 280.867
	  But Gstreamer would allow any framerates bigger than 28.292 no matter
	  the frame size used...
	  I have fixed it by 1st changing the CAPS query to use the minimum frame
	  size instead of maximum.
	  This however has the downside of allowing gstreamer to negotiate
	  framerates that are too high if the image size is bigger than the
	  minimum.
	  This is not a huge problem since our driver just CLAMPS the fps value to
	  the max then.
	  However gstreamer was not being properly notified of this change, and
	  would therefore report a wrong fps in the CAPS structure.
	  Note that the fps would be correct inside the buffer info.
	  Since gstreamer was reading the fps back after setting it.
	  It was just not being "propagated" to the CAPS structure.
	  I have also added a WARNING to this point so we can see if the fps that
	  gstreamer tries to apply was accepted or not.
	  And the next part of the fix was to add a framerate check after the
	  frame size has been established.
	  I did this inside the fixate_caps function of the v4l2src, which was
	  calling the TRY_FMT in order to check if the format was correct.
	  So I just added a check for the ENUM_FRAMEINTERVALS in there.
	  And now we get the non-negotiated again if the fps is too high for the
	  selected frame size.
	  Also added a couple of warnings so it is easy to see that this was the
	  cause.
	  See:
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3037
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7850>

2020-09-21 16:48:38 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* gst/flv/gstflvmux.c:
	  flvmux: Mux timestampless buffers immediately
	  Instead of leaving them queued indefinitely, or until we're timing out
	  and it's the only buffer queued.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7871>

2024-11-12 11:25:38 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/flv/gstflvmux.c:
	  flvmux: Don't time out in live mode if no timestamped next buffer is available
	  But also don't wait for a buffer on both pads, which might take forever in case
	  of gaps in one of the streams.
	  The muxer can only advance the time if it has a timestamped buffer that can be
	  output, otherwise it will just busy-wait and use up a lot of CPU.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7871>

2024-11-13 15:49:57 +0100  Robert Rosengren <robertr@axis.com>

	* gst/udp/gstudpsrc.c:
	  udpsrc: protect cancellable from unlock/unlock_stop race
	  Protect cancellable from simultaneous unlock and unlock_stop calls from
	  basesrc class.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7885>

2024-11-11 16:43:29 +0800  Dean Zhang (张安迪) <dean.zhang@mediatek.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Add support for m1v fourcc when subtype is vide
	  Some special videos with mlv fourcc can't be recognized by
	  qtdemux when the subtype of the video is vide instead of
	  m1v, and will cause negotiation error in subsequent plugin.
	  So make the handle in qtdemux_video_caps. It might be better
	  than nothing.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7855>

2024-11-04 10:49:25 +0100  Stefan Riedmüller <s.riedmueller@phytec.de>

	* docs/gst_plugins_cache.json:
	* sys/v4l2/gstv4l2object.c:
	  v4l2object: Remove little endian marker on 8 bit bayer format names
	  There is no point in having an endian marker on 8 bit bayer format names since
	  it is just one byte. Thus remove it.
	  This also fixes an incompatibility with plugins bad where there is no endian
	  marker on 8 bit bayer format names as well.
	  Fixes: #3729
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7826>

2024-05-29 06:33:50 +0200  Jonas K Danielsson <jonas.danielsson@spiideo.com>

	* gst/udp/gstudpsrc.c:
	  udpsrc: Disable allocated port reuse for unicast
	  The `reuse` property end up setting the SO_REUSEADDR socket option for
	  the UDP socket. This setting have surprising effects.
	  On Linux systems the man page (`socket(7)`) states:
	  ```
	  SO_REUSEADDR
	  Indicates that the rules used in validating addresses supplied
	  in a bind(2) call should allow reuse of local addresses. For
	  AF_INET sockets this means that a socket may bind, except when
	  there is an active listening socket bound to the address.
	  ```
	  But since UDP does not listen this ends up meaning that when an
	  ephemeral port is allocated (setting the `port` to `0`) the kernel is
	  free to reuse any other UDP port that has `SO_REUSEADDR` set.
	  Tests checking the likelyhood of port conflict when using multiple
	  `udpsrc` shows port conflicts starting to occur after ~100-300 udpsrc
	  with port allocation enabled. See issue #3411 for more details.
	  Changing the default value of a property is not a small thing we risk
	  breaking application that rely on the current default value. But since
	  the effects of having `reuse` default `TRUE` on can also have damaging
	  and hard-to-debug consequences, it might be worth to consider.
	  Having `SO_REUSEADDR` enabled for multicast, might have some use cases
	  but for unicast, with dynamic port allocation, it does not make sense.
	  When not using an multicast address we will disable port reuse if the
	  `port` property is set to 0 (=allocate) and warn the user that we did
	  so.
	  Closes #3411
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7841>

2024-11-05 11:49:32 +0000  Philippe Normand <philn@igalia.com>

	* gst/rtpmanager/gstrtpfunnel.c:
	* tests/check/elements/rtpfunnel.c:
	  rtpfunnel: Ensure segment events are forwarded after flushs
	  gst_rtp_funnel_forward_segment() returns early when the current_pad is set.
	  Without clearing current_pad a critical warning would be emitted when
	  attempting to chain a buffer following a flush.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7830>

2024-10-24 18:25:36 -0300  L. E. Segovia <amy@centricular.com>

	* ext/mpg123/gstmpg123audiodec.c:
	* ext/mpg123/gstmpg123audiodec.h:
	  mpg123audiodec: Fix dependence on off_t breaking Meson wrap-based builds
	  Using the mpg123_*_64 functions requires API level 48 i.e. mpg123 >= 1.32.
	  The mpg123_*64 functions are available before then, but still depend on
	  off_t (and as such introduce the bug in builds against distro provided
	  mpg123).
	  See https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1568#note_2624024
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7732>

2024-11-03 17:30:40 +0000  Tim-Philipp Müller <tim@centricular.com>

	* docs/meson.build:
	  meson: bail out earlier in docs subdir if docs are disabled
	  The gst_dep.get_variable('libexecdir') may fail in some scenarios
	  (e.g. building a module alone inside an uninstalled devenv) and
	  it shouldn't really be reached in the first place if docs are
	  disabled via options.
	  Also to avoid confusing meson messages when cross-compiling or
	  doing a static build.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7818>

2024-11-03 17:36:46 +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/7819>

2024-10-31 17:46:40 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtp/gstrtph264depay.c:
	* gst/rtp/gstrtph265depay.c:
	  rtph264depay, rtph265depay: various parameter-set string handling fixes
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7804>

2024-06-13 09:59:24 +0200  Andreas Wittmann <andreas.wittmann@zeiss.com>

	* docs/gst_plugins_cache.json:
	* ext/qt/gstqtoverlay.cc:
	* ext/qt/gstqtoverlay.h:
	* ext/qt/qtglrenderer.cc:
	* ext/qt/qtglrenderer.h:
	  qmlgloverlay: make depth buffer optional
	  allow dropping depth/stencil buffer for
	  qmlgloverlay element. Shows considerable
	  drop in memory bandwidth consumption of
	  the element on windows platforms.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7677>

2024-10-29 17:39:02 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/flv/gstflvmux.c:
	  flvmux: Consider timestamps before segment start to map to segment start
	  Instead of mapping them to running time 0, which is wrong if e.g. the segment
	  base is not equal to 0.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7780>

2024-10-29 15:30:59 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/flv/gstflvmux.c:
	  flvmux: Use first running time on the initial header instead of 0
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7780>

2024-10-29 16:43:33 +0000  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtppassthroughpay.c:
	  rtppassthrough: fix rtp-stats message compatibility with GstRTPBasePayload
	  "clock-rate" and "pt" are G_TYPE_UINT in the base class, so let's
	  keep them like that here too, since the entire purposes of the
	  passthrough element is to fake being a payloader. The types in the
	  message don't have to be consistent with the types in the caps.
	  Reverts part of commit a6fa53b7 of !7526
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7552#note_2576653
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7783>

2024-08-08 12:28:11 +0000  Johan Sternerup <johast@axis.com>

	* gst/rtpmanager/rtptwcc.c:
	* tests/check/elements/rtpsession.c:
	  twcc: Handle wrapping of reference time
	  Previously the wrapping of the 24-bit reference time was not handled
	  correctly when transforming it into GstClockTime. Given the unit of 64ms
	  the span that could be represented by 24 bits is 12 days and depending
	  on the start value we could get a wrapping problem anytime within this
	  time frame. This turned out to be particularly problematic for the GCC
	  algorithm in gst-plugins-rs which tried to evict old packages based on
	  the "oldest" timestamp, which due to wrapping problems could be in the
	  future. Thus, the container managing the packets could grow without
	  limits for a long time thereby creating both CPU and memory problems.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7527>

2024-10-25 12:02:54 +0200  Ognyan Tonchev <ognyan@axis.com>

	* gst/rtpmanager/rtpsession.c:
	* gst/rtpmanager/rtpsource.c:
	  rtpmanager: skip RTPSources which are not ready in the RTCP generation
	  If a stream has an 'irregular' frame rate (e.g. metadata) RTCP SR
	  may be generated way too early, before the RTPSource has received
	  the first packet after Latency was configured in the pipeline.
	  We skip such RTPSources in the RTCP generation.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7740>

2024-10-22 12:50:36 -0600  Guillermo E. Martinez <guillermo.martinez.quezada@continental.com>

	* gst/udp/gstudpsrc.c:
	  udp: Update documentation for `timeout' property
	  This patch is meant to update the time units description of `timeout' property
	  for the `udpsrc` element from milliseconds to nanoseconds according to the
	  implementation.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7748>

2024-06-28 14:24:54 +0200  Edward Hervey <edward@centricular.com>

	* docs/gst_plugins_cache.json:
	  plugins_cache: Update for fedora 40 build
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7455>

2024-10-21 11:50:23 +0200  Carlos Falgueras García <cfalgueras@fluendo.com>

	* docs/gst_plugins_cache.json:
	  video: Add GRAY10_LE16 support
	  This adds a 10-bit variant of grayscale packed into 16 bits little-endian
	  words. The MSB 6 bits are padding and should be ignored. This format is
	  used by Fraunhofer VVC encoder and decoder libraries.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7706>

2024-10-23 20:50:31 +0200  François Laignel <francois@centricular.com>

	  rtspsrc: client-managed MIKEY KeyMgmt
	  Some servers (e.g. Axis cameras) expect the client to propose the encryption
	  key(s) to be used for SRTP / SRTCP. This is required to allow re-keying so
	  as to evade cryptanalysis. Note that the behaviour is not specified by the
	  RFCs. By setting the 'client-managed-mikey-mode' property to 'true', rtspsrc
	  acts as follows:
	  * For a secured profile (RTP/SAVP or RTP/SAVPF), any media in the SDP
	  returned by the server for which a MIKEY key management applies is
	  elligible for client managed mode. The MIKEY from the server is then
	  ignored.
	  * rtspsrc sends a SETUP with a MIKEY payload proposed by the user. The
	  payload is formed by calling the 'request-rtp-key' signal for each
	  elligible stream. During initialisation, 'request-rtcp-key' is also
	  called as usual. The keys returned by both signals should be the same
	  for a single stream, but the mechanism allows a different approach.
	  * The user can start re-keying of a stream by calling SET_PARAMETER.
	  The convenience signal 'set-mikey-parameter' can be used to build a
	  'KeyMgmt' parameter with a MIKEY payload.
	  * After the server accepts the new parameter, the user can call
	  'remove-key' and prepare for the new key(s) to be served by signals
	  'request-rtp-key' & 'request-rtcp-key'.
	  * The signals 'soft-limit' & 'hard-limit' are called when a key
	  reaches the limits of its utilisation.
	  This commit adds support for:
	  * client-managed MIKEY mode to srtpsrc.
	  * Master Key Index (MKI) parsing and encoding to GstMIKEYMessage.
	  * re-keying using the signals 'set-mikey-parameter' & 'remove-key' and
	  then by serving the new key via 'request-rtp-key' & 'request-rtcp-key'.
	  * 'soft-limit' & 'hard-limit' signals, similar to those provided by srtpdec.
	  See also:
	  * https://www.rfc-editor.org/rfc/rfc3830
	  * https://www.rfc-editor.org/rfc/rfc4567
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7587>

2024-10-10 02:07:38 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/adaptivedemux2/meson.build:
	* ext/meson.build:
	* ext/soup/gstsouploader.c:
	* ext/soup/meson.build:
	  soup: Re-enable libsoup dlopen on macOS
	  Move from GModule to libdl for loading libraries on all platforms.
	  This is necessary due to a macOS bug where dyld uses the incorrect
	  @loader_path value for RPATH entries, and fails to find libsoup.
	  More details here: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1171#note_2290789
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3792
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7635>

2024-09-24 18:23:45 +0200  Marek Vasut <marex@denx.de>

	* docs/gst_plugins_cache.json:
	* ext/qt/gstqsgmaterial.cc:
	* ext/qt/gstqtsink.cc:
	  qt: Added support for RGB16/BGR16 input format to qmlglsink
	  This allows input format to be 16-bit RGB565/BGR565, which is
	  generated by various V4L2 devices. This format can be useful
	  on hardware which is constrained by memory bandwidth.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7567>

2024-10-14 12:35:33 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/imagefreeze/gstimagefreeze.c:
	  imagefreeze: Add support for JPEG / PNG
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7660>

2024-10-03 12:48:31 +0200  Andoni Morales Alastruey <ylatuya@gmail.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: fix parsing of matrix with 180 rotation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7607>

2024-10-04 05:55:54 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/lame/meson.build:
	  lame: Disable tools when using the fallback subproject
	  This saves time when building, since we don't use the tools.
	  Particularly on macOS, due to a macOS bug, Meson picks up an invalid
	  ncurses-config binary and incorrectly detects the presence of ncurses,
	  causing a build failure. This is fixed in the latest meson:
	  https://github.com/mesonbuild/meson/pull/13715
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7611>

2024-09-03 11:30:18 +1000  Jan Schmidt <jan@centricular.com>

	* gst/rtpmanager/rtpsession.c:
	  rtpsession: Fix a typo in docstring comment
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7424>

2024-08-29 20:39:51 +1000  Jan Schmidt <jan@centricular.com>

	* gst/rtpmanager/rtpsession.c:
	* gst/rtpmanager/rtpsource.c:
	* gst/rtpmanager/rtpsource.h:
	* tests/check/elements/rtpsession.c:
	  rtpmanager: save the report block statistics in each RTPSource
	  Move RB info from receiver reports into the internal source that the RR
	  are about, and deprecate (but retain) the old mapping where each
	  external source has only a single RB entry in the rtp statistics.
	  The old method is broken if a remote peer uses a single ssrc to send
	  receiver reports for more than one of our internal sources, other
	  as multiple RB in a single packet, or alternate RB in different reports.
	  In each case only the most recent entry was kept, overwriting data for
	  other internal sources.
	  In multicast scenarios each internal source may receive multiple
	  receiver reports from different peers. To support that, all received
	  RR's are now stored into a hash table indexed by the sender's SSRC,
	  and all RRs are placed into an array when generating statistics, so
	  that the information from all peers is retrievable.
	  The current deficient behaviour (adding RB info into non-internal RTPSources) is
	  deprecated but kept in order to be backward compatible, and retained
	  that way in the generated statistics structure.
	  Refs
	  [1] https://tools.ietf.org/html/rfc3550#section-6.4.1
	  Based on a patch by Fede Claramonte <fclaramonte@twilio.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7424>

2024-05-12 18:59:24 -0400  valadaptive <valadaptive@protonmail.com>

	* gst/isomp4/fourcc.h:
	* gst/isomp4/qtdemux.c:
	  qtdemux: Add support for Lagarith fourcc tag
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6831>

2024-09-13 10:55:03 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-mux.c:
	* gst/matroska/matroska-mux.h:
	  matroskamux: Add support for latency timeouts in live pipelines
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7510>

2024-09-13 10:13:11 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/matroska/ebml-write.c:
	* gst/matroska/ebml-write.h:
	* gst/matroska/matroska-mux.c:
	* gst/matroska/matroska-mux.h:
	* gst/matroska/webm-mux.c:
	* tests/check/elements/matroskamux.c:
	  matroskamux: Port to GstAggregator
	  Co-authored-by: Tim-Philipp Müller <tim@centricular.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7510>

2024-09-26 09:15:34 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Check fourcc of a second CEA608 atom instead of assuming it's cdt2
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7575>

2024-09-03 12:16:19 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/qt6/gstqml6glmixer.cc:
	* ext/qt6/qt6glwindow.cc:
	* gst/deinterlace/gstdeinterlace.c:
	* sys/v4l2/gstv4l2object.c:
	* tests/check/elements/videocrop.c:
	  common: Use more efficient versions of GstCapsFeatures API where possible
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432>

2024-08-29 20:09:52 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/pulse/pulseutil.c:
	* ext/soup/gstsouphttpsrc.c:
	* gst/debugutils/gstcapssetter.c:
	* gst/isomp4/gstqtmux.c:
	* gst/matroska/matroska-mux.c:
	* gst/multifile/gstsplitmuxsink.c:
	* gst/rtpmanager/gstrtpptdemux.c:
	* gst/rtpmanager/gstrtprtxreceive.c:
	* gst/rtpmanager/gstrtprtxsend.c:
	* gst/rtpmanager/rtpsource.c:
	* gst/rtsp/gstrtspsrc.c:
	* sys/v4l2/gstv4l2src.c:
	* sys/v4l2/v4l2_calls.c:
	* tests/examples/rtsp/test-onvif.c:
	  common: Stop using GQuark-based GstStructure field name API
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432>

2024-08-09 10:41:57 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemuxutils.c:
	  common: Stop using GQuark-based GstStructure name API
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432>

2024-09-24 09:50:34 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Skip zero-sized boxes instead of stopping to look at further boxes
	  A zero-sized box is not really a problem and can be skipped to look at any
	  possibly following ones.
	  BMD ATEM devices specifically write a zero-sized bmdc box in the sample
	  description, followed by the avcC box in case of h264. Previously the avcC box
	  would simply not be read at all and the file would be unplayable.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7564>

2024-09-23 16:48:26 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* docs/gst_plugins_cache.json:
	  doc: good: Update documentation cache
	  video4linux2 plugin now maps RGB15 which his didn't before.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>

2024-09-18 13:14:32 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: Fix a gvalue leak on error
	  In case we failed enumerating the supported interlacing mode, we leaked the
	  gvalue.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>

2024-09-17 14:27:46 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2: dec/enc: Flag leaked caps
	  We never free class held template caps, so flag the one that wasn't already
	  flagged.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>

2024-08-15 16:54:25 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: object: Fix condition check to emit error
	  The check was reversed, so we could only emit a pipeline error
	  if there was no element associated with the object.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>

2024-09-17 13:28:45 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: Always tell capture queue that we want to set the CSC
	  Not all drivers supports it, but in general we want to try and match the
	  negotiated caps, so lets always try to set the CSC.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>

2024-08-15 16:01:03 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: object: Fix support for format:Interlaced in caps probe
	  This notably follow the way we order the template and keeps the
	  format:Interlaced caps at the end. This change also fixes
	  an early skip check, that would skip if a driver only supports
	  alternate interlacing for a specific format. It also fixes
	  a bug where only the last resolution of a discrete frame size
	  was allowed to use format:Interlaced. Finally, similar to template
	  caps code, simplify the caps for earch featurs, making the debug output
	  manageable and (marginally) improve negotiation speed.
	  This change will make it easier to introduce memory:DMABuf.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>

2024-08-15 13:07:31 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2.c:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2: Move M2M template caps probe into v4l2object
	  This allow reusing the code that produces output and capture devices
	  templates. This fixes the lack of Interlaced caps feature for M2M
	  devices such as decoder, encoder or converters.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>

2024-08-14 15:26:58 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: object: Remove over indentation
	  This is a style fix, no functional changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>

2024-08-14 15:21:44 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: object: Map GST/V4L2 formats in a C array
	  This makes it easier to add new format in the future without
	  forgetting to update one of the numerous switch case. This
	  will also help mapping DRM formats.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>

2024-08-14 10:13:44 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2object: Expose convertion from v4l2 fourcc to GstVideoFormat
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>

2024-08-14 09:52:54 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: Change dimensions format desc field to flag
	  The boolean naming wasn't obvious, and having this as a flag makes
	  the structure a little more compact.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>

2024-08-13 15:07:07 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* ext/qt6/qt6glwindow.cc:
	* ext/qt6/qt6glwindow.h:
	  qml6glsrc: Reduce capture delay
	  In qml6glsrc, we capture the application by copying the back buffer into
	  our own FBO. The afterRendering() signal is too soon as from the apitrace, the
	  application has been rendered into a QT internal buffer, to be used as a cache
	  for refresh.
	  Use afterFrameEnd() signal instead. This works with no delay on GLES. With GL
	  it seems to reduce from 2 to 1 frame delay (this may be platform specific). A
	  different recording technique would need to be used to completely remove this
	  delay.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7351>

2024-09-18 12:34:39 +0200  Piotr Brzeziński <piotr@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtppassthroughpay.c:
	* gst/rtp/gstrtppassthroughpay.h:
	  rtppassthroughpay: Fix reading clock-rate and payload type from caps
	  They were using wrong types - while uint is correct technically, for compatibility reasons caps have them as signed int.
	  Values are now correctly read + added simple guards just to be sure.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7526>

2024-09-16 12:27:05 +0200  Piotr Brzeziński <piotr@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtppassthroughpay.c:
	* gst/rtp/gstrtppassthroughpay.h:
	  rtppassthroughpay: Add ability to regenerate RTP timestamps
	  Timestamps are untouched by default, but the new mode can now be enabled to replace RTP timestamps
	  with ones generated from the buffer PTS. Making it an enum in case different modes are needed in the future.
	  That allows for a rtpjitterbuffer to do proper drift compensation, so that the stream coming out of gst-rtsp-server
	  is not drifting compared to the pipeline clock and also not compared to the RTCP NTP times.
	  Most of the code is borrowed from rtpbasepayload, as it's exactly its behaviour which I wanted to bring here.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7526>

2024-09-18 16:16:08 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/flv/gstflvmux.c:
	  flvmux: Use gst_aggregator_update_segment() instead of randomly pushing a segment event
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7542>

2024-02-19 21:49:21 +0800  Tim Blechmann <tim@klingt.org>

	* sys/v4l2/v4l2_calls.c:
	  v4l2: silence valgrind warning
	  Valgrind complains about uninitialized memory used in an ioctl
	  Syscall param ioctl(VKI_V4L2_G_TUNER).reserved points to uninitialised byte(s)
	  at 0x719294F: ioctl (ioctl.c:36)
	  by 0x3126A817: gst_v4l2_fill_lists (v4l2_calls.c:185)
	  by 0x3126A817: gst_v4l2_open (v4l2_calls.c:589)
	  by 0x3123F1C2: gst_v4l2_device_provider_probe_device (gstv4l2deviceprovider.c:122)
	  by 0x3123F648: gst_v4l2_device_provider_device_from_udev (gstv4l2deviceprovider.c:301)
	  by 0x3123F998: provider_thread (gstv4l2deviceprovider.c:395)
	  by 0x796FA50: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.4)
	  by 0x710CAC2: start_thread (pthread_create.c:442)
	  by 0x719DA03: clone (clone.S:100)
	  Address 0x44008a34 is on thread 11's stack
	  in frame #1, created by gst_v4l2_open (v4l2_calls.c:524)
	  Uninitialised value was created by a stack allocation
	  at 0x3126A024: gst_v4l2_open (v4l2_calls.c:524)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6144>

2024-02-12 13:52:06 +0800  Tim Blechmann <tim@klingt.org>

	* sys/v4l2/gstv4l2deviceprovider.c:
	  v4l: fix thread name
	  Linux thread names are limited to 15 chars. providing long thread names
	  causes the thread name not to be applied at all
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6094>

2024-09-12 16:44:23 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: demote per frame message to LOG
	  The "Handling frame" message with the frame number is printed on every buffer.
	  Therefore, it should have log level LOG instead of DEBUG.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7543>

2024-09-12 16:31:50 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	* sys/v4l2/gstv4l2videoenc.h:
	  v4l2videoenc: remove unnecessary processing variable and dead code
	  "processing" is only set to FALSE and never set to TRUE. Therefore, the code
	  that depends on processing to be TRUE is never executed.
	  Remove the dead code.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7543>

2024-08-13 16:38:37 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2: encoder: Add dynamic framerate support
	  This is not trully supported in V4L2, but we can emulate this similar to
	  what other elements do. In this patch we ensure that 0/1 is supported by
	  encoders (caps query),and uses a default of 30fps whenever we need to
	  set a framerate into the driver.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7352>

2024-09-11 13:23:35 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-mux.c:
	  matroskamux: Include end padding in the block duration for Opus streams
	  It has to be included in the block duration but in GStreamer we're not
	  including it in the buffer duration, so it has to be added again here.
	  Not including it in the block duration can lead to fatal errors when playing
	  back with Firefox if there are more padding samples than actual samples, e.g.
	  > D/MediaDemuxer WebMDemuxer[7f6a0808b900] ::GetNextPacket: Padding frames larger
	  > than packet size, flagging the packet for error (padding: {13500000,1000000000},
	  > duration: {6000,1000000}, already processed: false)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7502>

2024-09-05 22:07:24 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	* gst/deinterlace/gstdeinterlace.c:
	* gst/monoscope/gstmonoscope.c:
	* gst/shapewipe/gstshapewipe.c:
	* gst/videomixer/videomixer2.c:
	  video: Don't overshoot QoS earliest time by a factor of 2
	  By setting the earliest time to timestamp + 2 * diff there would be a difference
	  of 1 * diff between the current clock time and the earliest time the element
	  would let through in the future. If e.g. a frame is arriving 30s late at the
	  sink, then not just all frames up to that point would be dropped but also 30s of
	  frames after the current clock time.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7459>

2024-09-11 08:28:39 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	  splitmuxsink: Override LATENCY query to pretend to downstream that we're not live
	  splitmuxsink can't possibly know how much latency it will introduce as it always
	  keeps one GOP around before outputting something. This breaks the latency
	  configuration of the pipeline and we're better off just pretending that
	  everything downstream of the sinkpads is not live.
	  Especially muxers that are based on aggregator and time out on the latency
	  deadline can easily misbehave otherwise as the deadline will be exceeded usually.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7499>

2024-09-09 13:49:58 +0200  Wim Taymans <wtaymans@redhat.com>

	* ext/jack/gstjackaudiosrc.c:
	  jackaudiosrc: actually use the queried ports from JACK
	  When no ports are given, gst_jack_get_ports() is called to get all the
	  (physical) output ports but then the result is ignored, triggering the
	  "No physical output ports found..." error.
	  Instead, move the queried ports to the variable we're going to use
	  later.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7474>

2024-09-09 11:23:53 -0400  Randy Li (ayaka) <ayaka@soulik.info>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2bufferpool: actually queue back the empty buffer flagged LAST
	  The buffer would fail at gst_v4l2_is_buffer_valid() before,
	  since it has a reference on it, it is not writable.
	  Fixes: 105d232fdec1 ("v4l2bufferpool: queue back the buffer flagged LAST but empty")
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7479>

2024-09-02 17:45:30 +0900  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: unref buffer pool after usage properly
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7435>

2024-08-29 12:10:23 -0400  Thibault Saunier <tsaunier@igalia.com>

	* sys/osxaudio/gstosxaudiosink.c:
	* sys/osxaudio/gstosxaudiosrc.c:
	  osxaudio: Avoid dangling pointer on shutdown
	  When tearing down the elements we were still referring to the ringbuffer unique_id
	  as our property while it was already freed, leading to potential segfaults when
	  accessing the property.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7426>

2024-08-23 20:01:32 +1000  Matthew Waters <matthew@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpfunnel.c:
	* tests/check/elements/rtpfunnel.c:
	  rtpfunnel: also fallback to pad default handling for unknown ssrcs
	  If two (or more) rtpfunnel elements are cascaded, then only one will
	  realistically have information on the particular ssrc that is in use for a
	  particular input stream.  As such, any key unit requests may never reach the
	  corresponding encoder.
	  This has been discovered by combining simulcast and BUNDLE with webrtcbin.
	  simulcast uses one rtpfunnel, and BUNDLE uses another rtpfunnel.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7405>

2024-08-20 01:53:37 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst-libs/gst/glib-compat-private.h:
	* gst/interleave/interleave.c:
	* gst/interleave/meson.build:
	  gst-plugins-good: use g_sort_array() instead of deprecated g_qsort_with_data()
	  Fixes compiler warnings with the latest GLib versions.
	  See https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4127
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7384>

2024-07-26 11:12:25 +1000  Matthew Waters <matthew@centricular.com>

	* tests/examples/qt/qmloverlay/overlay.py:
	  tests/examples/qmlglveray.py: fix formatting for commit lint
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7244>

2024-07-26 11:12:03 +1000  Matthew Waters <matthew@centricular.com>

	* tests/examples/qt/qmloverlay/overlay.py:
	  tests/examples/qmloverlay.py: add license and copyright headers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7244>

2024-07-26 11:10:20 +1000  Matthew Waters <matthew@centricular.com>

	* tests/examples/qt/qmlsink-multisink/main.cpp:
	* tests/examples/qt/qmlsink-multisink/main.qml:
	* tests/examples/qt/qmlsink-multisink/videoitem/VideoItem.qml:
	* tests/examples/qt/qmlsink-multisink/videoitem/videoitem.cpp:
	* tests/examples/qt/qmlsink-multisink/videoitem/videoitem.h:
	  tests/examples/qml-multisink: add license and copyright headers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7244>

2024-07-26 11:06:30 +1000  Matthew Waters <matthew@centricular.com>

	* tests/examples/qt/qmlsrc/main.cpp:
	* tests/examples/qt/qmlsrc/main.qml:
	  tests/examples/qmlglsrc: add copytright and licenses headers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7244>

2024-07-26 11:09:44 +1000  Matthew Waters <matthew@centricular.com>

	* tests/examples/qt/qmloverlay/main.cpp:
	* tests/examples/qt/qmloverlay/main.qml:
	* tests/examples/qt/qmloverlay/overlay.qml:
	* tests/examples/qt/qmloverlay/overlay2.qml:
	* tests/examples/qt/qmlsink-dynamically-added/main.cpp:
	* tests/examples/qt/qmlsink-dynamically-added/main.qml:
	* tests/examples/qt/qmlsink/main.cpp:
	* tests/examples/qt/qmlsink/main.qml:
	  tests/examples/qmlglsink/overlay: add copyright and licenses headers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7244>

2024-07-26 10:54:28 +1000  Matthew Waters <matthew@centricular.com>

	* tests/examples/qt6/qmlmixer/main.cpp:
	* tests/examples/qt6/qmlmixer/main.qml:
	* tests/examples/qt6/qmloverlay/main.cpp:
	* tests/examples/qt6/qmloverlay/main.qml:
	* tests/examples/qt6/qmlsink/main.cpp:
	* tests/examples/qt6/qmlsink/main.qml:
	* tests/examples/qt6/qmlsrc/main.cpp:
	* tests/examples/qt6/qmlsrc/main.qml:
	  tests/examples/qml6: Add license and copyright information
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7244>

2024-08-14 13:50:37 +0200  Edward Hervey <edward@centricular.com>

	* ext/qt6/gstqsg6material.h:
	  qt6: Remove unused field
	  ```
	  In file included from ../subprojects/gst-plugins-good/ext/qt6/gstqsg6material.cc:31:
	  ../subprojects/gst-plugins-good/ext/qt6/gstqsg6material.h:69:17: error: private
	  field 'mem_' is not used [-Werror,-Wunused-private-field]
	  69 |     GstMemory * mem_;
	  |                 ^
	  ```
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7414>

2024-07-26 08:18:21 +0200  Edward Hervey <edward@centricular.com>

	* ext/qt6/gstqsg6material.cc:
	* ext/qt6/gstqsg6material.h:
	* ext/qt6/gstqt6glutility.cc:
	* ext/qt6/gstqt6glutility.h:
	* ext/qt6/qt6glitem.cc:
	* ext/qt6/qt6glrenderer.cc:
	* ext/qt6/qt6glrenderer.h:
	  qt6: Rename symbols to avoid conflict in static builds
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7414>

2024-08-19 21:05:43 +1000  Jan Schmidt <jan@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/qt/gstqsgmaterial.cc:
	* ext/qt/gstqsgmaterial.h:
	* ext/qt/gstqtsink.cc:
	* ext/qt/qtitem.cc:
	  qmlglsink: Add support for external-oes textures
	  Support was added to qml6glsink in MR !7319
	  Backport similar support to the Qt5 element so it
	  can also support direct DMABuf import from hardware
	  decoders.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7393>

2024-07-22 19:28:13 +0800  Qian Hu (胡骞) <qian.hu@mediatek.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: handle unsupported hlg colorimetry gracefully
	  This patch addresses the issue where GStreamer would throw an error when
	  attempting to use bt2100-hlg colorimetry with V4L2, which is not
	  supported by the current V4L2 kernel. When bt2100-hlg colorimetry is set
	  from caps, the check for transfer (GST_VIDEO_TRANSFER_ARIB_STD_B67) is
	  bypassed.
	  The main improvement is to avoid checking the transfer value in
	  gst_v4l2_video_colorimetry_matches when it is
	  GST_VIDEO_TRANSFER_ARIB_STD_B67. This is because the transfer value in
	  the cinfo parameter comes from gst_v4l2_object_get_colorspace, which
	  converts the transfer to another value, causing a mismatch.
	  Since the kernel does not support GST_VIDEO_TRANSFER_ARIB_STD_B67,
	  gst_v4l2_object_get_colorspace cannot map it correctly from V4L2 to
	  GStreamer. Therefore, we ignore this check to prevent errors.
	  changes:
	  - Added a condition in gst_v4l2_video_colorimetry_matches to bypass the
	  transfer check when the transfer is GST_VIDEO_TRANSFER_ARIB_STD_B67.
	  - Ensured that the pipeline does not throw errors due to unsupported
	  bt2100-hlg colorimetry in V4L2.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7212>

2024-08-15 19:00:53 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	  splitmuxsink: Update tracked running time before first fragment-opened
	  Before sending the first fragment-opened message on the bus, update
	  the output_fragment_info structure so that the sent message correctly
	  reports the initial running time.
	  Fixes #3725
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7361>

2024-08-07 15:56:08 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* ext/qt6/qt6glwindow.cc:
	  qt6glwindow: Fallback to GL_RGB on CopyTexImage2D error
	  With GLES 2.0 we are forced to use CopyTextImage2D which requires
	  passing an internal format. With QT6 eglfs, we need to pass GL_RGB
	  instead, probably because of how the texture has been created. As its
	  hard to guess, simply fallback to GL_RGB on failure. This fixes usage
	  or qml6glsrc with eglfs backend, without loosing support for
	  semi-transparent window on other platforms.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7321>

2024-08-01 11:21:09 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* ext/qt6/qt6glwindow.cc:
	  qmlgl6src: Fix crash when use-default-fbo is false
	  When that property is set to its default qmlgl6src element simply crash
	  as it will call gst_video_frame_unmap() twice.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7290>

2024-07-03 16:03:47 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtsp/gstrtspsrc.c:
	* gst/rtsp/gstrtspsrc.h:
	  rtspsrc: expose property for forcing usage of non-compliant URLs
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7133>

2024-08-12 22:34:17 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/osxaudio/meson.build:
	  meson: Use required: kwarg in osxaudio to fix FIXME
	  This wasn't used because this feature didn't exist years ago when this
	  build file was written.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7340>

2024-08-12 22:33:42 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/osxaudio/gstosxcoreaudio.c:
	* sys/osxaudio/gstosxcoreaudiocommon.c:
	* sys/osxaudio/gstosxcoreaudiocommon.h:
	  osxaudio: Fix build on iOS
	  These device-provider functions are only valid on macOS.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7340>

2024-08-12 22:23:29 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/osxaudio/gstosxaudiodeviceprovider.c:
	  osxaudio: Remove unused function
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7340>

2024-07-31 00:09:21 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/osxaudio/gstosxaudiodeviceprovider.c:
	* sys/osxaudio/gstosxaudioringbuffer.c:
	* sys/osxaudio/gstosxaudiosink.c:
	* sys/osxaudio/gstosxaudiosink.h:
	* sys/osxaudio/gstosxaudiosrc.c:
	* sys/osxaudio/gstosxaudiosrc.h:
	* sys/osxaudio/gstosxcoreaudio.c:
	* sys/osxaudio/gstosxcoreaudio.h:
	* sys/osxaudio/gstosxcoreaudiocommon.c:
	* sys/osxaudio/gstosxcoreaudiocommon.h:
	  osxaudio: Implement unique-id property on elements
	  The actual value is stored on GstCoreAudio now, which involved a lot
	  of moving code around due to the strange layering in the plugin.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5274>

2023-09-04 02:43:19 +1000  Jan Schmidt <jan@centricular.com>

	* sys/osxaudio/gstosxaudiodeviceprovider.c:
	* sys/osxaudio/gstosxcoreaudio.h:
	* sys/osxaudio/gstosxcoreaudiohal.c:
	* sys/osxaudio/gstosxcoreaudioremoteio.c:
	  osxaudio: Add some device provider properties
	  Add is-default and unique-id properties to the device provider.
	  unique-id is particularly useful for recognising the device again
	  as it's stable for a device across reboots and replugs.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5274>

2024-07-22 16:38:07 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* ext/qt6/RGBA_gles.frag:
	* ext/qt6/gstqml6glsink.cc:
	* ext/qt6/gstqsg6material.cc:
	* ext/qt6/meson.build:
	* ext/qt6/qsb-wrapper.py:
	* ext/qt6/resources.qrc:
	  qml6glsink: add support for texture-target external-oes
	  In order to use oes-external, the qml6glsink needs a fragment shader that uses
	  the samplerExternalOES.
	  The qsb tool is not able to handle shaders that contain samplerExternalOES since
	  this feature is not supported by all target shading languages. The qsb tool is
	  able to replace a shader in the qsb file to handle this use case. Use it to
	  generate a shader variant that uses samplerExternalOES for OpenGL ES and select
	  that variant if the qml6glsink negotiated texture target oes-external.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7319>

2024-07-24 10:58:30 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* ext/qt6/gstqsg6material.cc:
	* ext/qt6/gstqsg6material.h:
	  gstqsg6material: pass the texture-target from caps to shader
	  The Material has to select the correct Shader depending on the negotiated
	  texture target.
	  Pass the texture target from the caps to the shader creation as it is already
	  done for the pixel format.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7319>

2024-07-22 18:08:10 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* ext/qt6/gstqsg6material.cc:
	  gstqsg6material: create OESExternal RhiTexture if necessary
	  The RhiTexture must be created with the OESExternal flag, if the gl_mem is a
	  OESExternal buffer. Otherwise, Qt will create a Texture 2D texture and ignore
	  the previously negotiated texture target.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7319>

2024-07-24 09:55:59 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* ext/qt6/gstqsg6material.cc:
	  gstqsg6material: print loaded fragment shader to log
	  This is useful for checking that the qml6glsink selected the correct fragment
	  shader for the expected texture format.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7319>

2024-08-01 12:15:17 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* ext/qt6/qt6glwindow.cc:
	  qt6glwindow: Only use GL_READ_FRAMEBUFFER when we do blits
	  This fbo target is not always supported, and should only be used
	  along with the frame buffer blit extension.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7291>

2024-07-12 11:09:14 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	* gst/multifile/gstsplitmuxpartreader.h:
	  splitmuxsrc: Don't create part reader elements initially
	  Only create the part reader elements internally the first time
	  the part is activated. Saves some startup time when preloading
	  a large number of fragments
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-07-12 11:07:47 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxsrc.c:
	  splitmuxsrc: Drop lock when unpreparing parts
	  Parts may emit bus messages that want to take the splitmuxsrc
	  lock and prevent the downward state change. Avoid a deadlock
	  after a part sends an error message by taking a ref and
	  dropping the lock around the unprepare call
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-07-12 10:44:51 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxsrc.c:
	  splitmuxsrc: Make sure to re-take lock
	  In the error path when activating a part fails, make
	  sure to re-take the splitmuxsrc lock before returning
	  to the caller.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-06-21 11:53:19 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	* gst/multifile/gstsplitmuxsink.h:
	* gst/multifile/gstsplitmuxsrc.c:
	* tests/check/elements/splitmuxsink.c:
	  splitmuxsink: Fix race in unit tests. Add fragment-id to messages
	  Publish fragment-id in the messages that splitmuxsink and splitmuxsrc
	  send, so when they are received out of order (due to async finalization,
	  for example), they can still be identified / ordered correctly.
	  Fix a race in the splitmuxsink unit test where messages might be
	  received out of order
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-05-16 03:37:51 +1000  Jan Schmidt <jan@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/multifile/gstsplitmuxsrc.c:
	  splitmuxsrc: Document new properties and signals
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-05-15 18:45:15 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	* gst/multifile/gstsplitmuxpartreader.h:
	* gst/multifile/gstsplitmuxsrc.c:
	* gst/multifile/gstsplitmuxsrc.h:
	* gst/multifile/test-splitmuxpartreader.c:
	  splitmuxsrc: Add num-lookahead property
	  Add a `num-lookahead` property that will 'prepare' a number of
	  fragments in advance of the playhead if they have been deactivated
	  or closed by a limited number of `num-open-fragments`. It can help
	  to avoid any play stalls reading the indexes or headers of the next
	  file from high-latency media or on resource limited machines.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-05-16 01:26:51 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	* gst/multifile/gstsplitmuxpartreader.h:
	* gst/multifile/gstsplitmuxsrc.c:
	  splitmuxsrc: Rename some internal terminology
	  A part reader can be 'loaded' (prepared, but not currently outputting anything)
	  or 'playing' (actively being used to output data)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-05-10 23:25:51 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxsrc.c:
	* gst/multifile/gstsplitmuxsrc.h:
	* tests/examples/splitmux/meson.build:
	* tests/examples/splitmux/splitmux-record-and-play-live.c:
	  splitmuxsrc: Allow adding fragments during playback
	  Trigger measurement / inclusion of new fragments into
	  the playback timeline if they are added after the
	  element is already running.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-04-30 00:33:35 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	* gst/multifile/gstsplitmuxsink.h:
	* tests/check/elements/splitmuxsink.c:
	* tests/check/elements/splitmuxsrc.c:
	* tests/examples/splitmux/meson.build:
	* tests/examples/splitmux/splitmuxsink-fragment-info.c:
	  splitmuxsink: Add fragment offset and duration to message
	  Publish the playback offset for and duration into the
	  splitmuxsink-fragment-closed bus message as each fragment
	  finishes.
	  These can be passed to splitmuxsrc via the 'add-fragment'
	  signal to avoid splitmuxsrc measuring all files on startup
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-04-30 00:33:35 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	  splitmuxsink: Fix a race in fragment switching with async handling
	  Only do output/muxer operations at the output side of splitmuxsink
	  to avoid races if fragments are small, by moving the RUNNING_TIME
	  qdata setting.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-04-30 00:33:35 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	* gst/multifile/gstsplitmuxsink.h:
	  splitmuxsink: Refactor command queue buffer
	  Make the command struct a bit clearer by giving it an explicit
	  enum cmd_type instead of just a boolean to differentiate a
	  finish-fragment command from a release-gop command
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-05-10 01:00:08 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxsrc.c:
	  splitmuxsrc: Default to only keeping 100 files open
	  Add a reasonably large default for the number of simulataneous
	  files to open, that won't affect users that split recordings into
	  a few large files, but will help prevent fd exhaustion for users
	  that make recordings with lots of small fragments
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-05-10 00:48:11 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	* gst/multifile/gstsplitmuxpartreader.h:
	  splitmuxsrc: Keep streams aligned during adjustments
	  When calculating the timestamp offset to apply to
	  media streams in a fragment, ensure that all fragments
	  are offset "together" to preserve alignment in cases
	  where there might gaps in a recording at a fragment boundary.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-05-03 23:41:03 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	* gst/multifile/gstsplitmuxpartreader.h:
	* gst/multifile/gstsplitmuxsrc.c:
	* gst/multifile/gstsplitmuxsrc.h:
	* gst/multifile/test-splitmuxpartreader.c:
	* tests/examples/meson.build:
	* tests/examples/splitmux/meson.build:
	* tests/examples/splitmux/splitmuxsrc-add-fragment.c:
	* tests/examples/splitmux/splitmuxsrc-extract.c:
	  splitmuxsrc: Add add-fragment signal and examples
	  Add a signal that allows adding fragments with a specific offset
	  and duration directly to splitmuxsrc's list. By providing the
	  fragment's offset on the playback timeline and duration directly,
	  splitmuxsrc doesn't need to measure the fragment making for faster
	  startup times.
	  Add a bus message that's published when fragments are measured,
	  reporting the offset and duration, so they can be cached by an
	  application and used on future invocations.
	  Add examples for handling the bus message and using the 'add-fragment'
	  signal.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-04-30 00:33:35 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	* gst/multifile/gstsplitmuxpartreader.h:
	* gst/multifile/gstsplitmuxsrc.c:
	* gst/multifile/gstsplitmuxsrc.h:
	  splitmuxsrc: Add num-open-fragments property
	  Add a property to limit the number of parts splitmux will open
	  simultaneously. Modify the part handling to support deactivating
	  and reactivating the demuxing for each part.
	  The default is '0', to preserve the existing behaviour of opening
	  all parts at the beginning.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-04-30 00:33:35 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	  splitmuxsrc: Report minimum timestamp for each media stream
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>

2024-07-31 09:06:21 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* ext/qt6/qt6glwindow.cc:
	  qt6: glwindow: Don't leak previously rendered buffer
	  If the consumer reads the buffers too slowily, simply unref the
	  previously rendered buffer instead of leaking it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7286>

2024-07-29 09:07:40 +0800  Shengqi Yu <shengqi.yu@mediatek.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: append non colorimetry structure to probed caps
	  If the stream has a special colorimetry that is not in the colorimetry
	  list, it will cause negotiation to fail. We should allow passing any
	  colorimetry, so add an extra structure without the colorimetry field.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7029>

2023-02-13 16:49:40 +0800  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2: Fix colorimetry mismatch for encoded format with RGB color-matrix
	  video-info supports encoded format to have RGB color-matrix, while
	  v4l2object just leave the v4l2 matrix to default when mapping
	  GST_VIDEO_COLOR_MATRIX_RGB. It causes gst matrix changed to be
	  GST_VIDEO_COLOR_MATRIX_BT601 when mapping v4l2 colorimetry.
	  So add support for encoded format with RGB color-matrix in v4l2object.
	  Note that for M2M encoders, we should in theory assume that that we can
	  transfer this value from OUTPUT to CAPTURE queues, though its only true
	  if the drivers does not do CSC. For now, we don't support any RGB
	  codecs, but leaving a note for the future.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3952>

2024-07-29 14:39:06 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: SRGB colorspace is documented limited-range
	  Split JPEG and SRGB so that we can follow the specified difference. The
	  SRGB definition in V4L2 does not follow the standard, and is document
	  so. This is also why JPEG colorspace exists.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3952>

2024-07-29 11:40:01 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: Fix size of plane_size array calculation
	  Due to missing parenthesys, only the first element of the array was
	  being cleared. As it is a staticly sized array in the object, this
	  code could also be simplified.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3952>

2024-07-29 11:37:29 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: Fix translation of quantization
	  The V4L2_MAP_QUANTIZATION macro has been fixed to something a lot saner,
	  fix our replica accordingly. The new macro now simply set the quantization
	  to full range is the pixel formats is RGB based, or if the JPEG
	  colorspace is used.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3952>

2024-07-26 16:38:31 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux: Fail cleanly if parsebin is not installed
	  Detect a failure to construct a parsebin and error out
	  cleanly instead of trying to operate on a null pointer.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6969>

2024-05-30 00:32:30 +0300  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2: Post a bus error when failing to start download
	  If a download completely fails to start, due to malformed URI or so,
	  post a bus error instead of just stalling out with no indication
	  why.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6969>

2024-05-30 00:31:38 +0300  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadhelper.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Implement file:// URI handling
	  Add the ability to play HLS and DASH from local files
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6969>

2024-05-29 16:35:37 +0300  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsng: Check caps are not null after parsing HLS CODECS tag
	  If the mime codec wasn't recognised, caps will be NULL and cause
	  a critical
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6969>

2024-07-23 15:32:22 +0200  Loïc Yhuel <loic.yhuel@softathome.com>

	* meson.build:
	  meson: fix SIZEOF_OFF_T when cross-compiling with Meson >= 1.3.0
	  https://mesonbuild.com/Release-notes-for-1-3-0.html#clarify-of-implicitlyincluded-headers-in-clike-compiler-checks
	  With only stddef.h, off_t is not defined, so when cross-compiling SIZEOF_OFF_T is -1.
	  We now use sys/types.h which should define off_t.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7217>

2024-07-07 10:14:40 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/debugutils/gsttaginject.c:
	* gst/debugutils/gsttaginject.h:
	  taginject: Modify existing tag events of the selected scope
	  Not doing so would mean that tags would be overidden by any tag events sent by
	  upstream. Also only send a tag event directly if upstream never sent one.
	  By default use GST_TAG_MERGE_REPLACE to override tags that exist in both the
	  upstream event and this element with the ones from this element, but provide a
	  new "merge-mode" property to adjust the behaviour.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7145>

2024-07-07 19:31:14 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/debugutils/gsttaginject.c:
	  taginject: Add getters for the properties
	  There's no reason why they should be write-only.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7145>

2024-07-07 19:30:30 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/debugutils/gsttaginject.c:
	  taginject: Use proper GType macro for the GstTagScope enum
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7145>

2024-07-03 16:08:40 +0300  Tihran Katolikian <katolikian@outlook.com>

	* ext/qt6/gstqsg6material.cc:
	  qt6: explicitly specify path to QtGui private headers when including qrhi_p.h
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7131>

2024-06-12 23:25:52 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt/gstqsgmaterial.cc:
	  qml/glsink: also support GLES2 needing shader 'precision' directives
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3616
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7024>

2024-07-01 10:00:42 +0800  Shengqi Yu <shengqi.yu@mediatek.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: use v4l2 reported width for padded_width when complex video formats
	  Stride means bytes per line, and padded_width means pixels. Here,
	  padded_width shoule be pix width reported by v4l2 instead of stride.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7076>

2020-04-08 10:40:42 -0400  Xavier Claessens <xavier.claessens@collabora.com>

	* meson.build:
	* meson_options.txt:
	  build: Add missing common options that are yielding in subprojects
	  - Align `glib_debug`, `glib_assert` and `glib_checks` options with GLib,
	  otherwise glib subproject won't inherit their value. Previous names
	  and values are preserved using Meson's deprecation mechanism.
	  - Add `extra-checks` and `benchmarks` options in the main project so it
	  can be inherited in GStreamer subprojects.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1165>

2024-06-02 11:40:04 +0300  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  adaptivedemux: Fix handling closed caption streams
	  Fix a typo "CLOSED_CAPTION" -> "CLOSED-CAPTION" and
	  a broken if statement that always bailed out for
	  closed captions
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6985>

2024-06-19 02:10:29 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst/dtmf/gstrtpdtmfsrc.c:
	  rtpdtmfsrc: minor logging clean-up
	  Only serialise event structure for debug logging purposes
	  if logging is actually enabled.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7060>

2024-06-19 01:55:57 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst/dtmf/gstrtpdtmfsrc.c:
	* tests/check/elements/dtmf.c:
	  rtpdtmfsrc: fix leak when shutting down mid-event
	  .. and update rtpdtmfdepay unit test to trigger
	  the potential leak more reliably (without the fix).
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3633
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7060>

2024-06-14 16:50:12 +0100  Tim-Philipp Müller <tim@centricular.com>

	* tests/check/elements/dtmf.c:
	  rtpdtmfdepay: add unit test for caps fixation issue with downstream audioconvert
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7036>

2024-06-14 16:20:31 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/dtmf/gstrtpdtmfdepay.c:
	* tests/check/elements/dtmf.c:
	  rtpdtmfdepay: fix caps negotiation with audioconvert
	  Specify "layout" field in src template to make sure it's
	  set and gets fixated properly if the downstream element
	  supports both interleaved and non-interleaved caps.
	  Fixes
	  gst_pad_set_caps: assertion 'caps != NULL && gst_caps_is_fixed (caps)' failed
	  critical with e.g.
	  gst-launch-1.0 rtpdtmfsrc ! rtpdtmfdepay ! audioconvert ! fakesink
	  Not that the layout really matters in our case since we always
	  output mono anyway, but non-interleaved requires adding AudioMeta,
	  so this is the easiest fix.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7036>

2024-06-13 18:23:46 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: fix invalid seqnum assertions
	  Upon fatal errors the loop function will first post an error message
	  then push out an EOS event.
	  An application may react immediately to the error message by setting the
	  state of the pipeline to NULL, meaning by the time we push out the EOS
	  event PAUSED_TO_READY may have reset the seek seqnum to -1.
	  While this is harmless, the assertion when setting an invalid seqnum
	  isn't tidy, fix this by simply not resetting to INVALID as it serves no
	  practical purpose and the next READY_TO_PAUSED will select a new seqnum
	  anyway.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7032>

2024-06-11 19:03:21 +0000  Jakub Vaněk <linuxtardis@gmail.com>

	* sys/v4l2/gstv4l2src.c:
	  v4l2src: Interpret V4L2 report of sync loss as video signal loss
	  Certain V4L2 drivers can report that a video receiver is seeing
	  some signal, but that it is unable to synchronize to it. IOW: the driver
	  can sometimes report V4L2_IN_ST_NO_SYNC and not report V4L2_IN_ST_NO_SIGNAL.
	  In particular, I've seen the tc358743 (HDMI-to-CSI2 converter) driver
	  sometimes report this when deployed to a fleet of embedded Raspberry Pis.
	  The relevant kernel code is in [1]. The video output is not practically
	  usable when V4L2_IN_ST_NO_SYNC is reported (only visually corrupted frames,
	  sometimes with random "snow", are received). I assume that this happens when
	  either the HDMI cable is poorly plugged in or damaged or when a CSI2 FFC
	  cable is used and is damaged.
	  The change in this commit is useful for detecting this working-but-not-really
	  condition in application code. Applications already listening for the "Signal lost"
	  message will gain the ability to handle this condition.
	  There seem to be more V4L2 error flags like this, see [2]. However, I do not
	  have practical experience with them and adding only V4L2_IN_ST_NO_SYNC seems
	  like a safer option.
	  [1]: https://github.com/raspberrypi/linux/blob/be8498ee21aa/drivers/media/i2c/tc358743.c#L1534
	  [2]: https://www.kernel.org/doc/html/v6.6/userspace-api/media/v4l/vidioc-enuminput.html
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7021>

2024-06-07 15:26:00 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Don't send FLUSH_{START|STOP} when losing sync
	  The initial goal was to support the case where we are paused watching a live
	  stream, and when we resume we can no longer resume from the previously
	  downloaded position. In that case we internally do a flushing seek back to the
	  "current live head position". This was also extended since to be able to
	  handle (utterly broken) servers when we can't really figure out where we are
	  anymore and therefore trigger that lost sync so we can try to get back on our
	  feet.
	  This does fix the issue... but results in spurious FLUSH_{START|STOP} events
	  being sent downstream. While that's fine for regular playback scenarios, it's a
	  bit of a wild scenario since a lot of pipelines/applications don't expect such
	  events when it wasn't triggered by downstream/application.
	  Fixes #3605
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7005>

2024-05-17 14:13:11 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/flv/gstflvmux.c:
	  flvmux: Use GDateTime instead of gmtime()
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6872>

2024-06-04 15:30:37 +0000  Corentin Damman <c.damman@intopix.com>

	* ext/qt6/gstqsg6material.cc:
	  gstqsg6material: fix RGB format support
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6991>

2023-02-07 17:07:55 +0800  Chun-wei Fan <fanc999@yahoo.com.tw>

	* ext/gtk/gtkgstglwidget.c:
	* ext/gtk/meson.build:
	  GTK plugin: Support OpenGL/WGL on Windows
	  This attempts to implement the gtkglsink element on Windows using WGL,
	  as there were some more gotchas that are along the way, since we need to
	  juggle with libepoxy along the way, meaning that we need a recent
	  GTK+-3.24.x for this to work properly, i.e. the upcoming GTK+-3.24.43.
	  Since we are essentially using an overlay compositor only during
	  rendering, move its initialization and destruction into the
	  gtk_gst_gl_widget_render() function, so that things are safer as we are
	  doing things across threads between gstreamer (gst-gl) and GTK, as GL
	  operations, as above, have more gotchas on Windows.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4289>

2024-06-01 15:15:18 +0300  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxaudio/gstosxaudiodeviceprovider.c:
	  macos: Listen for audio devices being added/removed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6981>

2024-05-27 14:14:24 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Only update from the Content-Base header in the initial OPTION / DESCRIBE response
	  Some servers send a new content base in the SETUP response, which is
	  just the non-aggregate control URL of the individual streams.
	  See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3563
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6926>

2024-05-26 14:03:11 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Handle the case of `*` as session-wide control URL from the SDP
	  Just like the comment above says this is supposed to indicate that the
	  same URL should be used as for the connection so far. If encountering
	  this case simply do nothing.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6926>

2024-05-26 14:02:12 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Also handle `rtsps://` and similar URLs as absolute in other places
	  Previously a direct comparison with `rtsp://` was performed, which
	  didn't catch cases like `rtsps://`.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3563
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6926>

2024-05-26 13:00:02 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Don't try the SETUP workaround for broken servers with absolute control URIs
	  Previously only control URIs that started with "rtsp://" were ignored
	  but it makes more sense to ignore all absolute URIs.
	  gst_uri_is_valid() conveniently checks for exactly that.
	  See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3563
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6926>

2024-01-08 20:06:24 +0900  Seungha Yang <seungha@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Handle keyunit trick mode in case of push mode too
	  Skip non-keyframe video frames if trickmode-keyunit flag is set
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5900>

2024-05-14 19:14:13 +0900  Seungha Yang <seungha@centricular.com>

	* gst/isomp4/atoms.c:
	  qtmux: Handle time information value > UINT32_MAX
	  If any duration in timescale is larger than UINT32_MAX, use version 1
	  atom, otherwise file header will be constructed with truncated values.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6843>

2024-05-28 13:04:20 +0200  Edward Hervey <bilboed@bilboed.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Minor refactoring of starting segment check
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>

2024-04-15 08:47:12 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Be more tolerant when matching segments with PDT
	  Some servers might not provide 100% matching PDT when doing updates, or accross
	  variants. This would cause the code matching segments using PDT to fail if the
	  segment PDT was 1 microsecond (or whatever small value) before the candidate
	  segment. And would pick the (wrong) following segment as the matching one.
	  In order to be more tolerant when matching, we instead check whether the
	  candidate segment is within the first segment of the segment we are trying to
	  match.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>

2024-04-12 15:53:08 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Fix failure to find a replacement segment on resync
	  If we end up with a segment with an internal time that varies from the supposed
	  one, this could be for two reasons:
	  * We guess-timated the wrong segment to go to when advancing or switching
	  variants. In that case we try to find the actual segment to go to (just before
	  this change).
	  * There was a complete playlist change (for whatever reason) and we can't find a
	  replacement. In that case we want to carry on playback from this position but
	  need to remember that we moved (by setting the stream to DISCONT, and
	  resetting the new mapping).
	  Fixes playback on several broken stream
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>

2024-04-12 15:52:23 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	  hlsdemux2: Refactor update of GstHLSTimeMap values
	  This was also missing transferring the PDT if present
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>

2024-04-12 15:48:34 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Fix parsing of EXT-X-DISCONTINUITY-SEQUENCE:0
	  Since the default value of `m3u8->discont_sequence` (before parsing of the
	  playlist data) was 0 .. we would never properly detect the presence of that
	  field if it was present with a value of 0.
	  This would later on cause havoc in playlist synchronization where we would
	  assume it didn't have a discontinuity sequence specified (whereas it did, and it
	  was 0).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>

2024-04-12 15:45:16 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Increase tolerance for discontinuity detection
	  A lot of streams will do a poor job of estimating proper duration of fragments
	  in the playlist, but over several fragments have it correct.
	  Instead of constantly trying to realign the estimated stream time, allow for a
	  more realistic tolerance of 3-4 video frames
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>

2024-04-11 16:37:36 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Ensure a discont will be set when resetting for lost sync
	  This is to ensures we inform the demuxer/parsers that what follows is not contiguous
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>

2024-04-11 15:30:27 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Fix handling of variant switching and playlist updates
	  When updating playlists, we want to know whether the updated playlist is
	  continuous with the previous one. That is : if we advance, will the next
	  fragment need to have the DISCONT buffer set on it or not.
	  If that happens (because we switched variants, or the playlist all of a sudden
	  changed) we remember that there is a pending discont for the next fragment. That
	  will be used and resetted the next time we get the fragment information.
	  Previously this was only partially done. And it was racy because it was set
	  directly on `GstAdaptiveDemux2Stream->discont` when a playlist was updated,
	  instead of when the next fragment was prepared.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>

2024-04-11 15:19:50 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2: Only set DISCONT on beginning of fragments
	  This avoids accidentally setting it in the middle of a fragment, which could
	  cause havoc in demuxer/parsers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>

2024-04-08 16:13:13 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Fix getting starting segment on live playlists
	  When dealing with live streams, the function was assuming that all segments of
	  the playlist had valid stream_time. But that isn't TRUE, for example in the case
	  of failing to synchronize playlists.
	  Fixes losing sync due to not being able to match playlist on updates
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>

2024-04-18 09:16:05 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpjitterbuffer.c:
	  rtpbin: Regularly emit the sync signal
	  Even if no new synchronization information is available.
	  This is necessary because the timestamp offset logic in rtpbin depends
	  on the base RTP time that is determined by the jitterbuffer, but this
	  changes all the time (especially in mode=slave) and the timestamp
	  offsets have to be updated accordingly. Doing so is especially important
	  if they're only determined by the RTP-Info, which never changes from the
	  very beginning.
	  The interval can be configured via the new min-sync-interval property.
	  Synchronization happens at least that often, but at most as often as the
	  old sync-interval property allows.
	  Both intervals are now based on the monotonic system clock.
	  Additionally, clean up synchronization code a bit, only emit either
	  inband NTP or RTCP SR synchronization at the same time, based on which
	  one has the more recent time information, and only emit RTP-Info
	  synchronization if it wasn't provided previously at the same time as the
	  NTP-based synchronization information.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-04-17 17:49:11 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpbin.c:
	* gst/rtpmanager/gstrtpjitterbuffer.c:
	* gst/rtsp/gstrtspsrc.c:
	  rtpjitterbuffer: Set max-rtcp-rtp-sync-time to -1 (disabled)
	  There is generally no requirement to ignore RTCP SR if the RTP time of
	  the SR differs a lot from the last received RTP packet. The mapping
	  between RTP and NTP time stays valid until there was a stream reset, in
	  which case we wouldn't use that information anyway.
	  When using rtcp-sync-send-time=false the default of 1s difference can
	  easily be exceeded, e.g. if encoding of the stream after capture adds
	  more than 1s of latency.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-04-17 17:31:28 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	* gst/rtpmanager/gstrtpjitterbuffer.c:
	  rtpbin: Allow synchronizing against RTP-Info without having received any RTCP
	  Previously the information was provided from rtpjitterbuffer to rtpbin
	  only once the first RTCP SR was received, which is not necessary at all
	  as all required information is available from the caps already.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1162
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-04-17 17:17:16 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpbin.c:
	* gst/rtpmanager/gstrtpbin.h:
	  rtpbin: Add new never/ntp RTCP sync modes
	  Never is useful for some RTSP servers that report plain garbage both via
	  RTCP SR and RTP-Info, for example.
	  NTP is useful if synchronization should only ever happen based on RTCP
	  SR or NTP-64 RTP header extension.
	  Also slightly change the behaviour of always/initial to take RTP-Info
	  based synchronization into account too. It's supposed to give the same
	  values as the RTCP SR and is available earlier, so will generally cause
	  fewer synchronization glitches if it's made use of.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-04-17 17:12:13 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	  rtpbin: Handle switches between RTP-Info and NTP-based stream association better
	  Instead of switching on the very first stream, require that all streams
	  have switched before switching to the different synchronization
	  mechanism.
	  Without this there will be a noticeable gap during the switch. E.g. when
	  going from RTP-Info to NTP-based association, first the first stream
	  only would get an offset, then the first two, ... then all of them.
	  Depending on the order of streams this will cause a lot of changes in
	  ts-offset during the transition.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-04-17 17:10:03 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	* gst/rtpmanager/gstrtpjitterbuffer.c:
	  rtpbin: Pass NPT start from rtpjitterbuffer to rtpbin
	  And use it to detect synchronization changes (e.g. seeks) more reliably
	  when doing RTP-Info based synchronization.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-04-17 17:01:21 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	  rtpbin: Clean up stream association state
	  Use fewer magic numbers and keep track of the different synchronization
	  mechanisms separately. Also keep track of more state to detect more
	  situations when resynchronization should happen.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-04-17 16:50:30 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	  rtpbin: Constify function parameters and use correct types
	  Previously these parameters were randomly changed in the body of the
	  function to avoid having to declare a new variable, which made the code
	  very hard to follow. By marking them as const this won't be possible
	  anymore in the future.
	  Also the RTP clock-base (RTP time from RTSP RTP-Info) is an unsigned
	  64 bit integer as it's an extended RTP timestamp.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-04-17 13:44:38 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	* gst/rtpmanager/gstrtpbin.h:
	  rtpbin: Untangle NTP-based and RTP-Info based stream association
	  Both were entangled previously and very hard to follow what happens
	  under which conditions. Now as a very first step the code decides which
	  of the two cases it is going to apply, and then proceeds accordingly.
	  This also avoids calculating completely invalid values along the way and
	  even printing them int the debug output.
	  Also improve debug output in various places.
	  This shouldn't cause any behaviour changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-04-17 13:33:41 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	  rtpbin: Remove unused variable / function parameter
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-04-17 13:30:42 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	  rtpbin: Handle ntp-sync=true before everything else
	  This simplifies the code as it's a much simpler case than the normal
	  inter-stream synchronization, and interleaving it with that only
	  reduces readability of the code.
	  Also improve some debug output in this code path.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-04-17 13:29:08 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	  rtpbin: Add some documentation to gst_rtp_bin_associate()
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-04-17 13:21:08 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	  rtpbin: Don't do any timestamp offsetting in rfc7273-sync=true mode
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1160
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>

2024-05-13 11:08:15 +0300  Sergey Krivohatskiy <s.krivohatskiy@gmail.com>

	* gst/audioparsers/gstflacparse.c:
	  flacparse: fix buffer overflow in gst_flac_parse_frame_is_valid
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6835>

2024-05-23 14:29:49 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst/level/gstlevel.c:
	  level: fix old "message" property doc chunk
	  In the online documentation the new post-messages
	  property would show up as deprecated refering to
	  itself.
	  Fixes #3561
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6911>

2024-05-21 17:49:33 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/gtk/gstgtkbasesink.c:
	  gtk: Fail initialization of the sink if GTK4 is already initialized in the same process
	  Initializing GTK3 and GTK4 in the same process does not work and is not
	  supported.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6892>

2024-05-21 17:49:42 +0200  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxaudio/gstosxcoreaudio.c:
	* sys/osxaudio/gstosxcoreaudio.h:
	* sys/osxaudio/gstosxcoreaudiocommon.h:
	  osxaudio: Avoid using private APIs on iOS
	  Turns out AudioConvertHostTimeToNanos and AudioGetCurrentHostTime are macOS-only APIs, which prevents apps using
	  GStreamer on iOS from being accepted into App Store.
	  This commit replaces those functions with a manual version of what they do - mach_absolute_time() for the current time,
	  and data from mach_timebase_info() at the beginning to convert host timestamps to nanoseconds.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6789>

2024-05-21 10:45:24 +0200  Diego Nieto <diego.nieto.m@outlook.com>

	* tests/examples/rtsp/test-onvif.c:
	  rtsp-server: Remove unused define in backchannel test
	  The caps match with the ones used in test-onvif-backchannel,
	  but they are actually not used here.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6885>

2024-05-18 01:24:44 +1000  Jan Schmidt <jan@centricular.com>

	* gst/rtp/gstrtpmp4gdepay.c:
	  rtpmp4gdepay: Set duration on outgoing buffers
	  If we have constant duration buffers, set the duration on
	  outgoing buffers, like rtpmp4adepay does. This fixes
	  problems with (for example) muxers like mp4mux not writing
	  the duration of the final sample into the index.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6878>

2024-05-13 14:58:50 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/wavparse/gstwavparse.c:
	  wavparse: reset when receiving STREAM_START
	  We need to reset the internal state to be able to parse a new stream.
	  When doing so keep seek event and do not destroy the adapter.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6840>

2024-04-26 14:41:02 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/pulse/pulsesink.c:
	  audioringbuffer: Avoid overflows of segment done counter
	  This counter is incremented once for every segment, meaning it would
	  e.g. overflow after 24 days when using 1ms segments. Once that happens,
	  completely wrong positions are reported and invalid memory is handed out
	  for writing/reading the next segments.
	  As the affected variables are unfortunately part of the public API of
	  the struct, a second set of variables is added together with accessor
	  functions and both variables are kept in sync for backwards
	  compatibility.
	  All existing users of the two variables are moved to the new ones but
	  external code might still run into the overflow.
	  This also slightly breaks API as external code updating the variables
	  will have no effect anymore but the only known user of this is
	  pulsesink.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6740>

2024-05-09 10:01:22 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/level/gstlevel.c:
	  level: Don't post a message on EOS without a valid audio info
	  If EOS is received before caps, e.g. because of an error, then rate and
	  number of channels would be 0 and some divisions by zero would happen.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6819>

2024-04-18 17:07:25 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	* ext/adaptivedemux2/gstadaptivedemux.h:
	* ext/mpg123/gstmpg123audiodec.c:
	* ext/mpg123/gstmpg123audiodec.h:
	* gst/multifile/gstsplitmuxsink.c:
	* gst/multifile/gstsplitmuxsink.h:
	* sys/osxaudio/gstatenc.c:
	* sys/osxaudio/gstatenc.h:
	  gst: Move GstQueueArray as GstVecDeque to core
	  And change lengths and indices from guint to gsize for a more correct type.
	  Also deprecate GstQueueArray and implement it in terms of GstVecDeque.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6779>

2024-05-05 18:29:39 +0300  Sebastian Dröge <sebastian@centricular.com>

	* tests/check/elements/qtdemux.c:
	  qtdemux: Use `G_GUINT64_CONSTANT` when creating test caps
	  Otherwise this fails on 32 bit platforms.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3521
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6804>

2024-04-27 00:37:52 +0900  Seungha Yang <seungha@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: Add Y216 and Y416 formats
	  The same memory layout as Y212 and Y412 formats, respectively
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6745>

2024-04-11 01:49:40 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst/rtp/gstrtph264depay.c:
	  rtph264depay: fix FU-B handling
	  Skip extra 16-bit DON in FU-B header.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/806
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6607>

2024-04-11 01:27:28 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst/rtp/gstrtph264depay.c:
	  rtph264depay: minor refactoring of FU handling code
	  Make code easier to follow, and prepare for next commit.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6607>

2024-04-22 10:40:13 -0400  William Wedler <william.wedler@videoray.com>

	* ext/qt/qtitem.cc:
	  fix: qmlglsink: video content resizes to new item size
	  Mark geometry dirty when the item rectangle changes in the
	  QtGLVideoItem::updatePaintNode method. This allows changes in the bounding
	  rectangle to be applied to the scene graph geometry node.
	  Fixes #3493
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6711>

2024-04-22 10:35:18 -0400  William Wedler <william.wedler@videoray.com>

	* ext/qt6/qt6glitem.cc:
	  fix: qml6glsink: video content resizes to new item size
	  Mark geometry dirty when the item rectangle changes in the
	  QtGLVideoItem::updatePaintNode method. This allows changes in the bounding
	  rectangle to be applied to the scene graph geometry node.
	  Fixes #3493
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6711>

2024-04-26 09:45:22 +0800  Tim Blechmann <tim@klingt.org>

	* ext/soup/gstsouphttpsrc.c:
	  soup: fix thread name
	  thread names should be below 16char, otherwise they won't be shown on
	  linux.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6736>

2024-04-19 11:31:04 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Answer GST_QUERY_CAPS
	  If we have a generic caps, we can answer the query.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6690>

2024-04-19 11:29:25 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Refactor output slot creation
	  Set as much information as possible on the slot (including the associated
	  track) *before* the associated source pad is added to the element.
	  We need this so that incoming event/queries can be replied to if they are
	  received when adding the pad
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6690>

2024-04-05 17:30:01 +0200  Philipp Zabel <p.zabel@pengutronix.de>

	* sys/v4l2/gstv4l2allocator.c:
	  v4l2bufferpool: Ensure freshly created buffers are not marked as queued
	  Otherwise, if we run in to the copy case, this can cause these
	  groups to stay around with queued flag set, but never actually
	  queued, until gst_v4l2_allocator_flush() is called, which then
	  erroneously frees the associated memories, causing the release
	  function to decrement the allocator refcount where it was never
	  incremented, resulting in early allocator disposal, and either
	  deadlock or use after free.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6552>

2024-04-12 17:17:53 +0800  Qian Hu (胡骞) <qian.hu@mediatek.com>

	* docs/gst_plugins_cache.json:
	* sys/v4l2/gstv4l2object.c:
	  v4l2: add multiplane y42b(yuv422m)
	  for some jpg file, mediatek v4l2 jpeg decoder
	  hardware produce multi plane YUV 4:2:2 data
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6617>

2024-04-09 11:29:46 +0900  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2bufferpool: queue back the buffer flagged LAST but empty
	  Some decoder drivers need to wait enough capture buffers before
	  starting to decode. But the dequeued buffer flag LAST but empty
	  has no chance to queue back to driver, which makes decode hang
	  after seek. So need to queue back such kind of buffer to driver.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6579>

2024-04-05 14:09:18 +0200  Philipp Zabel <p.zabel@pengutronix.de>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Drop writable check on output pool process
	  Output buffers don't have to be writable. Accepting read-only buffers
	  from the V4L2 buffer pool allows upstream elements to write directly
	  into the V4L2 buffers without triggering a CPU copy into a new buffer
	  from the same V4L2 buffer pool every time.
	  Tested with the vivid output device:
	  GST_DEBUG=GST_PERFORMANCE:7 gst-launch-1.0 videotestsrc ! v4l2sink device=/dev/video5
	  With this change, gst_v4l2_buffer_pool_dqbuf() must be allowed to not
	  resize read-only memories of output buffers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6572>

2024-04-13 10:57:43 +0100  Philippe Normand <philn@igalia.com>

	* ext/vpx/gstvpxcompat.h:
	* ext/vpx/gstvpxdec.c:
	  vpxdec: Include vpx error details in errors and warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6626>

2024-04-13 10:56:29 +0100  Philippe Normand <philn@igalia.com>

	* ext/vpx/gstvp9enc.c:
	  vp9enc: Include vpx error details in errors and warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6626>

2024-04-13 10:55:55 +0100  Philippe Normand <philn@igalia.com>

	* ext/vpx/gstvpxcompat.h:
	* ext/vpx/gstvpxenc.c:
	  vpxenc: Rename GST_VPX_WARN to GST_VPX_ENC_WARN
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6626>

2024-04-12 16:57:00 +0800  Qian Hu (胡骞) <qian.hu@mediatek.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: fix wrong full_range offset when parsing colr box
	  use colr_data[18] >> 7 to get full range information, instead
	  of colr_data[17] >> 7
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6616>

2024-04-11 10:10:19 -0400  William Wedler <william.wedler@videoray.com>

	* ext/qt6/qt6glitem.cc:
	  fix: qml6glsink: Notify that the returned QSGNode node has changes
	  Sets the QSGNode::DirtyMaterial bit when a new buffer is used for the material's texture
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3469
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6609>

2024-04-11 07:15:51 +0200  Jochen Henneberg <jochen@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/qt6/gstplugin.cc:
	* ext/qt6/gstqml6glmixer.cc:
	* ext/qt6/gstqml6gloverlay.cc:
	* ext/qt6/gstqml6glsink.cc:
	* ext/qt6/gstqml6glsrc.cc:
	* ext/qt6/qt6glitem.cc:
	  qt6: Let plugin documentation show up
	  * Added qml6 to plugin cache
	  * Added 'since' markers
	  * Moved plugin to plugins-good where it really is
	  * Fixed section comments
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6603>

2024-04-11 07:14:39 +0200  Jochen Henneberg <jochen@centricular.com>

	* docs/meson.build:
	* ext/qt/gstplugin.cc:
	* ext/qt/gstqtoverlay.cc:
	* ext/qt/gstqtsink.cc:
	* ext/qt/gstqtsrc.cc:
	* ext/qt/qtitem.cc:
	  qt: Let plugin documentation show up
	  * Enabled cc file parsing from hotdoc
	  * Moved package to plugins-good where it really is
	  * Fixed section comments
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6603>

2024-04-10 08:19:01 +0200  Jochen Henneberg <jochen@centricular.com>

	* ext/qt6/YUV_BIPLANAR.frag:
	* ext/qt6/gstqml6glsink.cc:
	* ext/qt6/gstqsg6material.cc:
	* ext/qt6/meson.build:
	* ext/qt6/resources.qrc:
	  qt6: Added support for NV12 input format to qml6glsink
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6582>

2024-04-03 21:16:46 +0200  Jochen Henneberg <jochen@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/qt/gstqsgmaterial.cc:
	* ext/qt/gstqtsink.cc:
	  qt: Added support for NV12 input format to qmlglsink
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6582>

2024-04-07 19:39:58 +0900  Jimmy Ohn <yongjin.ohn@lge.com>

	* ext/pulse/pulsedeviceprovider.c:
	  pulsedeviceprovider: Add is_default_device_name function and missing lock
	  Add is_default_device_name function to simplify compare device type
	  name and fix the missing lock when accessing default_sink_name and
	  default_source_name.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6558>

2024-04-01 12:01:58 -0400  Arun Raghavan <arun@asymptotic.io>

	* ext/pulse/pulsesink.c:
	* ext/pulse/pulsesink.h:
	  pulsesink: Re-enable emission of stream status messages
	  This was disabled almost 10 years ago because we were missing libpulse API to
	  avoid a deadlock. That was fixed quite a long time ago, so let's enable this
	  again. The defer counter becomes an atomic, as we no longer have a threaded
	  mainloop lock protecting it.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3444
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6500>

2024-04-08 13:04:31 +0100  Philippe Normand <philn@igalia.com>

	* ext/vpx/gstvpxenc.c:
	  vpxenc: Include vpx error details in errors and warnings
	  The vpx_codec_t err_detail string usually provides additional context about the
	  error, so include it in GStreamer warnings and errors, when it's not NULL.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6573>

2024-04-08 19:53:06 +0200  Jochen Henneberg <jochen@centricular.com>

	  qt6: Fixes for dummy texture
	  * RED_OR_ALPHA8 will map value to alpha for OpenGL, use R8 to avoid
	  2nd shader
	  * Determine texel size for proper texture memory preparation
	  * QByteArray::fromRawData() does shallow copy and thus leads to use of
	  corrupted memory
	  * Make sure RGBA dummy texture is fully opaque
	  * QRhiTexture::create() must be called to allocate texture resources
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6578>

2024-04-06 02:28:44 +0200  Jochen Henneberg <jochen@centricular.com>

	* ext/qt/gstqsgmaterial.cc:
	* ext/qt/gstqsgmaterial.h:
	  qt: Fixup for dummy textures
	  * Initialize dummy texture Ids
	  * Ensure YUV->RGB matrix set for dummy textures
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6578>

2024-04-04 13:21:44 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	  rtpbin: Don't re-use a variable for a completely different purpose temporarily
	  During RTP-Info synchronization, clock_base was temporarily switched
	  from the actual clock-base to the base RTP time and then back some lines
	  later.
	  Instead directly work with the base RTP time. The comment about using a
	  signed variable for convenience doesn't make any sense because all
	  calculations done with the value are unsigned.
	  Similarly, rtp_clock_base was overridden with the rtp_delta when
	  calculating it, which was fine because it is not used anymore
	  afterwards. Instead, introduce a new variable `rtp_delta` to make this
	  calculation clearer.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6536>

2024-04-04 13:19:18 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	  rtpbin: Convert clock-base to extended RTP timestamp correctly
	  It's not in the same period as the current RTP base time but always in
	  the very first period. This avoids using it again at a much later time.
	  The code in question is only triggered with rtcp-sync=rtp-info.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6536>

2024-04-04 13:11:54 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpjitterbuffer.c:
	  rtpjitterbuffer: Use an extended RTP timestamp for the clock-base
	  It is compared to other extended RTP timestamps all over rtpjitterbuffer
	  and since 4df3da3bab8 the initial extended RTP timestamp is not equal
	  anymore to the plain RTP time.
	  Continue passing a non-extended RTP timestamp via the `sync` signal for
	  backwards compatibility. It will always be a timestamp inside the first
	  extended timestamp period anyway.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6536>

2024-04-03 15:01:52 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtsp/gstrtspsrc.c:
	* gst/rtsp/gstrtspsrc.h:
	  rtspsrc: Optionally timestamp RTP packets with their receive times in TCP/HTTP mode
	  Until https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6509
	  this was accidentally done inside rtpjitterbuffer for many years, and
	  doing so potentially solves problems on some streams while introducing
	  problems on others.
	  Make this configurable on rtspsrc and default to not set timestamps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6529>

2024-04-02 21:30:50 +1100  Jan Schmidt <jan@centricular.com>

	* gst/rtpmanager/rtpjitterbuffer.c:
	  rtpjitterbuffer: Don't use estimated_dts to do default skew adjustment
	  When the buffer DTS is estimated based on arrival time at the
	  jitterbuffer (rather than provided on the incoming buffer itself),
	  it shouldn't be used for skew adjustment. The typical case is
	  packets being deinterleaved from a tunnelled TCP/HTTP RTSP stream,
	  and the arrival times at the jitter buffer are not well enough
	  correlated to usefully do skew adjustments.
	  This restores the original intended behaviour for the 'estimated dts'
	  path, that was broken years ago during other jitterbuffer refactoring.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6509>

2024-04-06 12:26:39 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/flac/meson.build:
	  flac: Add wrap file and add fallback for it to the flac plugin
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6553>

2024-02-28 11:28:23 +0800  Tim Blechmann <tim@klingt.org>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: enforce a pixel aspect ratio of 1/1 if no data are available
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6242>

2024-04-05 14:21:38 +0200  Philipp Zabel <p.zabel@pengutronix.de>

	* sys/v4l2/gstv4l2allocator.c:
	  v4l2: allocator: Fix unref log/trace on memory release
	  Use gst_object_unref() instead of g_object_unref() in
	  gst_v4l2_allocator_release(), so refcounting log and
	  tracer get to know about this unref.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6551>

2024-03-29 11:14:54 +0900  Elliot Chen <elliot.chen@nxp.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: fix error in calculating padding bottom for tile format
	  This is a regression while porting to arbitrary tile dimensions
	  introduced in !3424.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6480>

2024-03-20 13:57:56 -0500  Elizabeth Figura <zfigura@codeweavers.com>

	* sys/osxaudio/gstatdec.c:
	* sys/osxaudio/gstatdec.h:
	  atdec: Handle channel counts greater than 2
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6157>

2024-02-20 13:20:12 -0600  Elizabeth Figura <zfigura@codeweavers.com>

	* sys/osxaudio/gstatdec.c:
	  atdec: Use gst_audio_decoder_set_output_caps() directly
	  The code currently sets the same caps in two different ways, and neither of them correctly handle the channel mask.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6157>

2024-04-01 14:41:21 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstwavpackparse.c:
	  wavpackparse: Use an unsigned integer for the block size calculations
	  It's never negative.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6498>

2024-04-01 14:36:19 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstwavpackparse.c:
	  wavpackparse: Fix potential integer overflow on ID_ODD_SIZE blocks
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6498>

2024-04-01 14:33:05 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstwavpackparse.c:
	* gst/audioparsers/gstwavpackparse.h:
	  wavpackparse: Explicitly handle ID_WVX_NEW_BITSTREAM
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6498>

2024-03-28 09:46:08 +0100  Robert Guziolowski <robert.guziolowski@gmail.com>

	* ext/qt6/gstqsg6material.cc:
	  qml6glsink: fix destruction of underlying texture
	  One should not directly delete the QRhiTexture instance.
	  Instead it should be marked as to be deleted once QRhi::endFrame()
	  is called (see: https://doc.qt.io/qt-6/qrhiresource.html#deleteLater )
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3443
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6467>

2024-03-28 19:49:46 +0000  Tim-Philipp Müller <tim@centricular.com>

	* tests/check/elements/rtpred.c:
	  tests: rtpred: fix out-of-bound writes
	  Don't write more data to the buffer than we allocated
	  space for.
	  Fixes #3312
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6474>

2024-03-27 15:21:56 +0900  Haihua Hu <jared.hu@nxp.com>

	* sys/v4l2/gstv4l2src.c:
	  v4l2src: need maintain the caps order in caps compare when fixate
	  if the calculated "distance" of caps A and B from the preference are
	  equal, need to keep the original order instead of swap them
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6451>

2024-03-26 23:53:30 +1100  Jan Schmidt <jan@centricular.com>

	* gst/rtp/gstrtpmp4adepay.c:
	  rtpmp4adepay: Set duration on outgoing buffers
	  If we can calculate timestamps for buffers, then set the duration
	  on outgoing buffers based on the number of samples depayloaded.
	  This can fix the muxing to mp4, where otherwise the last packet
	  in a muxed file will have 0 duration in the mp4 file.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6447>

2024-03-26 13:33:56 +0200  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtphdrext-ntp.c:
	  rtphdrext-ntp: Fix typo of the RFC number in the element metadata
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3417
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6439>

2024-03-21 18:07:42 +0900  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: Also set max_width/max_height if enum framesize fail
	  Some driver doesn't implement enum_framesize. The maximum supported
	  size can be got by trying format with a very large size. Also need
	  to set max_width/max_height for this case, otherwise default encoded
	  buffer size 256kB is too small.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6416>

2024-03-20 08:44:31 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/downloadhelper.c:
	  adaptivedemux2: Add libsoup tracing debug
	  Provides more information for debugging
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6409>

2024-03-18 15:07:28 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	  adaptivedemux2: Don't use g_str_equal on potentially NULL strings
	  It is only meant to be used as a callback. The fallback macro uses strcmp which
	  doesn't handle NULL strings gracefully. Instead use g_strcmp0
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6392>

2024-03-18 15:02:29 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Avoid NULL pointer usage
	  The pending/current variant are both NULL when the demuxer is resetted.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6392>

2024-03-18 15:00:02 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemuxutils.c:
	  adaptivedemux2: Handle context going away
	  This issue can happen when the scheduler loop was stopped (and context went
	  away). We no longer want to push/pop main context threads.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6392>

2024-03-18 14:57:43 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	  hlsdemux2: Improve detection of playlist updates
	  In the case we are not updating an existing playlist, we only want to reset the
	  download error count if the URI we are downloading was not the previous one we
	  were trying to load
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6392>

2024-03-13 13:39:21 +0100  Alexander Slobodeniuk <aslobodeniuk@fluendo.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: remove 'deprecated' flag from the 'push-backchannel-sample' signal
	  It seems that it was added by accident when copying from push-backchannel-buffer
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6355>

2024-03-11 10:39:27 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/mpg123/gstmpg123audiodec.c:
	  mpg123audiodec: Correctly handle the case of clipping all decoded samples
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3365
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6318>

2024-02-28 19:25:52 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxaudio/gstatenc.c:
	* sys/osxaudio/gstatenc.h:
	* sys/osxaudio/gstosxaudio.c:
	* sys/osxaudio/gstosxcoreaudiocommon.h:
	* sys/osxaudio/meson.build:
	  macos: Add Apple AAC encoder (atenc)
	  Adds the `atenc` element capable of encoding AAC-LC audio, using the AudioToolbox framework.
	  It's able to encode up to 7.1 channel configurations.
	  Comes with basic knobs for rate control (bitrate for CBR, quality for VBR).
	  Support for more profiles (LD, HE-AAC) should be simple, but is not included here because of bugs
	  with parsing of the AudioSpecificConfig.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6254>

2024-02-26 14:57:32 +0100  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxaudio/gstatdec.c:
	* sys/osxaudio/gstatdec.h:
	* sys/osxaudio/gstosxaudio.c:
	* sys/osxaudio/meson.build:
	  macos: Move atdec from applemedia (-bad) to osxaudio (-good)
	  osxaudio has a few helper methods potentially useful in atdec (or future atenc), like GStreamer -> CoreAudio
	  channel mapping. Doesn't make sense to duplicate them in applemedia, and atdec is the only audio-oriented
	  element there anyway.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6223>

2024-03-11 18:13:37 +0100  Piotr Brzeziński <piotr@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix wrapping temporary memory in buffers
	  That memory can disappear at any moment, doesn't cost much to just copy those few bytes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6320>

2024-01-31 00:32:22 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Don't invoke close when stopping if we've started cleanup
	  When we're doing a state change from PLAYING to NULL, first we invoke
	  gst_rtspsrc_loop_send_cmd_and_wait (..., CMD_CLOSE, ...) during
	  PAUSED_TO_READY which will schedule a TEARDOWN to happen async on the
	  task thread.
	  The task thread will call gst_rtspsrc_close(), which will send the
	  TEARDOWN and once it's complete, it will call gst_rtspsrc_cleanup()
	  without taking any locks, which frees src->streams.
	  At the same time however, the state change in the app thread will
	  progress further and in READY_TO_NULL it will call gst_rtspsrc_stop()
	  which calls gst_rtspsrc_close() a second time, which accesses
	  src->streams (without a lock again), which leads to simultaneous
	  access of src->streams, and a segfault.
	  So the state change and the cleanup are racing, but they almost always
	  complete sequentially. Either the cleanup sets src->streams to NULL or
	  _stop() completes first. Very rarely, _stop() can start while
	  src->streams is being freed in a for loop. That causes the segfault.
	  This is unlocked access is unfixable with more locking, it just leads
	  to deadlocks. This pattern has been observed in rtspsrc a lot: state
	  changes and cleanup in the element are unfixably racy, and that
	  foundational issue is being addressed separately via a rewrite.
	  The bandage fix here is to prevent gst_rtspsrc_stop() from accessing
	  src->streams after it has already been freed by setting src->state to
	  INVALID.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6302>

2024-03-07 17:36:33 +0100  François Laignel <francois@centricular.com>

	* gst/rtpmanager/gstrtpptdemux.c:
	  webrtc: add all SSRC attributes getting CAPS for a PT
	  The transport stream only returned the CAPS for the first matching PT entry
	  from the `ptmap`. Other SSRC with the same PT where not included. For a stream
	  which bundled multiple audio streams for instance, only the first SSRC was
	  knowed to the SSRC demux and downstream elements.
	  This commit adds all the `ssrc-` attributes from the matching PT entries.
	  The RTP jitter buffer can now find the CNAME corresponding its SSRC even if it
	  was not the first to be registered for a particular PT.
	  The RTP PT demux removes `ssrc-*` attributes cooresponding to other SSRCs
	  before pushing SSRC specific CAPS to downstream elements.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6119>

2024-03-07 16:17:41 +0100  Michael Tretter <m.tretter@pengutronix.de>

	* meson_options.txt:
	  meson: Fix description in qt options
	  The qt-x11 description contains a copy/paste error from the qt-wayland option.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6292>

2024-02-16 18:11:07 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/rtp/gstrtpgstpay.c:
	  rtpgstpay: flush on EOS
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5173>

2023-08-11 13:06:24 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtp/gstrtpgstpay.c:
	* gst/rtp/gstrtpgstpay.h:
	  rtpgstpay: Delay pushing of event packets until the next buffer
	  And also re-timestamp them with the current buffer's PTS.
	  Not doing so keeps the timestamps of event packets as
	  GST_CLOCK_TIME_NONE or the timestamp of the previous buffer, both of
	  which are bogus.
	  Making sure that (especially) the first packet has a valid timestamp
	  allows putting e.g. the NTP timestamp RTP header extension on it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5173>

2024-02-26 19:17:27 -0600  Elizabeth Figura <zfigura@codeweavers.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Do not set channel-mask to zero
	  Leave it uninitialized, so that the downstream decoder will initialize it appropriately. Setting it to zero is wrong.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6225>

2024-03-01 02:44:57 +1100  Jan Schmidt <jan@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Parse Speed/Scale before Range in responses
	  Parse the speed and scale in the server's response
	  *before* the range, so that the range start/stop
	  are swapped (or not swapped) correctly based
	  on the server's actual chosen values. Otherwise,
	  the old rate from the segment is used - what the
	  last seek asked for, but not necessarily what
	  the server chooses.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6248>

2024-02-29 12:06:25 +1100  Jan Schmidt <jan@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Handle queries and events with no manager
	  When doing direct output with no session manager, we still
	  want to respond to queries and events from downstream, so
	  install the handlers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6248>

2024-02-29 11:14:47 +1100  Jan Schmidt <jan@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: return NO_PREROLL on PLAYING->PAUSED too
	  When transitioning back to PAUSED and rtspsrc is live, return
	  NO_PREROLL so the pipeline knows to skip preroll here too.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6248>

2024-02-24 11:07:26 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Consider 503 Service Not Available when handling broken control urls
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6213>

2024-03-05 12:58:57 +0000  Tim-Philipp Müller <tim@centricular.com>

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

=== release 1.24.0 ===

2024-03-04 23:51:42 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* README.md:
	* RELEASE:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.24.0

2024-02-27 14:22:58 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Increase rank to PRIMARY for autoplug purposes
	  This affects autoplug by gst_element_make_from_uri() in, for example,
	  uridecodebin. The element should've already been PRIMARY rank, but it
	  was NONE because gst_element_make_from_uri() doesn't ignore NONE rank
	  elements when searching for element factories, unlike decodebin.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/502
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6226>

2024-02-26 09:27:40 +0100  Edward Hervey <edward@centricular.com>

	* README.md:
	* RELEASE:
	  docs: Use Discourse and Matrix as prefered communication channels
	  Part of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6220

2024-02-22 20:35:28 +0900  Seungha Yang <seungha@centricular.com>

	* ext/jpeg/gstjpegdec.c:
	  jpegdec: Fix progressive/interlaced detection
	  If input height and parsed one are identical, do not consider it as interlaced
	  Fixing below pipeline:
	  gst-launch-1.0 videotestsrc ! video/x-raw,format=I420,width=640,height=10 \
	  ! jpegenc ! jpegparse ! jpegdec ! videoconvert ! autovideosink
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6181>

2024-02-26 23:14:54 +0900  Seungha Yang <seungha@centricular.com>

	* ext/jpeg/gstjpegdec.c:
	  jpegdec: Remove trailing white space
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6181>

=== release 1.23.90 ===

2024-02-23 18:20:11 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.23.90

2024-02-23 11:45:50 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/soup/meson.build:
	* meson_options.txt:
	  soup: Re-add soup-lookup-dep option
	  It's still useful on Linux since it ensures that the tests are going
	  to be built, since they use the same dep lookup as the plugin now.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6197>

2024-02-21 19:13:45 +1100  Matthew Waters <matthew@centricular.com>

	* tests/examples/qt/qmlsink-multisink/main.cpp:
	  examples/qmlsinnk-multisink: allow running with leaks tracer
	  Include a gst_deinit() after the qml engine has been destroyed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6160>

2024-02-21 19:11:59 +1100  Matthew Waters <matthew@centricular.com>

	* tests/examples/qt/qmlsink-multisink/videoitem/videoitem.cpp:
	  examples/qml: fix some leaks in the multisink example
	  A GstPad was being leaked and possibly the qmlglsink element depending
	  on if Qt runs the scenegraph thread again when destroying the example
	  video item.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6160>

2024-02-21 19:09:20 +1100  Matthew Waters <matthew@centricular.com>

	* ext/qt/qtitem.cc:
	* ext/qt6/qt6glitem.cc:
	  qml, qml6: Fix leak of QSGMaterial/Geometry (and therefore a possible GstBuffer)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6160>

2024-02-07 15:04:53 +1100  Matthew Waters <matthew@centricular.com>

	* ext/qt6/gstqsg6material.cc:
	  qml6: fix a leak of the wrapped QSGTextures
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6160>

2024-02-21 19:21:57 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtphdrext-clientaudiolevel.c:
	  rtphdrext-clientaudiolevel: Fix typo in documentation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6175>

2024-02-21 13:45:47 +0100  Arnaud Vrac <avrac@freebox.fr>

	* ext/adaptivedemux2/meson.build:
	  adaptivedemux2: fix build with recent meson
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6168>

2024-02-20 11:55:25 +0000  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtppassthroughpay.c:
	  rtppassthroughpay: fix critical in gst-inspect
	  gst_segment_to_running_time() will fail noisily
	  if the segment has not been initialised yet.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6151>

2024-02-21 02:30:11 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemuxelement.c:
	* ext/adaptivedemux2/meson.build:
	* ext/soup/gstsoupelement.c:
	* ext/soup/gstsouphttpsrc.c:
	* ext/soup/gstsouploader.c:
	* ext/soup/gstsouploader.h:
	* ext/soup/gstsouputils.h:
	* ext/soup/meson.build:
	* meson_options.txt:
	* tests/check/meson.build:
	  soup: Link to libsoup in all cases on non-Linux
	  We have unsolvable issues on macOS because of this, and the feature
	  was added specifically for issues that occur on Linux distros since
	  they ship both libsoup 2.4 and 3.0.
	  Everyone else should just pick one and use it, since you cannot mix
	  the two in a single process anyway.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1171
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6156>

2024-02-17 23:33:26 +1100  Jan Schmidt <jan@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Reset combined flows after a seek before restarting
	  After a flushing seek, rtspsrc doesn't reset the last_ret value for
	  streams, so might immediately shut down again when it resumes pushing
	  buffers to pads due to a cached `GST_FLOW_FLUSHING` result
	  Prevent a stored flushing value from immediately stopping
	  playback again by resetting pad flows before (re)starting
	  playback.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6137>

2023-11-29 17:43:30 +0200  Maksym Khomenko <maksym.khomenko@skelia.partners>

	* sys/osxaudio/gstosxcoreaudiocommon.c:
	  osxaudio: add mapping for top/left/right surround channels
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5731>

2023-11-29 17:40:52 +0200  Maksym Khomenko <maksym.khomenko@skelia.partners>

	* sys/osxaudio/gstosxcoreaudiocommon.c:
	  osxaudio: correct mapping for left/right surround
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5731>

2024-02-12 09:55:24 +0100  Marc Leeman <m.leeman@televic.com>

	* ext/qt6/meson.build:
	  qt6: search in /usr/lib/qt6/bin/ for qsb
	  In Debian and possibly other distributions, qsb (qt6-shader-baker) is
	  not in the default path, but in a QT6 specific path. Search there too
	  Applied changes from Nirbheek
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6095>

2023-09-17 18:48:13 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/isomp4/gstrtpxqtdepay.c:
	  rtpxqtdepay: Enabled header extension aggregation
	  Because this depayloader may build several output buffers within one
	  process run we push them all into a GstBufferList and push them out at
	  once to make sure that each buffer gets notified about each header
	  extension.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-10 19:06:35 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtpmp4gdepay.c:
	* gst/rtp/gstrtpmp4gdepay.h:
	  rtpmp4gdepay: Enabled header extension aggregation
	  Because this depayloader may build several output buffers within one
	  process run we push them all into a GstBufferList and push them out at
	  once to make sure that each buffer gets notified about each header
	  extension.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-10 19:06:10 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtpsbcdepay.c:
	  rtpsbcdepay: Enabled header extension aggregation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-10 19:05:11 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtpvorbisdepay.c:
	  rtpvorbisdepay: Enabled header extension aggregation
	  Because this depayloader may build several output buffers within one
	  process run we push them all into a GstBufferList and push them out at
	  once to make sure that each buffer gets notified about each header
	  extension.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-10 19:04:00 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtpmp4vdepay.c:
	  rtpmp4vdepay: Enabled header extension aggregation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-04 17:33:52 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtptheoradepay.c:
	  rtptheoradepay: Enabled header extension aggregation
	  Because this depayloader may build several output buffers within one
	  process run we push them all into a GstBufferList and push them out at
	  once to make sure that each buffer gets notified about each header
	  extension.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-04 17:33:34 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtpsv3vdepay.c:
	  rtpsv3vdepay: Enabled header extension aggregation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-04 17:31:57 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtpmp4adepay.c:
	  rtpmp4adepay: Enabled header extension aggregation
	  Because this depayloader may build several output buffers within one process
	  run we push them all into a GstBufferList and push them out at once to
	  make sure that each buffer gets notified about each header extension.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-04 17:31:41 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtpklvdepay.c:
	  rtpklvdepay: Enabled header extension aggregation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-04 17:31:20 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtpjpegdepay.c:
	  rtpjpegdepay: Enabled header extension aggregation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-04 17:30:48 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtpj2kdepay.c:
	  rtpj2kdepay: Enabled header extension aggregation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-04 17:30:31 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtph263pdepay.c:
	  rtph263pdepay: Enabled header extension aggregation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-04 17:29:32 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtph263depay.c:
	  rtph263depay: Enabled header extensions aggregation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2023-09-04 17:28:46 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtph261depay.c:
	  rtph261depay: Enabled header extension aggregation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5378>

2014-06-18 14:27:22 +0200  Priit Laes <plaes@plaes.org>

	* docs/gst_plugins_cache.json:
	* ext/libcaca/gstcacasink.c:
	* ext/libcaca/gstcacasink.h:
	  cacasink: add driver selection support from the pipeline
	  https://bugzilla.gnome.org/show_bug.cgi?id=599018
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5491>

2024-02-15 16:38:53 +0000  Tim-Philipp Müller <tim@centricular.com>

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

=== release 1.23.2 ===

2024-02-15 15:37:17 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.23.2

2024-02-14 15:49:43 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtp/dboolhuff.LICENSE:
	* gst/rtp/dboolhuff.c:
	* gst/rtp/dboolhuff.h:
	* gst/rtp/gstrtpvp8pay.c:
	* gst/rtp/meson.build:
	  Revert "rtpvp8pay: Use GstBitReader instead of dboolhuff implementation from libvpx"
	  This reverts commit b730e7a1b28ce4bcea90fbff7c5293fa2c0a76b2.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3300
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6116>

2024-02-13 18:57:05 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/rtpmanager/gstrtpbin.c:
	  webrtcbin, rtpbin: check before setting properties on jitterbuffer
	  In rtpbin we already systematically check for all property names
	  except latency, correct that.
	  In webrtcbin we need to check before trying to use the do-retransmission
	  property.
	  This is useful for the case where an element like identity gets passed
	  to rtpbin's request-jitterbuffer property, when the application wants
	  to use webrtcbin in an SFU situation, with no reordering and no added
	  latency
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6112>

2024-02-13 17:43:15 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpfunnel.c:
	  rtpfunnel: Handle NTP-64 RTP header extension in caps similar to TWCC
	  This is another header extension that is handled by rtpsession and needs
	  to be preserved in the caps that are created by rtpfunnel.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6109>

2024-02-14 00:37:38 +0000  Tim-Philipp Müller <tim@centricular.com>

	* po/lv.po:
	* po/ro.po:
	* po/tr.po:
	  gst-plugins-good: update translations
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6113>

2024-02-13 18:07:52 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpfunnel.c:
	  rtpfunnel: Also write TWCC RTP header extension into buffer list buffers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6110>

2024-02-03 11:54:41 +0000  Philippe Normand <philn@igalia.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	  dashdemux2: Basic support for container-specific-track-id tag
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6041>

2024-02-03 11:53:36 +0000  Philippe Normand <philn@igalia.com>

	* gst/matroska/matroska-demux.c:
	  matroska-demux: Basic support for container-specific-track-id tag
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6041>

2024-02-03 11:52:42 +0000  Philippe Normand <philn@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Basic support for container-specific-track-id tag
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6041>

2024-02-09 11:13:16 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt6/meson.build:
	  meson: Don't use fs.copyfile() for qt6 resources
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3285
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6077>

2023-12-01 14:49:37 +0100  Ignazio Pillai <ignazp@amazon.com>

	* docs/gst_plugins_cache.json:
	* gst/cutter/gstcutter.c:
	* gst/cutter/gstcutter.h:
	  cutter: add audio-level-meta
	  Set GstAudioLevelMeta on buffers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5771>

2024-02-05 23:04:45 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt6/meson.build:
	  meson: Fix several warnings in the build
	  Deprecations, incorrect options, etc.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6058>

2024-02-05 22:39:29 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* tests/check/meson.build:
	  good/tests: Don't enable soup tests if soup is disabled
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3268
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6058>

2024-02-06 18:09:02 +0000  Tim-Philipp Müller <tim@centricular.com>

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

=== release 1.23.1 ===

2024-02-06 16:37:19 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.23.1

2024-02-05 09:27:54 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson_options.txt:
	  meson_options.txt: fix meson warning about default bool values being a string

2024-02-02 23:04:29 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt/meson.build:
	* ext/qt6/meson.build:
	  meson: Print a useful error message when qt windowing is not found
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6040>

2023-08-24 15:18:05 +0900  Hou Qi <qi.hou@nxp.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2/m3u8: use GstClockTimeDiff to do timestamp comparison
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5234>

2023-12-13 20:43:14 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtp/dboolhuff.LICENSE:
	* gst/rtp/dboolhuff.c:
	* gst/rtp/dboolhuff.h:
	* gst/rtp/gstrtpvp8pay.c:
	* gst/rtp/meson.build:
	  rtpvp8pay: Use GstBitReader instead of dboolhuff implementation from libvpx
	  All compressed frame header values that are read as part of the
	  payloader are encoded as bits with 50:50 probability, and as such are
	  just the plain bits as they are.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5810>

2023-08-22 16:11:06 -0400  Daniel Morin <daniel.morin@collabora.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: update rtsp url on redirect
	  - If a redirect took place on a GET when rtsp is tunneled we update the
	  rtsp url too.
	  - log source and final destination on redirect
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5222>

2024-01-29 16:10:21 -0300  Thibault Saunier <tsaunier@igalia.com>

	* gst/matroska/matroska-read-common.c:
	  matroskademux: Lower verbosity of some often happenning warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6011>

2024-01-29 16:10:06 -0300  Thibault Saunier <tsaunier@igalia.com>

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux_types.c:
	  qtdemux: Lower verbosity of some often happenning warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6011>

2024-01-28 11:15:01 +0000  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  meson: bump Meson requirement to >= 1.1 for all modules
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6002>

2024-01-25 20:13:51 +0100  Jonas Kvinge <jonas@jkvinge.net>

	* ext/taglib/meson.build:
	  meson: Set cpp_std to c++17 for TagLib
	  TagLib uses C++17 as of version 2.0.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5995>

2024-01-02 16:18:05 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* ext/vpx/gstvpxenc.c:
	  vpxenc: fix warning about decreasing PTS on first frame
	  The fields used to track this state should be initialized when
	  codec->inited is FALSE on set_format, not TRUE
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3200
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5876>

2024-01-17 15:59:15 +0100  Jonas K Danielsson <jonas.danielsson@spiideo.com>

	* gst/multifile/gstsplitutils.c:
	  splitmuxsrc: Use natural ordering to find files
	  Today when using the `splitmuxsrc` on a collection of files named as:
	  ```
	  item0.mkv
	  item1.mkv
	  item2.mkv
	  [...]
	  item10.mkv
	  item11.mkv
	  [...]
	  ```
	  You will get a continuous stream made in the order of:
	  ```
	  item0.mkv -> item1.mkv -> item10.mkv -> item11.mkv -> [...]
	  ```
	  You can fix this by having smarter names of the items:
	  ```
	  item000.mkv
	  item001.mkv
	  item002.mkv
	  [...]
	  item010.mkv
	  item011.mkv
	  [...]
	  ```
	  Will get you:
	  ```
	  item000.mkv -> item001.mkv -> item003.mkv -> item004.mkv -> [...]
	  ```
	  But, we could also "fix" the former case by using natural ordering when
	  comparing the files in gstsplitutils.c.
	  Fixes #2523
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4491>

2024-01-22 17:01:19 -0500  Dan Searles <Dan.Searles@garmin.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: fix ttl setting for udpsink[1]
	  Fix ttl setting being incorrectly applied to udpsink[0] rather
	  than to udpsink[1].
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5955>

2024-01-22 12:18:25 -0500  Dan Searles <Dan.Searles@garmin.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: set multicast-iface on udpsinks
	  Copy rtspsrc property multicast-iface to its udpsinks to
	  allow messages over those sinks back to the server to work (and
	  prevent 'Network unreachable' warnings).
	  Closes: #3239
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5955>

2024-01-18 16:54:22 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/flv/gstflvdemux.c:
	  flvdemux: don't re-use segment from one stream if the other has buffer earlier
	  Fix first audio buffers being out of segment because the audio stream
	  is starting earlier than the video one which was the first demuxed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5940>

2024-01-18 16:50:20 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/flv/gstflvdemux.c:
	  flvdemux: factor out ensure_new_segment()
	  - Use the pad instead of the element for logs, so it's clearer on which
	  pad this segment will be pushed.
	  - One copy was checking for invalid seq num, the other was not.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5940>

2024-01-11 14:29:49 +0900  Hou Qi <qi.hou@nxp.com>

	* gst/rtpmanager/rtpjitterbuffer.c:
	  rtpjitterbuffer: Fix build warning in rtp_jitter_buffer_append_query()
	  This is to fix build warnings when using [-Wmaybe-uninitialized]
	  ../gst/rtpmanager/rtpjitterbuffer.c:1237:10: warning: 'head' may be used uninitialized [-Wmaybe-uninitialized]
	  1237 |   return head;
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5907>

2024-01-12 12:51:27 +0000  Philippe Normand <philn@igalia.com>

	* ext/vpx/gstvpxdec.c:
	  vpxdec: Use appropriate domain and code for decoding errors
	  STREAM domain and DECODE error is commonly used in other decoders. ENCODE is for
	  encoders.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5916>

2024-01-10 19:10:55 -0500  Olivier Crête <olivier.crete@collabora.com>

	* ext/soup/gstsouploader.c:
	  soup: Avoid using GUri before GLib 2.66
	  Let's use gpointer for now
	  Fixes: #3169
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5906>

2024-01-08 11:04:22 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/rtpsession.c:
	* gst/rtpmanager/rtpsession.h:
	  rtpsession: Remove some unused fields
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5899>

2023-11-16 11:42:27 +0530  Sanchayan Maity <sanchayan@asymptotic.io>

	* gst/rtpmanager/gstrtphdrext-clientaudiolevel.c:
	  rtphdrext-clientaudiolevel: Fix level value being written by the extension
	  When level value is greater than 127, it was being clamped but this clamped
	  value was not the one being actually used. For level values greater than 127
	  this resulted in an incorrect value being used. As an example, a level value
	  of 187, after and'ed with 0x7F, it would result in 0x3B being reported as the
	  level value.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5893>

2023-12-23 11:03:51 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/vpx/plugin.c:
	  vpx: fix plugin description
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5864>

2023-12-22 12:56:33 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpsession.c:
	  rtpsession: Only warn once if configured latency needs to be known but isn't yet
	  Otherwise we would warn about this once for every single packet until
	  the LATENCY event is received.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5854>

2023-12-25 18:36:44 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtpvrawdepay.c:
	  rtpvrawdepay: only announce supported formats in sink template
	  For most video formats we currently just assume that they
	  have a depth of 8 bits, whilst advertising that we can
	  handle 8/10/12/16 bit depth.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5866>

2023-12-15 21:52:03 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtp/gstrtpvp8pay.c:
	  rtpvp8pay: Also set partition IDs in the packets if meta exists but without temporal_scalability
	  Encoders will add the meta to every single buffer, but we only cannot set
	  partition IDs properly when the meta has temporal_scalability set
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5814>

2023-12-19 13:57:04 +0200  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	  video-format: Fix format order once again
	  RGBA should be before RBGA. Both the Python script and the gstreamer-rs
	  tests agree on that, but somehow this is not caught by the CI.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5837>

2023-12-18 11:03:57 +0900  Chao Guo <chao.guo@nxp.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: clear old fds in poll when closing v4l2object
	  When reopening a v4l2 device, the v4l2object->poll will include some old fds,
	  which was assigned to this device before. If the pipeline opens multiple v4l2
	  devices, the old fd may been assigned to other v4l2 devices when reopening
	  devices.
	  This will cause the timing of the pipeline become confusing when polling devices,
	  leading functional abnormalities.
	  Therefore, when closing v4l2object, remove the old fds in poll to ensure that the
	  pipeline timing is normal.
	  Signed-off-by: Chao Guo <chao.guo@nxp.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5820>

2023-12-15 15:19:35 -0500  Arun Raghavan <arun@asymptotic.io>

	* gst/rtp/gstrtpchannels.c:
	  rtp: Fix incorrect RTP channel order lookup by name
	  The g_ascii_strcasecmp() logic is inverted, since it returns 0 on equality.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5815>

2023-12-11 10:49:39 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* docs/gst_plugins_cache.json:
	* ext/gtk/gstgtkglsink.c:
	  gtkglsink: template caps to only 2D & rectangle texture targets
	  Apparently external-oes is not supported by the plugin as texture target,
	  while DMABuf uploading prefers it because it's zero copy.
	  This patch enables DMABuf uploading and rendering by using either 2D or
	  rectangle texture targets.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5795>

2023-12-06 11:24:35 -0600  Olivier Crête <olivier.crete@collabora.com>

	* ext/adaptivedemux2/downloadhelper.c:
	* ext/soup/gstsouploader.c:
	* ext/soup/gstsouploader.h:
	* ext/soup/stub/soup.h:
	  adaptivedemux2: Parse cookies in downloadhelper
	  We need to parse any cookie headers, otherwise we end up
	  sending back attributes likes "Secure" and "httponly" which break
	  some servers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5776>

2023-12-09 13:15:38 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtp/gstrtpvp9pay.c:
	  rtpvp9pay: Don't include unused dboolhuff.h header
	  It's only used by the VP8 payloader.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5784>

2023-12-06 20:42:32 -0800  Xavier Claessens <xavier.claessens@collabora.com>

	* sys/v4l2/gstv4l2src.c:
	  v4l2src: Consider framerate during caps selection
	  This simplifies the way it picks the closest caps to preference and take into
	  consideration the framerate to avoid picking high resolution at 5fps or so.
	  Simply calculate a "distance" of caps A and B from the preference and put
	  closest first, sorting by framerate first.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5777>

2023-12-05 09:25:22 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/isomp4/qtdemux_tags.c:
	* meson.build:
	  qtdemux: fix bug report URL
	  Using PACKAGE_BUGREPORT as in other modules.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5762>

2023-11-28 11:43:53 -0300  Thibault Saunier <tsaunier@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Do not update `demux->offset` when droping data on EOS
	  The offset is updated right after and we were breaking it by updating it
	  twice.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5724>

2023-11-28 11:28:58 -0300  Thibault Saunier <tsaunier@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Do not mark stream as EOS only if all streams are EOS
	  The `GstFlowCombiner` is responsible for tracking the flow of each
	  stream and handle the overal flow return value. Without that, we
	  can end up with the following scenario:
	  - Audio+video stream
	  - Only the video stream is linked downstream
	  - The audio stream goes EOS, video doesn't yet
	  -> We update the Flow in the combiner with OK as all streams are not EOS
	  - Video goes EOS because downstream returned EOS
	  -> `qtdemux` returns `FLOW_OK` forever because the unlinked audio pad
	  has `last_flowret==FLOW_OK`
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5724>

2023-11-28 11:27:45 -0300  Thibault Saunier <tsaunier@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Determine EOS based on the stream segment
	  Depending on the stream segment might vary (because of edts for example)
	  leading to EOS being sent at the wrong time (too early for example).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5724>

2023-12-01 14:51:49 +0900  Hosang Lee <hosang10.lee@lge.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Don't overflow sample index
	  Don't reduce sample index if it is already at 0.
	  Assigning -1 to a guint32 variable causes unexpected behavior.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5743>

2023-12-01 15:05:41 +0900  Hosang Lee <hosang10.lee@lge.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix reverse playback for pcm audio stream
	  Some raw lpcm or adpcm may have larger sample sizes than the max
	  buffer size value set.
	  Trimming the buffer causes bogus size error on reverse playback.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5742>

2023-11-22 00:07:57 +0900  Seungha Yang <seungha@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: Add RBGA format
	  This new format is intended to be used by hardware decoders
	  where VUYA is only supported 4:4:4 decoding surface but
	  stream is encoded with GBR color space, HEVC and VP9 GBR streams
	  for example.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5703>

2023-11-24 15:43:15 +0000  Philippe Normand <philn@igalia.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	  dashdemux2: Fix a couple leaks and a use-after-move
	  The tags and caps were leaked for unknown streams, I'm not sure they'd be valid
	  in that case, but better safe than sorry.
	  The tags ownership is transfered when calling `gst_adaptive_demux_track_new()`
	  so unreffing those afterwards was a mistake.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5714>

2023-06-07 14:38:18 +0200  Robin Gustavsson <robin.gustavsson@spiideo.com>

	* gst/rtp/gstrtpklvdepay.c:
	* tests/check/elements/rtp-payloading.c:
	  rtpklvdepay: Recover after invalid fragmented KLV unit
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4816>

2023-11-13 15:51:44 +0200  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpjitterbuffer.c:
	* gst/rtpmanager/rtpjitterbuffer.c:
	* gst/rtpmanager/rtpjitterbuffer.h:
	  rtpjitterbuffer: Add new "rfc7273-reference-timestamp-meta-only" property
	  If this property is enabled then the jitterbuffer will do the normal PTS
	  calculations according to the configured mode instead of making use of
	  the RFC7273 media clock.
	  The timestamp calculated from the RFC7273 media clock will only be
	  stored in the reference timestamp meta, if addition of that meta is enabled.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5512>

2023-10-19 20:45:09 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpjitterbuffer.c:
	* gst/rtpmanager/rtpjitterbuffer.c:
	* gst/rtpmanager/rtpjitterbuffer.h:
	  rtpjitterbuffer: Add new rfc7273-use-system-clock property
	  When this property is used, it is assumed that the system clock is
	  synced close enough to the media clock used by an RFC7273 stream.
	  As long as both clocks are at most a few seconds from each other this
	  will give the correct results and avoids having to create an actual
	  network clock that has to sync first.
	  If the system clock is actually synchronized to the media clock then
	  everything will behave exactly the same, otherwise the reference
	  timestamp meta will be correct but the buffer timestamps will be off by
	  the difference between the two clocks.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5512>

2023-10-19 20:17:04 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/rtpjitterbuffer.c:
	  rtpjitterbuffer: Improve handling of media clocks
	  Do more checks for clock equality than just checking pointers. The same
	  NTP/PTP clock might be used as pipeline clock but a new instance, so
	  instead also check what clock they are synced to.
	  Also handling setting / resetting of the media clock and pipeline clock
	  correctly by resetting the media clock's state accordingly.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5512>

2023-06-29 15:20:29 +0200  Piotr Brzeziński <piotr@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Ignore raw audio streams when adjusting seek
	  Because we treat raw audio chunks/samples as keyframes, they were interfering
	  with seek time adjustment.
	  Became apparent when the accompanying video stream was I-frame only,
	  for example ProRes.
	  Since raw audio streams can be seeked freely, it's fine to just ignore them here,
	  giving priority to the real keyframes in the video stream.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4946>

2023-11-14 15:36:34 +0900  Dongyun Seo <dongyun.seo@lge.com>

	* gst/audioparsers/gstdcaparse.c:
	  dcaparse: keep upstream buffer meta
	  Some audio decoders cannot decode DTS stream if there is no
	  valid timestamp. So, keep upstream buffer meta.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5655>

2023-10-21 21:10:55 -0400  Olivier Crête <olivier.crete@collabora.com>

	* gst/rtp/gstrtpopusdepay.c:
	  rtpopusdepay: set resync flag
	  - Set re-sync flag on output buffer when rtp had the marker flag set.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5529>

2023-10-31 16:26:00 +0000  Philippe Normand <philn@igalia.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2-stream: Use gst_clear_object when releasing collection
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5606>

2023-10-09 09:11:47 +0000  Johan Adam Nilsson <johan.adam.nilsson@gmail.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: fix buffer leak with adtl tag
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3020
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5595>

2023-11-02 01:48:28 +0000  robert <robert.ayrapetyan@gmail.com>

	* sys/ximage/gstximagesrc.c:
	* sys/ximage/meson.build:
	  ximagesrc: fix xnavigation linking issue
	  Fixes #3083
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5589>

2023-11-02 00:03:28 +0900  Seungha Yang <seungha@centricular.com>

	* meson.build:
	  meson: Fix MSVC build with GST_DISABLE_GST_DEBUG
	  MSVC does not understand Wno-unused
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>

2023-11-02 13:17:15 +0200  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/mpg123/gstmpg123audiodec.c:
	  mpg123audiodec: Update rank from MARGINAL to PRIMARY
	  This is our primary MP3 decoder after mad got removed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5590>

2023-10-16 20:53:49 +0000  robert <robert.ayrapetyan@gmail.com>

	* sys/ximage/gstximagesrc.c:
	  ximagesrc: fix compile-time warning and XInitThreads()
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5493>

2023-10-24 18:20:34 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ext/libpng/gstpngenc.c:
	  pngenc: mark output frames as I-frames
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5546>

2023-10-24 18:12:44 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ext/libpng/gstpngenc.c:
	* ext/libpng/gstpngenc.h:
	  pngenc: output one frame only in snapshot mode
	  In snapshot mode pngenc should output exactly one frame
	  and then return FLOW_EOS to upstream. If upstream sends
	  more input frames before shutting down, it should keep
	  returning FLOW_EOS but not output any more encoded frames.
	  After a flushing seek it should output frames again though.
	  Fixes #3069.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5546>

2023-05-05 17:01:50 +0800  Shengqi Yu <shengqi.yu@mediatek.com>

	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2object: scale the encoded sizeimage based on maximum resolution
	  The default 2MB ENCODED_BUFFER_SIZE can't support some 4K video playback. We now
	  detect the driver reported maximum resolution and choose an appropriate
	  default bitstream size accordingly. For 4K video these results in around 4MB
	  buffer instead of 2MB.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4549>

2023-10-20 08:14:40 +0200  Matthias Fuchs <matthias1.fuchs@zeiss.com>

	* ext/qt6/gstqml6glsrc.cc:
	  qml6glsrc: sync on the streaming thread
	  After rendering a QML scene the qml6glsrc element copies the contents of
	  the scene to a GStreamer buffer. This happens on the Qt render thread.
	  Then it attaches a sync point to the destination buffer. This sync point
	  must be awaited by other threads which use the buffer later on. The
	  current implementation relies on the downstream elements to wait for the
	  sync point. However, there are situation where this does not work. The
	  GstBaseTransform e.g. copies the buffer metadata (which overwrites the
	  sync point without waiting for it) *before* waiting for the sync point.
	  This commit waits for the sync point inside the qml6glsrc element before
	  sending it downstream. The wait command is issued on the streaming
	  thread with the pipeline OpenGL context, i.e. it will synchronize with
	  the GStreamer OpenGL thread.
	  This is a port of the original fix for the qmlglsrc element.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5519>

2022-04-06 12:56:30 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  meson: Bump GLib requirement to >= 2.64
	  This includes fixes to make GstBus watches non-racy.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2126>

2023-10-21 18:22:38 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/flac/gstflacenc.c:
	  flacenc: signal in output caps that the output is framed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5524>

2023-10-12 17:23:00 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtpac3depay.c:
	  rtpac3depay: should output audio/x-ac3 not audio/ac3
	  audio/x-ac3 is the canonical media format in GStreamer.
	  audio/ac3 is sometimes accepted as input (e.g. in rtpac3pay
	  or ac3parse), but shouldn't be output.
	  Fixes #3038.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5472>

2023-10-17 15:24:22 +0200  Matthias Fuchs <matthias1.fuchs@zeiss.com>

	* ext/qt/gstqtsrc.cc:
	  qmlglsrc: sync on the streaming thread
	  After rendering a QML scene the qmlglsrc element copies the contents of
	  the scene to a GStreamer buffer. This happens on the Qt render thread.
	  Then it attaches a sync point to the destination buffer. This sync point
	  must be awaited by other threads which use the buffer later on. The
	  current implementation relies on the downstream elements to wait for the
	  sync point. However, there are situation where this does not work. The
	  GstBaseTransform e.g. copies the buffer metadata (which overwrites the
	  sync point without waiting for it) *before* waiting for the sync point.
	  This commit waits for the sync point inside the qmlglsrc element before
	  sending it downstream. The wait command is issued on the streaming
	  thread with the pipeline OpenGL context, i.e. it will synchronize with
	  the GStreamer OpenGL thread.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5506>

2023-09-03 18:47:24 +0000  Robert Ayrapetyan <robert.ayrapetyan@gmail.com>

	* docs/gst_plugins_cache.json:
	* meson_options.txt:
	* sys/ximage/gst-ximage-navigation.c:
	* sys/ximage/gst-ximage-navigation.h:
	* sys/ximage/gstximagesrc.c:
	* sys/ximage/gstximagesrc.h:
	* sys/ximage/meson.build:
	  ximagesrc: add navigation support
	  Add a basic navigation support:
	  - mouse events (buttons/move)
	  - keyboard events (keys)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5273>

2023-09-27 13:41:33 +0200  Jordan Petridis <jordan@centricular.com>

	* ext/qt6/gstqsg6material.cc:
	  qt6: if def newer symbosl in QRhiTexture
	  version 6.4 added QRhiTexture::RGB10A2 but we depend on an older
	  version of qt in meson, and we can keep compiling with older Qt6
	  versions still.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5475>

2023-10-12 16:05:18 +0200  Stéphane Cerveau <scerveau@igalia.com>

	* gst/multifile/gstimagesequencesrc.c:
	  imagesequencesrc: fix regular image deadlock
	  With one regular image file path provided (without %05d),
	  the element was stuck in a dead loop counting the frames:
	  gst_image_sequence_src_count_frames
	  This allows to display any image file out of the element
	  for a given number of buffers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5471>

2023-10-12 00:27:11 +1100  Matthew Waters <matthew@centricular.com>

	* ext/qt6/meson.build:
	  build/qt6: properly error/skip build if the qsb tool is not found
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3032
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5459>

2023-09-05 17:56:49 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: unconditionally activate the OUTPUT pool
	  If the v4l2videoenc receives an QUERY_ALLOCATION, it must not propose a
	  currently used pool, because it cannot be sure that the allocation query came
	  from exactly the same upstream element. The QUERY_ALLOCATION will not contain
	  the internal OUTPUT pool.
	  The upstream element (the basesrc) detects that the newly proposed pool differs
	  from the old pool. It deactivates the old pool and switches to the new pool.
	  If there was a format change, a new OUTPUT buffer pool will be allocated in
	  gst_v4l2_object_set_format_full() and the CAPTURE task will be stopped to switch
	  the format. If there hasn't been a format change,
	  gst_v4l2_object_set_format_full() will not be called. The old pool will be kept
	  and reused.
	  Without a format change, the processing task continues running.
	  This leads to the situation that the processing task is running, but the OUTPUT
	  buffer pool (the old pool) is deactivated. Therefore, the encoder is not able to
	  get buffers from the OUTPUT pool and encoding cannot continue.
	  This situation can be triggered by sending a RECONFIGURE event without a format
	  change.
	  Resolve this situation by ensuring that the OUTPUT buffer pool is always
	  activated when frames arrive at the encoder.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4235>

2023-10-10 14:53:08 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: fix activation of internal pool
	  Fix the buffer pool activation if the driver does not support VIDIOC_CREATE_BUFS
	  the same way as it was fixed for the v4l2videodec.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4235>

2023-09-05 17:54:31 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: rename OUTPUT pool to opool
	  There is a CAPTURE pool in the same function. While the CAPTURE pool is called
	  cpool, using pool for the OUTPUT pool is confusing.
	  Using opool for the OUTPUT pool makes it more obvious, which pool is used.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4235>

2023-10-11 14:47:33 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/flv/gstflvmux.c:
	  flvmux: set the src segment position as running time
	  We were already converting the pad last timestamp to running time but
	  not the segment position.
	  This segment position is used by gst_aggregator_simple_get_next_time()
	  to compute the waiting time when aggregating.
	  Those waiting times were wrong in my live pipeline using the system
	  clock, resulting in the aggregator to never wait at all.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5460>

2023-10-11 09:36:11 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: Fix tiled formats stride conversion
	  While adding arbitrary tile support, a round up operation was badly
	  converter. This caused the Y component of the stride to be 0. This
	  eventually lead to a crash in glupoad preceded by the following
	  assertion.
	  gst_gl_buffer_allocation_params_new: assertion 'alloc_size > 0' failed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5458>

2023-10-04 11:09:37 -0300  Thibault Saunier <tsaunier@igalia.com>

	* ext/adaptivedemux2/downloadhelper.c:
	* ext/adaptivedemux2/downloadrequest.c:
	* ext/adaptivedemux2/downloadrequest.h:
	  adaptivedemux2: Do not submit_transfer when cancelled
	  There is a race condition where transfer has not been submitted yet while the
	  request is cancelled which leads to the transfer state going back to
	  `DOWNLOAD_REQUEST_STATE_OPEN` and the user of the request to get signalled about
	  its completion (and the task actually happening after it was cancelled) leading
	  to assertions and misbehaviours.
	  To ensure that this race can't happen, we start differentiating between the
	  UNSENT and CANCELLED states as in the normal case, when entering `submit_request`
	  the state is UNSENT and at that point we need to know that it is not because
	  the request has been cancelled.
	  In practice this case lead to an assertion in
	  `gst_adaptive_demux2_stream_begin_download_uri` because in a previous call to
	  `gst_adaptive_demux2_stream_stop_default` we cancelled the previous request and
	  setup a new one while it had not been submitted yet and then got a `on_download_complete`
	  callback called from that previous cancelled request and then we tried to do
	  `download_request_set_uri` on a request that was still `in_use`, leading to
	  something like:
	  ```
	  #0: 0x0000000186655ec8 g_assert (request->in_use == FALSE)assert.c:0
	  #1: 0x00000001127236b8 libgstadaptivedemux2.dylib`download_request_set_uri(request=0x000060000017cc00, uri="https://XXX/chunk-stream1-00002.webm", range_start=0, range_end=-1) at downloadrequest.c:361
	  #2: 0x000000011271cee8 libgstadaptivedemux2.dylib`gst_adaptive_demux2_stream_begin_download_uri(stream=0x00000001330f1800, uri="https://XXX/chunk-stream1-00002.webm", start=0, end=-1) at gstadaptivedemux-stream.c:1447
	  #3: 0x0000000112719898 libgstadaptivedemux2.dylib`gst_adaptive_demux2_stream_load_a_fragment [inlined] gst_adaptive_demux2_stream_download_fragment(stream=0x00000001330f1800) at gstadaptivedemux-stream.c:0
	  #4: 0x00000001127197f8 libgstadaptivedemux2.dylib`gst_adaptive_demux2_stream_load_a_fragment(stream=0x00000001330f1800) at gstadaptivedemux-stream.c:1969
	  #5: 0x000000011271c2a4 libgstadaptivedemux2.dylib`gst_adaptive_demux2_stream_next_download(stream=0x00000001330f1800) at gstadaptivedemux-stream.c:2112
	  ```
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5435>

2023-10-03 15:05:15 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* docs/gst_plugins_cache.json:
	  doc: Update plugin cache for added DMA_DRM format
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5386>

2023-09-27 13:55:33 +0200  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst/deinterlace/gstdeinterlace.c:
	  video-filters: Fix passthrough with ANY caps feature
	  With the support for DRM modifiers, passthrough caps must now include DMA_DRM
	  format, otherwise pipeline using thhese filters unconditionally may fail
	  to negotiate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5386>

2023-09-29 15:47:48 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	  docs: Update plugins caches
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5412>

2023-09-28 18:03:31 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/flac/gstflacenc.c:
	  flacenc: Correctly handle up to 255 cue entries
	  The counter was using a signed 8 bit integer, which was overflowing
	  after 127 entries. That was then passed as an unsigned 32 bit integer to
	  libflac, which caused it to be converted to a huge unsigned number.
	  That then caused an invalid memory access inside libflac.
	  As a bonus, signed integer overflow is undefined behaviour.
	  Instead, use an unsigned 8 bit integer. Once this overflows the existing
	  code already catches it and stops adding the cue. While FLAC__metadata_object_cuesheet_insert_track()
	  takes an unsigned 32 bit integer for the track number, FLAC__StreamMetadata_CueSheet_Track is
	  limiting it to an unsigned 8 bit integer.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2921
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5420>

2023-09-28 16:59:14 +0200  Dominique Leroux <dominique@unity3d.com>

	* sys/osxaudio/gstosxaudio.c:
	* sys/osxaudio/gstosxaudiodeviceprovider.c:
	* sys/osxaudio/gstosxaudiodeviceprovider.h:
	* sys/osxaudio/gstosxaudiosink.c:
	* sys/osxaudio/gstosxaudiosink.h:
	* sys/osxaudio/gstosxaudiosrc.c:
	* sys/osxaudio/gstosxaudiosrc.h:
	  osxaudio: add individual elements registration for gst-full compatibility
	  Found that osxaudiosink could not be added standalone in gst-full build
	  using
	  -Dgst-full-elements=osxaudio:osxaudiosink because element registration
	  was
	  done at the plugin level. Now src/sink elements and deviceprovider have
	  their
	  individual registration.
	  Copied/adapted from the alsa plugin.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5419>

2023-09-27 15:16:43 +0200  Stéphane Cerveau <scerveau@igalia.com>

	* ext/adaptivedemux2/dash/gstmpd-prelude.h:
	* ext/adaptivedemux2/dash/gstmpdhelper.c:
	* ext/adaptivedemux2/dash/gstmpdhelper.h:
	  mpdhelper: remove useless code
	  The audio/video codec name from mime type should be retrieved from
	  gst_codec_utils_caps_get_mime_codec instead
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5404>

2023-09-27 08:46:35 -0400  Xavier Claessens <xavier.claessens@collabora.com>

	* ext/vpx/gstvp8enc.c:
	* ext/vpx/gstvpxelement.c:
	* gst/rtp/gstrtpvp8pay.c:
	* tests/check/elements/rtpvp8.c:
	* tests/check/elements/vp8enc.c:
	  GstCustomMeta: Use simplified API where possible
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5385>

2023-09-26 16:48:10 +0000  Florian Zwoch <fzwoch@gmail.com>

	* ext/adaptivedemux2/downloadhelper.c:
	  adaptivedemux2: Call GTasks's return functions for blocking tasks
	  Gio/Task states the following:
	  If a GTask has been constructed and its callback set, it is an error to
	  not call g_task_return_*() on it. GLib will warn at runtime if this
	  happens (since 2.76).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5395>

2023-09-27 08:48:03 +0200  Albert Sjölund <alberts@axis.com>

	* ext/soup/gstsouphttpsrc.c:
	  souphttpsrc: Chain finalize call to parent
	  GstSoupSession finalize does not chain parent finalize,
	  causing it to leak memory, shown under g freeze notify.
	  In finalize method, ensure all branches call to parent
	  finalize.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5398>

2023-09-18 08:40:07 +0200  Daniel Moberg <daniemob@axis.com>

	* docs/gst_plugins_cache.json:
	* gst/rtsp/gstrtspsrc.c:
	* gst/rtsp/gstrtspsrc.h:
	  rtspsrc: Property for adding custom http request headers
	  This commit adds a property which enables adding custom http request headers to
	  the rtspsrc element. Added headers will be appended to http requests
	  made during http tunneling.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5268>

2023-09-15 09:12:25 +0200  Stijn Last <stijn.last@barco.com>

	* gst/deinterlace/tvtime/greedy.c:
	  deinterlace: greedy, improve quality
	  scanlines->m1 = same line of the previous field
	  scanlines->t0 = line above of the current field
	  scanlines->b0 = line below of the current field
	  scanlines->mp = same line of the next field
	  Deinterlacing a field weaved frame:
	  When deinterlacing the top field, the next bottom field is available
	  (part of the same frame). but when deinterlacing the bottom field,
	  the next top field (part of the next frame) is not available and
	  scanlines->mp equals NULL.
	  In this case it's better to use greedy algorithm using the prevous field
	  (twice) rather then linear interpolation of the current field.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5331>

2023-09-22 16:57:28 +0900  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2videodec: Correctly free caps to avoid memory leak
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5379>

2023-09-21 19:50:31 +0900  Seungha Yang <seungha@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: Add GBR 16bits formats
	  Adding 16bits planar RGB formats
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5375>

2023-09-14 01:35:10 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/rtpsource.c:
	  rtpsource: Don't store invalid running times and calculate with it
	  If we end up with GST_CLOCK_TIME_NONE as running time for an RTP packet
	  then this can't be used for bitrate estimation, and also not for
	  constructing the next RTCP SR. Both would end up with completely wrong
	  values, and an RTCP SR with wrong values can easily break
	  synchronization in receivers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5329>

2023-09-19 18:28:47 +0200  Piotr Brzeziński <piotr@centricular.com>

	* ext/qt/qtplugin.pro:
	  qml: Fix leftover reference to gstqsgtexture
	  Made it impossible to build with qmake as per the readme. The file was renamed to gstqsgmaterial a while ago.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5357>

2023-09-19 09:14:31 +0200  Olivier Blin <olivier.blin@softathome.com>

	* ext/pulse/pulsedeviceprovider.c:
	  pulsedeviceprovider: fix incorrect usage of GST_ELEMENT_ERROR
	  The provider is not a GStreamer element.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5349>

2023-09-07 17:23:37 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpjitterbuffer.c:
	  rtpjitterbuffer: Avoid integer overflow in max saveable packets calculation with negative offset
	  The timestamp offset can be negative, and it can be a bigger negative
	  number than the latency introduced by the rtpjitterbuffer so the overall
	  timeout offset can be negative.
	  Using the negative offset for calculating how many packets can still
	  arrive in time when encountering a lost packet in an equidistant stream
	  would then overflow and instead of considering fewer packets lost a lot
	  more packets are considered lost.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5296>

2023-09-05 16:56:44 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: object: Handle video helper return value
	  gst_video_info_set_interlaced_format() can return an error if the
	  width/height causes integer overflow. Handle this case, so that we can
	  fail cleanly. This has been experienced while testing an in-progress
	  driver.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5286>

2023-09-05 16:51:24 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Avoid warnings on empty last buffer
	  Some drivers will push an buffer flagged LAST but empty. In decoder
	  case, this results in an "producing too many buffer" warning, even
	  though the result is entirely correct. Detect this case in order to
	  signal EOS earlier and avoid this warning.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5286>

2023-09-05 16:15:19 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Do not resize compressed buffer
	  Avoid resizing compressed buffer to their maximum size. This fixes a
	  regression that caused valid but very large streams to be generated.
	  Fixes #2953
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5286>

2023-09-10 19:13:28 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* docs/gst_plugins_cache.json:
	  doc: Update cache after template pixel formats changes
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5304>

2023-09-06 20:28:39 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt6/gstqml6glmixer.cc:
	* tests/examples/qt6/qmlmixer/main.cpp:
	  qml6glmixer: add support for non-RGBA inputs
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5290>

2023-09-06 20:28:20 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt6/gstqml6gloverlay.cc:
	* tests/examples/qt6/qmloverlay/main.cpp:
	  qml6glovleray: add support for non-RGBA inputs
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5290>

2023-09-04 12:57:26 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt6/RGBA.frag:
	* ext/qt6/YUV_TRIPLANAR.frag:
	* ext/qt6/gstqml6glsink.cc:
	* ext/qt6/gstqsg6glnode.cc:
	* ext/qt6/gstqsg6glnode.h:
	* ext/qt6/gstqsg6material.cc:
	* ext/qt6/gstqsg6material.h:
	* ext/qt6/meson.build:
	* ext/qt6/qt6glitem.cc:
	* ext/qt6/resources.qrc:
	* ext/qt6/vertex.vert:
	* tests/examples/qt6/qmlsink/main.cpp:
	  qml6/sink: add support for non-RGBA input
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5290>

2023-08-24 21:29:29 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: Fix ordering of video formats in GST_VIDEO_FORMATS_ALL_STR
	  This now follows the algorithm again that is described in the
	  documentation and implemented in gstreamer-rs.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5243>

2023-08-24 11:32:51 +1000  Matthew Waters <matthew@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: add support for A420/A422/A444 16-bit formats
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5233>

2023-08-23 16:33:16 +1000  Matthew Waters <matthew@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: add support for 12-bit A420/A422/A444
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5226>

2023-08-21 21:02:01 +1000  Matthew Waters <matthew@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: add support for 8-bit A422/A444
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5213>

2023-08-22 01:28:47 +0000  Nicolas Dufresne <nicolas@ndufresne.ca>

	* sys/v4l2/gstv4l2object.c:
	  gstv4l2object: fix TODO comment about HDR configure
	  add following todo list
	  - Missing capture (v4l2src) HDR10 configuration and/or reporting
	  - The API is not capable of HDR to HDR conversion as controls are
	  not specific to queues
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4403>

2023-04-12 08:22:17 +0000  HuQian <qian.hu@mediatek.com>

	* sys/v4l2/gstv4l2object.c:
	  gstv4l2object: passing HDR10 information
	  when playing some codec such as matroska with vp9 codec,
	  demuxer will save information like video_mastering_display_info
	  and video_content_light_level in caps that decoder need,
	  v4l2videodecoder can use it by calling V4L2_CTRL_CLASS_COLORIMETRY
	  ioctl.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4403>

2023-08-22 09:57:14 +0800  Ming Qian <ming.qian@nxp.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: clear format lists if source change event is received
	  If decoder notify a source change event when the capture format is
	  changed, not the resolution changed.
	  then gst_v4l2_object_acquire_format will retuen false due to
	  unsupported format.
	  we need to clear the format lists in the source change flow,
	  and reenumerate format list
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5218>

2023-08-21 14:37:23 +0200  Jonas K Danielsson <jonas.danielsson@spiideo.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtp.c:
	* gst/rtp/gstrtpelements.h:
	* gst/rtp/gstrtppassthroughpay.c:
	* gst/rtp/gstrtppassthroughpay.h:
	* gst/rtp/meson.build:
	* tests/check/elements/rtppassthrough.c:
	* tests/check/meson.build:
	  rtp: Add rtppassthroughpay element
	  This elements pass RTP packets along unchanged and appear as a RTP
	  payloader element.
	  This is useful, for example when using the gstreamer-rtsp-server
	  library, in the case where you are receiving RTP packets from a
	  different source and want to serve them over RTSP. Since the
	  gst-rtsp-server library expect the element marked as payX to be a RTP
	  payloader element and assumes certain properties are available.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5204>

2023-07-25 15:14:11 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2allocator.c:
	  v4l2: allocator: Don't close foreign dmabuf
	  Imported dmabuf are not being duped, so they should never be closed. Instead,
	  we ensure their live time by having strong reference on their original
	  buffer. This should fix potential flickering due to dmabuf being closed
	  too early.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5101>

2023-08-03 14:46:56 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Fix hang when splitting buffer
	  Now that we can split GStreamer buffers over multiple v4l2 buffer, we may
	  endup waiting for these buffers to be processed. Avoid waiting for any of
	  the parts being processed. As a side effect, the pool will now try to
	  grow if the number of buffers is not sufficient, and will fail
	  otherwise.
	  This fixes a hang if the very first frame did not fit. In this case, the
	  driver will retrain that buffer until the capture is setup, but
	  GStreamer won't setup the capture until process() function have
	  returned.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5100
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5143>

2023-08-16 15:37:51 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* docs/gst_plugins_cache.json:
	* gst/flv/gstflvmux.c:
	* gst/flv/gstflvmux.h:
	  flvmux: add 'enforce-increasing-timestamps' property
	  The hack enforcing strictly increasing timestamps was, according to the
	  code comments, because librtmp was confused with backwards timestamps.
	  rtmp2sink is not using librtmp as rtmpsink did, so this is no longer
	  required.
	  Also changing the timestamps is causing audio glitches when streaming to
	  Youtube.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5212>

2023-07-20 19:13:36 +0200  Jan Alexander Steffens (heftig) <heftig@archlinux.org>

	* ext/qt/meson.build:
	  qt: Unbreak build with qt-egl enabled but viv_fb missing
	  Avoids an error message when the feature is explicitly enabled:
	  ERROR: Feature qt-egl cannot be enabled: gstreamer-gl-viv_fb-1.0 is required
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5083>

2023-08-11 13:24:49 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtp/gstrtpgstdepay.c:
	  rtpgstpay: Enable hdrext aggregation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4979>

2023-07-30 10:48:12 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtpvp8depay.c:
	* gst/rtp/gstrtpvp9depay.c:
	  rtp/vp8depay+vp9depay: Enable hdrext aggregation for VP8 and VP9
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4979>

2023-07-30 09:35:53 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtph264depay.c:
	* gst/rtp/gstrtph265depay.c:
	  rtp/h264depay+h265depay: Enable hdrext aggregation for H264 and H265
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4979>

2023-08-11 11:59:42 +0300  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst/deinterlace/tvtime/vfir.c:
	  deinterlace: Fix vfir 16-bit orc calculations
	  memcpy works in bytes, but orc works in items, so given that the size
	  arguments is in bytes, we need to divide by the pixel stride.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5172>

2023-08-10 11:38:32 +0300  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst/deinterlace/tvtime/greedyh.c:
	  deinterlace: Fix greedyh crash for alternate-field interlacing
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2645
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5172>

2023-08-09 10:56:59 +0200  Stéphane Cerveau <scerveau@igalia.com>

	* gst/isomp4/gstqtmux-doc.c:
	  isomp4: update isml documentation
	  Closing #2893
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5165>

2023-08-07 22:22:14 -0300  L. E. Segovia <amy@centricular.com>

	* ext/vpx/meson.build:
	  subprojects: Add libvpx wrap
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5105>

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

	* docs/gst_plugins_cache.json:
	  video: Add Mediatek 10bit formats
	  These 10bit formats are identical to NV12_16L32S, but 64bytes of data is being
	  prefixed with 16bytes data with four pixels of lower 2bits per byte. For
	  MT2110T, the lower two bits set so each bytes contains a column of 4 pixels,
	  also describe as tiled lower 2 bits. MT2110T has been chosen as a name to match
	  the vendor chosen name. This format is unlikely to exist for other vendors.
	  For MT2110R, the 2 low bits are in raster order.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3444>

2023-08-03 17:46:57 +1000  Jan Schmidt <jan@centricular.com>

	* sys/osxaudio/gstosxaudiosink.c:
	* sys/osxaudio/gstosxaudiosrc.c:
	* sys/osxaudio/gstosxcoreaudio.c:
	* sys/osxaudio/gstosxcoreaudio.h:
	  osxaudio: Interpolate clock by counting elapsed time since render calls
	  When advancing the ringbuffer, store the processed CoreAudio sample
	  time, then interpolate the clock in the _get_delay() calls to smooth
	  the clock. CoreAudio's "latency" report is always a constant and
	  otherwise leads to the clock generating a latency-time staircase.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5140>

2023-07-26 00:21:24 +1000  Jan Schmidt <jan@centricular.com>

	* sys/osxaudio/gstosxcoreaudio.c:
	* sys/osxaudio/gstosxcoreaudiocommon.c:
	* sys/osxaudio/gstosxcoreaudiohal.c:
	  osxaudio: Share debug category in the internal coreaudio object
	  Make the internal coreaudio object output debug to the same
	  debug category by making it shared between code units.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5140>

2023-07-26 00:21:18 +1000  Jan Schmidt <jan@centricular.com>

	* sys/osxaudio/gstosxaudioringbuffer.c:
	* sys/osxaudio/gstosxcoreaudio.c:
	* sys/osxaudio/gstosxcoreaudio.h:
	* sys/osxaudio/gstosxcoreaudiohal.c:
	  osxaudio: Attempt to configure the segment size in CoreAudio
	  Set the BufferFrame size in CoreAudio so it will deliver data
	  in ringbuffer segment units when recording. Otherwise, CoreAudio
	  will provide data in whatever granularity it wants, with no
	  relationship to the requested latency-time.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5140>

2023-07-26 00:21:08 +1000  Jan Schmidt <jan@centricular.com>

	* sys/osxaudio/gstosxaudiosrc.c:
	  osxaudiosrc: Set sample timestamps
	  Set the timestamp on output buffers based on the incoming sample
	  times from Core Audio
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5140>

2023-08-05 17:45:17 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ext/soup/gstsouphttpsrc.c:
	  soup: use GST_PARAM_DOC_SHOW_DEFAULT for libsoup2-specific properties
	  Otherwise the value in the gst_plugins_cache.json will vary depending
	  on the libsoup version picked up at runtime.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5090>

2023-08-05 17:27:31 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/flv/gstflvmux.c:
	  flvmux: use version template in metadata creator properties
	  Avoids documentation churn when the version changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5090>

2023-08-05 17:27:31 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/soup/gstsouphttpsrc.c:
	  souphttpsrc: use version template in user-agent property
	  Avoids documentation churn when the version changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5090>

2023-08-05 17:27:31 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/shout2/gstshout2.c:
	  shout2send: use version template in user-agent property
	  Avoids documentation churn when the version changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5090>

2023-08-05 17:27:31 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst-libs/gst/glib-compat-private.h:
	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: use version template in user-agent property
	  Avoids documentation churn when the version changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5090>

2023-08-07 14:18:21 +0800  Wang Chuan <ouchuanm@outlook.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  gstadaptivedemux: fix memory leak
	  GstQuery leaks when using invalid url
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5154>

2023-08-04 18:26:35 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt/gstqsgmaterial.cc:
	* ext/qt/gstqsgmaterial.h:
	  qmlgl: Can't use frame info if we don't have a frame
	  Fixes segfault accessing vinfo in: GST_VIDEO_FRAME_N_PLANES (&this->v_frame)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5148>

2023-08-04 15:11:05 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt/meson.build:
	* ext/qt6/meson.build:
	  meson: Fix searching of qt5/qt6 tools with qmake
	  If the pkg-config files are broken, we want to ensure that qmake is
	  used. This can easily happen on macOS with the official Qt binaries.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5147>

2023-08-04 13:02:21 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt/gstqsgmaterial.cc:
	* ext/qt/gstqsgmaterial.h:
	* ext/qt/qtitem.cc:
	  qml: handle multiple items with different input formats
	  Issue was that Qt was caching multiple different shadersbased on a static
	  variable location.  This static variable location was the same no matter
	  the input video format and so if an item had an input video format of
	  RGB and another of RGBA, they would eventually end up using the same
	  GL shader leading to incorrect colours.
	  Fix by providing different static variable locations for each of the
	  different shaders that will be produced.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5145>

2023-07-20 17:04:22 -0400  Charlie Blevins <charlie.blevins@flocksafety.com>

	* gst/rtpmanager/gstrtpjitterbuffer.c:
	* tests/check/elements/rtpjitterbuffer.c:
	  rtpjitterbuffer: Allow earlier reference-timestamp-meta
	  Allow reference-timestamp-meta to be added earlier if an RTCP sender
	  report is sent before the first RTP packet.
	  Fixes #2843
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5084>

2023-08-02 21:17:26 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt/gstqsgmaterial.cc:
	  qml/gl: fix array definition
	  Some implementations require the [N] to suffixed to the variable name.
	  Error message example: 'syntax error: Array size must appear after
	  variable name'
	  Follow up with https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5123
	  of https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5119
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5137>

2023-07-25 12:19:22 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Keep processing bitstream buffer
	  Bitstream buffers may no fit a single v4l2 buffer, following spec
	  recommendation, keep processing the buffer until all the data has been
	  queued.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5100>

2023-07-25 12:19:22 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Fix buffer resize asserstion
	  When we fill a bitstream buffer the buffer might be too small to hold
	  the entire frame. Only resize to the filled size, preventing the
	  following assertion to happen.
	  gst_buffer_resize_range: assertion 'bufmax >= bufoffs + offset + size' failed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5100>

2023-07-20 21:12:55 +1000  Matthew Waters <matthew@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/qt/gstqsgmaterial.cc:
	* ext/qt/gstqsgmaterial.h:
	* ext/qt/gstqsgtexture.cc:
	* ext/qt/gstqtoverlay.cc:
	* ext/qt/gstqtsink.cc:
	* ext/qt/meson.build:
	* ext/qt/qtitem.cc:
	* ext/qt/qtwindow.cc:
	* tests/examples/qt/qmloverlay/main.cpp:
	* tests/examples/qt/qmlsink/main.cpp:
	  qml: add support for non-RGBA formats as input format
	  Currently supported are RGBA, BGRA and YV12
	  Output is still RGBA textures
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5119>

2023-07-27 12:05:07 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Remove API lock
	  The various fields this was protecting were for the legacy design.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5113>

2023-07-12 12:37:34 +0200  Alicia Boya García <aboya@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix premature EOS when some files are played in push mode
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2771
	  This EOS branch exists so that if a seek with a stop is made, qtdemux
	  stops accepting bytes from the sink after the entire requested playback
	  range is demuxed, as otherwise we could keep download content that is
	  not being used.
	  This patch fixes two flaws that were present in that EOS check:
	  1) A comparison was made between track time and movie time without conversion.
	  This made the check trigger early in files with edit lists. This patch fixes
	  this by converting the track PTS to movie PTS (stream time) for the check.
	  2) To avoid sending a EOS prematurely when the segment stop is within a GOP and
	  B-frames are present, the check for EOS should only be done for keyframes. I
	  gather this was already the intention with the existing code, but because it
	  used `stream->on_keyframe` instead of the local variable `keyframe` the old
	  code was checking if the *previous* frame was a keyframe.
	  It's interesting to note that these two flaws in the old code mask each other
	  in most cases: the track PTS will have reached the movie end PTS, but EOS would
	  only be sent if the previous frame was a keyframe. A simple case where they
	  wouldn't mask each other, reproducing the bug, is a sequence of 3 frame GOPs
	  with structure I-B-P.
	  The following validateflow tests have been added to future-proof the
	  fix:
	  * validate.test.mp4.qtdemux_ibpibp_non_frag_pull.default
	  * validate.test.mp4.qtdemux_ibpibp_non_frag_push.default
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5021>

2023-07-25 15:15:58 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	  videoflip: fix concurrent access when modifying the tag list
	  We were checking if the tag list is writable, but it may actually be
	  shared through the same event (tee upstream or multiple consumers).
	  Fix a bug where multiple branches have a videoflip element checking the
	  taglist. The first one was changing the orientation back to rotate-0
	  which was resetting the other instances.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5097>

2023-07-21 12:48:08 +0200  Xabier Rodriguez Calvar <calvaris@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: attach cbcs crypt info at the right moment
	  Before it was always added but that can cause issues when the stream begins
	  unencrypted.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5085>

2023-07-11 17:00:57 +0200  Bastien Nocera <hadess@hadess.net>

	* ext/gtk/gtkgstbasewidget.c:
	  gtk: Fix critical caused by pointer movement when stream is getting ready
	  This check fixes a critical warning that can happen when a pointer motion
	  happens and the video doesn't have its width/height information available.
	  GStreamer-Video-CRITICAL **: gst_video_center_rect: assertion 'src->h != 0' failed
	  #0  g_logv (log_domain=0x7ffff705e176 "GStreamer-Video", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>) at ../../../../Projects/jhbuild/glib/glib/gmessages.c:1422
	  #1  0x00007ffff7e1a81d in g_log (log_domain=<optimized out>, log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7ffff7e77a9d "%s: assertion '%s' failed") at ../../../../Projects/jhbuild/glib/glib/gmessages.c:1460
	  #2  0x00007ffff7e1b749 in g_return_if_fail_warning (log_domain=<optimized out>, pretty_function=<optimized out>, expression=<optimized out>) at ../../../../Projects/jhbuild/glib/glib/gmessages.c:2930
	  #3  0x00007ffff701d90b in gst_video_sink_center_rect (src=..., dst=..., result=result@entry=0x7fffffffc6d0, scaling=scaling@entry=1) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-base/gst-libs/gst/video/gstvideosink.c:105
	  #4  0x00007fffe5652dbb in _fit_stream_to_allocated_size (result=0x7fffffffc6d0, allocation=0x7fffffffc6c0, base_widget=0x9396f0) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-good/ext/gtk/gtkgstbasewidget.c:326
	  #5  gtk_gst_base_widget_display_size_to_stream_size (base_widget=base_widget@entry=0x9396f0, x=1207.7109375, y=811.84765625, stream_x=stream_x@entry=0x7fffffffc720, stream_y=stream_y@entry=0x7fffffffc728) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-good/ext/gtk/gtkgstbasewidget.c:344
	  #6  0x00007fffe5651a4b in gst_gtk_base_sink_navigation_send_event (navigation=0x5ff990, event=0x178a730) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-good/ext/gtk/gstgtkbasesink.c:340
	  #7  0x00007fffe5652432 in gtk_gst_base_widget_motion_event (widget=<optimized out>, event=event@entry=0x1f14b60) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-good/ext/gtk/gtkgstbasewidget.c:404
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5049>

2023-07-05 18:46:25 -0600  Olivier Crête <olivier.crete@collabora.com>

	* scripts/gen-changelog.py:
	  gst-omx: Retire the whole package
	  The OpenMAX standard is long dead and even the Raspberry Pi OS
	  no longer supports it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4976>

2023-07-14 08:28:10 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/soup/meson.build:
	* meson_options.txt:
	  meson: Ensure that soup plugin is built on Windows
	  The libpsl subproject wasn't building successfully and CI didn't
	  notice because:
	  1. The plugin wasn't explicitly enabled
	  2. Even when the plugin is explicitly enabled, the dep is not required
	  at build time when not building a static plugin
	  So fix all of these issues.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5038>

2023-07-13 16:27:05 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: remove empty sink_query
	  The sink_query() function simply calls the sink_query() function of the parent
	  videoencoder class. Remove the override to simply directly call the parent's
	  function.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5034>

2023-07-13 16:16:44 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: replace custom QUERY_CAPS handling with getcaps callback
	  The videoencoder base class uses getcaps() to ask a subclass for the caps in its
	  sink_query_default() implementation.
	  Replace the custom handling of the QUERY_CAPS in the v4l2videoenc with an
	  implementation of getcaps() that returns the caps that are supported by the
	  v4l2videoenc to return these caps in the query.
	  This getcaps() implementation also calls the provided proxy_getcaps(), which
	  sends a caps query to downstream. This fixes the v4l2videoenc element to respect
	  limits of downstream elements in a sink query.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5034>

2023-07-12 09:27:22 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* tests/check/meson.build:
	  meson: Always use forward slashes in defines with paths
	  Fixes the following build failure on MSYS2:
	  ```
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c: In function 'test_seeking':
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: error: incomplete universal character name \U
	  107 |   g_object_set (G_OBJECT (src), "location", TESTFILE, NULL);
	  |                                                     ^
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\A'
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\g'
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\s'
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\g'
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\c'
	  ```
	  Due to: `-DTESTFILE=\"C:\\Users\\Administrator\[...]`
	  https://gitlab.freedesktop.org/nirbheek/gstreamer/-/jobs/45317733
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5018>

2023-01-31 15:52:42 +0100  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: always allocate CAPTURE buffer from our pool
	  The videoencoder base class always uses the negotiated allocator for allocating
	  coded buffers and ignores the negotiated buffer pool. Therefore, the
	  v4l2videoenc always has to copy buffers from the pool into the allocated
	  output buffers.
	  This breaks downstream elements that want to import the CAPTURE buffers of the
	  v4l2videoenc, since the v4l2videoenc copies the exported CAPTURE buffers and
	  sends the copies downstream.
	  Always use the CAPTURE buffer pool for acquiring CAPTURE buffers instead of
	  allocating the buffers in the base class.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4230>

2023-07-11 21:41:46 +0200  Carlos Rafael Giani <crg7475@mailbox.org>

	* meson.build:
	  gl: Take into account viv-fb vs. viv_fb naming in meson scripts
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5020>

2023-05-16 21:24:44 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt/gstqtglutility.cc:
	* ext/qt/meson.build:
	* meson.build:
	  gl: provide a pkg-config/gir file for the viv-fb backend
	  Required to be able to generate coherent bindings for window system
	  specific APIs due to limitations in gobject-introspection.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5020>

2023-07-10 22:45:49 +0900  Seungha Yang <seungha@centricular.com>

	* ext/qt6/qt6glitem.cc:
	  qt6: Set sampler filtering method
	  QQuickItem::smooth property doesn't seem to be propagated to
	  newly created QSGSimpleTextureNode automatically.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2793
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5004>

2023-07-09 17:44:03 +0200  David Craven <david@craven.ch>

	* gst/matroska/matroska-read-common.c:
	  matroska: demux: Strip signal byte from encrypted blocks
	  Removes the signal byte when the frame is unencrypted to
	  be consistent with when the frame is encrypted.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4997>

2023-06-26 17:10:33 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Don't wait for src_ch if active
	  If the capture pool is already active, like when handling gaps at the
	  start of a stream, do not setup the decoder to wait for src_ch event.
	  Otherwise the decoder will endup waiting for that at the wrong moment
	  and exit the decoding thread unexpectedly.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4590>

2023-06-26 17:08:57 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Move pool setup inside negotiate()
	  Move all the pool configuration inside the negotiate() virtual function.
	  This allow settting up a pool with default format whenever the base
	  class wants to start without input data, like gaps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4590>

2023-07-06 17:44:48 +0800  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2videodec: correctly register v4l2mpeg2dec
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4977>

2023-07-07 12:33:37 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	  videoflip: fix critical when tag list is not writable
	  Fix this pipeline where the tag list is not writable:
	  gst-launch-1.0 videotestsrc ! taginject tags="image-orientation=rotate-90" ! videoflip video-direction=auto \
	  ! autovideosink
	  GStreamer-CRITICAL **: 12:34:36.310: gst_tag_list_add: assertion 'gst_tag_list_is_writable (list)' failed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4987>

2023-07-06 14:27:42 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* sys/v4l2/gstv4l2src.c:
	  v4l2src: handle resolution change when buffers are copied
	  When buffers are copied then GST_V4L2_FLOW_RESOLUTION_CHANGE is returned by
	  gst_v4l2_buffer_pool_process() so do renegotiation here as well.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4980>

2023-07-05 19:55:17 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: Move NV12_10LE40_4L4 before the BE variant on LE platforms
	  This keeps the sorting rules for the format list intact.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4974>

2021-05-26 12:37:21 +0200  Philipp Zabel <p.zabel@pengutronix.de>

	* ext/qt/qtglrenderer.cc:
	* ext/qt6/qt6glrenderer.cc:
	  qtglrenderer.cc: Add missing QCoreApplication and QEventLoop includes
	  This fixes a build error if Qt was build without accessibility support:
	  ../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:
	  In member function 'bool GstQuickRenderer::init(GstGLContext*, GError**)':
	  ../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:341:13:
	  error: 'QCoreApplication' was not declared in this scope; did you mean 'QApplication'?
	  ../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:341:31:
	  error: 'app' was not declared in this scope
	  ../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:341:37:
	  error: 'QCoreApplication' is not a class, namespace, or enumeration
	  [...]
	  ../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:458:5:
	  error: 'QEventLoop' was not declared in this scope; did you mean 'QEvent'?
	  ../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:459:9:
	  error: 'loop' was not declared in this scope
	  If accessibility is enabled, the includes for QCoreApplication and QEventLoop
	  are indirectly pulled via QWidget.
	  Add the required headers as documented in [1] and [2].
	  [1] https://doc.qt.io/qt-5/qcoreapplication.html
	  [2] https://doc.qt.io/qt-5/qeventloop.html
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4815>

2023-06-28 15:51:15 +0300  Jordan Petridis <jordan@centricular.com>

	* ext/libpng/gstpngenc.c:
	* ext/libpng/gstpngenc.h:
	  pngenc: Allocate a single GstMemory per frame
	  Previously, we would create a new GstMemory per write operation
	  and then append them to the GstBuffer. This would cause a reallocation
	  every 16 Memories which is an issue since the png encoder will usually
	  do write in a pattern of 4, 8 and 8k bytes repeating until the frame
	  is done.
	  Instead allocate a single GstMemory and keep writting it into it
	  with a manual index. Much like the jpegenc does.
	  Doing some basic testing With a testsrc snow pattern at 4k and 8k
	  the same pipeline would take ~3.30s to encode a 4k frame and ~23s
	  for an 8k. At 4k 0.70s/33% is taken by memory allocations, while at
	  8k its ~10.5s/45%.
	  With this patch, at 4k the pipeline takes ~2.40s and at 8k only 9.60s
	  making this 28% and 58% faster accordingly on my laptop, and
	  allocation runtime is dropped to subsecond times.
	  Here's the test pipeline used, increase num-buffers in image freeze
	  to gather more samples.
	  ```
	  gst-launch-1.0 videotestsrc num-buffers=1 pattern=snow ! imagefreeze num-buffers=1 ! \
	  video/x-raw,width=7680,height=4320 ! pngenc ! fakesink
	  ```
	  Close #2717
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4944>

2023-07-04 23:11:53 +0900  Seungha Yang <seungha@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Fix crash when is-live=false
	  The pad's parent (i.e., rtspsrc) can be nullptr since we add pads
	  later.
	  Co-authored-by: Jan Schmidt <jan@centricular.com>
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2751
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4965>

2023-07-04 10:57:01 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
	  hlsdemux2: Ensure processed webvtt ends with empty new line
	  Parsers downstream will use empty new lines to detect where an entry
	  ends. Failure to have a newline would cause the entry to be either
	  discarded or (wrongly) concatenated with the next entry
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2752
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4963>

2023-06-23 13:11:49 +0700  Arnaud Rebillout <elboulangero@gmail.com>

	  examples: gtk: Add example to illustrate usage of accept-certificate with souphttpsrc
	  The aim of this example is to show how to make use of the accept-certificate
	  signal from a GTK GUI, and prompt user in case of invalid certificate.
	  There are two subtleties to be aware of:
	  1. the signal is emitted from the GStreamer streaming thread, therefore the
	  caller can't modify the GUI straight away, instead they must do it from the
	  main thread (eg. by using g_idle_add())
	  2. in case of a redirection, then a TLS failure, the caller won't know
	  about the redirection. Actually, it's possible to be notified of the
	  redirection by watching "message:element" and inspecting http-headers,
	  but even in that case, the signal will be received *after* the signal
	  "accept-certificate" (even though the redirection happened *before*).
	  This second point is tricky. It's not uncommon to have servers that redirect
	  http requests to https. So errors of the type "HTTP -> HTTPS -> TLS error"
	  happen, and if the caller doesn't care about redirection, they might prompt
	  users with a message such as "TLS error for URL http://...", which wouldn't make
	  much sense.
	  This example shows how to handle that right, by connecting to the signal
	  "message:element", inspecting the http-headers, and in case of redirection,
	  updating the TLS error dialog to indicate that the request was redirected.
	  Here are a few examples of streams that exhibit TLS failure (at the time of
	  this commit, of course):
	  * https://radiolive.sanjavier.es:8443/stream: unknown-ca
	  * https://am981.ddns.net:9005/stream.ogg: unknown-ca
	  * http://stream.diazol.hu:7092/zene.mp3: redir then bad-identity
	  * https://streaming.fabrik.fm/izwi/echocast/audio/index.m3u8: unknown-ca
	  (this one is a HLS stream)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4925>

2023-03-16 22:32:11 +0700  Arnaud Rebillout <elboulangero@gmail.com>

	* docs/gst_plugins_cache.json:
	* ext/soup/gstsouphttpsrc.c:
	  souphttpsrc: forward accept-certificate signal from libsoup-3
	  With libsoup 2.x, it was possible to know when there was a TLS failure, as
	  libsoup provided the "special http status code" SOUP_STATUS_SSL_FAILED.
	  However these special codes were dropped with libsoup 3.x: now libsoup emits
	  the accept-certificate signal when there's a TLS failure.
	  This commit adds a signal "accept-certificate" to SoupHttpSrc, which is in fact
	  just about forwarding the signal from SoupMessage (which is, itself, forwarded
	  from GTlsConnection). Note that, in case of libsoup 2.x, the signal is never
	  emitted.
	  Fixes: #2379
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4925>

2023-06-27 10:42:21 +0200  Peter Stensson <petest@axis.com>

	* gst/rtp/gstrtpvp9pay.c:
	* tests/check/elements/rtpvp9.c:
	  rtpvp9pay: Only mark first outgoing packet as non delta-unit
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4937>

2023-06-27 10:40:47 +0200  Peter Stensson <petest@axis.com>

	* gst/rtp/gstrtpvp8pay.c:
	* tests/check/elements/rtpvp8.c:
	  rtpvp8pay: Only mark first outgoing packet as non delta-unit
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4937>

2023-06-22 11:17:48 +0200  Peter Stensson <petest@axis.com>

	* tests/check/elements/rtph264.c:
	  rtph264pay: Add unit tests verifying delta-unit flag
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4937>

2023-06-22 11:06:02 +0200  Peter Stensson <petest@axis.com>

	* gst/rtp/gstrtph265pay.c:
	* tests/check/elements/rtph265.c:
	  rtph265pay: Only mark first NAL as non delta-unit
	  When the input buffer contained multiple NAL's the second one would keep
	  the non delta-unit flag for a key frame.
	  The delta-unit flag will now be set per NAL when preparing the buffer
	  list to payload.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4937>

2023-06-16 21:53:11 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* 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: expose timeout-inactive-sources property
	  In some situations it is not desirable to time out when no data is
	  received any longer, users can opt in to this behavior via a new
	  property.
	  The property is also exposed on rtpbin and sdpdemux
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4880>

2023-06-22 10:10:43 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2: Fix support for left and top padding
	  In the current implementation, we support for most pixel format left
	  and top padding by changing the offset in the video meta. Though, to
	  align driver bytesused to the offset, we recalculate the offset, which
	  removed the modification we did before.
	  Instead, save the plane size, and truncate the driver reported bytesused
	  to the expected size, which ensures that the offsets still match. This
	  should also fix issues were the buffer size ended up bigger then the
	  pool size due to driver introduced padding.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4920>

2023-05-25 20:39:03 +0200  Matthieu Volat <mazhe@alkumuna.eu>

	* sys/oss/gstossaudio.c:
	* sys/oss/gstossaudioelement.c:
	* sys/oss/gstossaudioelements.h:
	* sys/oss/gstossdeviceprovider.c:
	* sys/oss/gstossdeviceprovider.h:
	* sys/oss/meson.build:
	  oss: add a GstDeviceProvider plugin
	  Based on Alsa's GstDeviceProvider structure, relies on sndstat
	  file for OSS device enumeration but uses already existing utils
	  to query caps and names.
	  Reviewed and thanks to @slomo
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4879>

2023-05-25 14:41:58 +0800  Elliot Chen <elliot.chen@nxp.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	  dashdemux2: fix some mpeg-ts issue with no audio output
	  For dashdemux2, one stream will create one track.
	  Maybe there are multiple tracks in one stream such as
	  some mpeg-ts streams, need add the function to check
	  and create the other tracks if needed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4706>

2023-06-21 17:05:47 +0200  Edward Hervey <edward@centricular.com>

	* gst/matroska/matroska-demux.c:
	  matroska-demux: Properly handle early time-based segments
	  Refusing an incoming segment in < GST_MATROSKA_READ_STATE_DATA should only be
	  done if the incoming segment is not in GST_FORMAT_TIME.
	  In GST_FORMAT_TIME, we are just storing the values and returning, so we can
	  invert the order of the checks.
	  Fixes proper segment propagation in matroska/webm DASH use-cases
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3914>

2023-02-10 15:26:20 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Handle early SEEKING query
	  No pads are present yet, but we can still answer the query
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3914>

2023-02-09 17:22:34 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Fix non-accurate seeking
	  If no accurate positioning was required, default to snap to the previous segment
	  for improved responsiveness
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3914>

2023-02-09 14:54:27 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Handle return in seek handling
	  Various code path were repeating the same logic, and risk forgetting a lock
	  release.
	  Unify all of them
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3914>

2023-02-09 14:45:01 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Move API lock usage
	  It is not needed so early
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3914>

2023-02-08 17:24:18 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Handle early key-unit seek
	  Is a seek is done on stream-collection post, there are no selected streams
	  yet. Therefore none would be chosen to adjust the key-unit seek.
	  If no streams are selected, fallback to a default stream (i.e. one which has
	  track(s) with GST_STREAM_FLAG_SELECT).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3914>

2023-02-08 12:02:45 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	  adaptivedemux2: Fix early seeking
	  When seeking is handled by the collection posting thread, there is a possibility
	  that some leftover data will be pushed by the stream thread.
	  Properly detect and reject those early segments (and buffers) by comparing it to
	  the main segment seqnum
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3914>

2023-06-20 14:56:44 +0200  François Laignel <francois@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: opus: set entry as sampled
	  ... otherwise streams with constant size samples defined with a single
	  `sample_size` for all samples in the `stsz` box fall in the category
	  `chunks_are_samples` in `qtdemux_stbl_init`, overriding the actual
	  sample count.
	  `FOURCC_soun` would set this automatically for `compression_id == 0xfffe`,
	  however `compression_id` is read from the Audio Sample Entry box at an offset
	  marked as "pre-defined" in some version of the spec and set to 0 both by
	  GStreamer and FFmpeg for opus streams.
	  Considering the stream `sampled` flag is set explicitely by other fourcc
	  variants, doing so for opus seems consistent.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4903>

2023-06-13 13:20:16 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstflacparse.c:
	  flacparse: Avoid integer overflow in available data check for image tags
	  If the image length as stored in the file is some bogus integer then
	  adding it to the current byte readers position can overflow and wrongly
	  have the check for enough available data succeed.
	  This then later can cause NULL pointer dereferences or out of bounds
	  reads/writes when actually reading the image data.
	  Fixes ZDI-CAN-20775
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2661
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4894>

2023-06-19 15:11:30 +0200  François Laignel <francois@centricular.com>

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux_dump.c:
	* gst/isomp4/qtdemux_dump.h:
	* gst/isomp4/qtdemux_types.c:
	  qtdemux: parse Opus and dOps as qtdemux nodes and add size checks
	  This allows checking the nodes conformity and dumping parsed values.
	  Note: Audio Sample Entry version parsing and offset handling is handled as part
	  of `FOURCC_soun` common processing and in `qtdemux_parse_node`.
	  Also, only read `stream_count` and `coupled_count` when
	  `channel_mapping_family` != 0. See:
	  https://opus-codec.org/docs/opus_in_isobmff.html#4.3.2
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4875>

2023-06-16 10:29:28 +0200  François Laignel <francois@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: fix byte order for opus extension and version field type
	  The "Encapsulation of Opus in ISO Base Media File Format" [1] specifications,
	  § 4.3.2 Opus Specific Box, indicates that data must be stored as big-endian.
	  [1] https://opus-codec.org/docs/opus_in_isobmff.html#4.3.2
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4875>

2023-06-16 10:02:16 +0200  François Laignel <francois@centricular.com>

	* gst/isomp4/atoms.c:
	  qtmux: fix byte order for opus extension
	  The "Encapsulation of Opus in ISO Base Media File Format" [1] specifications,
	  § 4.3.2 Opus Specific Box, indicates that data must be stored as big-endian.
	  In `build_opus_extension`, `gst_byte_writer_put*_le ()` variants were used,
	  causing audio streams conversion to Opus in mp4 to offset samples due to the
	  PreSkip field incorrect value (29ms early in our test cases).
	  [1] https://opus-codec.org/docs/opus_in_isobmff.html#4.3.2
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4875>

2023-02-05 21:55:52 -0500  Daniel Morin <daniel.morin@collabora.com>

	* docs/gst_plugins_cache.json:
	* sys/v4l2/gstv4l2object.c:
	  v4l2src: adding support for bayer 10,12,14,16
	  - Adding bayer 10,12,14,16 bits components with 16 bits storage. These
	  changes only adds capabilities. Capability format string is a complete
	  description of the frame and pixels layout. Only mapping LE bayer
	  formats as v4l2 only define LE bayer formats.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4852>

2023-06-15 10:41:26 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* docs/gst_plugins_cache.json:
	  doc: Update plugin cache
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3447>

2023-06-14 17:18:04 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/ext/v4l2-common.h:
	* sys/v4l2/ext/v4l2-controls.h:
	* sys/v4l2/ext/videodev2.h:
	  v4l2: Sync headers to current media_stage
	  commit d78b9d6671decdaedb539635b1d0a34f8f5934f8
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3447>

2023-04-20 17:31:32 -0400  Daniel Morin <daniel.morin@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2src: fix support for bayer format
	  - Define a new function that identify if the v4l2object is raw based
	  on pixel format
	  - Only consider setting delta flag on buffer if the video is not raw.
	  Sponsored by Living Optics Ltd.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4848>

2023-04-04 14:58:33 +0100  Mark Hymers <mark@livingoptics.com>

	* docs/gst_plugins_cache.json:
	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-mux.c:
	  matroska: Add support for more pixel formats
	  - Add support for GRAY16_LE (using ffmpeg fourcc mapping)
	  - Update documentation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4824>

2023-02-28 15:45:30 -0500  Daniel Morin <daniel.morin@collabora.com>

	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-mux.c:
	  matroska: Add new pixels format support
	  - Add support for GRAY10_BE32
	  - Add support for RGBA64_LE and BGRA64_LE
	  Sponsored by Living Optics
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4824>

2023-06-12 19:24:15 +0100  Tim-Philipp Müller <tim@centricular.com>

	* tests/check/elements/rtpbin_buffer_list.c:
	  tests: rtpbin_buffer_list: fix possible unaligned read on 32-bit ARM
	  Fixes #2666
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4842>

2023-04-29 16:20:13 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst/matroska/matroska-demux.c:
	* tests/check/elements/matroskademux.c:
	  matroska-demux: fix accumulated base offset in segment seeks
	  When doing a segment seek, the base offset in the new segment
	  would be increased by segment.position which is basically the
	  timestamp of the last packet. This does not include the duration
	  of the last packet though, so might be slightly shorter than the
	  actual duration of the clip or the requested segment.
	  Increase the base offset by the segment duration instead when
	  accumulating segments, which is more correct as it doesn't cut
	  off the last frame and makes the effective loop segment duration
	  consistent with the actual duration returned from a duration
	  query.
	  In case a segment stop was specified it's also possible that
	  some data was sent beyond the stop that's necessary for decoding
	  so the base offset increment should be based on that then and
	  not on the timestamp of the last buffer pushed out.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4604>

2023-05-30 17:52:34 +0900  ekwange <ekwange@gmail.com>

	* sys/v4l2/v4l2_calls.c:
	  v4l2: Change to query only up to V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS
	  Fix to prevent infinite querying.
	  There are devices that exceed V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS
	  but do not return EINVAL.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4790>

2023-06-08 19:12:54 +0200  Jonas Kvinge <jonas@jkvinge.net>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Allow data dash+xml manifest for uri
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4811>

2023-06-05 07:29:57 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Cleanup code for next pending command
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4792>

2023-06-05 06:50:55 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Do not try send dropped get/set parameter
	  If the set_get_param_q has been emptied we have to reset the cached
	  pending command to CMD_LOOP as we will not have the request parameters
	  anymore.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4792>

2023-05-08 16:55:26 +0200  Xabier Rodriguez Calvar <calvaris@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix critical message on cenc sample grouping parsing
	  Inside qtdemux_parse_sbgp there is already a check to ensure the fragment group
	  properties are not null but it is being hit in some examples and it is better to
	  directly avoid the critical.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4576>

2023-06-06 11:34:03 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	  videoflip: update orientation tag in auto mode
	  The frames are flipped according to the tag orientation so it's no longer accurate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4778>

2023-06-06 09:24:37 +0800  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2videodec: treat MPEG 1 format as MPEG 2
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4770>

2023-05-30 15:31:47 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt/meson.build:
	  build/android: remove all references to gnustl
	  Not needed anymore with NDK R25.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4747>

2023-05-30 15:10:11 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* gst/isomp4/gstqtmux.c:
	* gst/isomp4/qtdemux.c:
	  isomp4: Fix (E)AC-3 channel count handling
	  The muxer used a fixed value of 2 channels because the TR 102 366 spec
	  says they're to be ignored. However, the demuxer still trusted them,
	  resulting in bad caps.
	  Make the muxer fill in the correct channel count anyway (FFmpeg already
	  does) and make the demuxer ignore the value.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4739>

2023-05-18 14:23:49 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt6/gstqt6glutility.cc:
	* ext/qt6/meson.build:
	  meson: Support building qml6glsink on win32
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4742>

2023-06-01 16:21:47 +0200  Piotr Brzeziński <piotr@centricular.com>

	* ext/libpng/gstpngdec.c:
	  pngdec: Fix 16bit RGB images display
	  Due to the alpha value being inserted with _BEFORE, we were ending up
	  with ARGB instead of RGBA, thus displaying completely wrong colours.
	  According to libpng's manual, "to add an opaque alpha channel, use filler=0xff
	  or 0xffff and PNG_FILLER_AFTER which will generate RGBA pixels".
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4756>

2023-03-07 14:05:54 +0100  Stéphane Cerveau <scerveau@igalia.com>

	* gst/multifile/meson.build:
	* tests/meson.build:
	  gstreamer-full: add full static support
	  Allow a project to use gstreamer-full as a static library
	  and link to create a binary without dependencies.
	  Introduce the option 'gst-full-target-type' to
	  select the build type, dynamic(default) or static.
	  In gstreamer-full/static build configuration gstreamer (gst.c)
	  needs the symbol gst_init_static_plugins which is defined
	  in gstreamer-full.
	  All the tests and examples are linking with gstreamer but the
	  symbol gst_init_static_plugins is only defined in the gstreamer-full
	  library. gstreamer-full can not be built first as it needs to know what plugins
	  will be built.
	  One option would be to build all the examples and tests after
	  gstreamer-full as the tools.
	  Disable tools build in subprojects too as it will be built at the end of
	  build process.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4128>

2023-05-29 17:02:29 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt6/qt6glrenderer.cc:
	  qt6/glrenderer: don't attempt to use QWindow from non-Qt main thread
	  Use QObject::deleteLater() to schedule deletion in the main thread.
	  Remove the moveToThread of the QWindow.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4728>

2023-05-29 17:01:01 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt/qtglrenderer.cc:
	  qt/glrenderer: don't attempt to use QWindow from non-Qt main thread
	  Use QObject::deleteLater() to schedule deletion in the main thread.
	  Remove the moveToThread of the QWindow.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4728>

2023-05-18 10:25:44 +0900  Hyung Song <hyung.song@lge.com>

	* gst/audioparsers/gstaacparse.c:
	  aacparse: parse GASpecificConfig for channels
	  Some media have valid channel information in GASpecificConfig which is
	  not yet implemented in gstaacparse. Parse data according to ISO/IEC
	  14496-3 just enough to get channels.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4720>

2023-05-29 15:26:35 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/flv/gstflvmux.c:
	* tests/check/elements/flvmux.c:
	  flvmux: push metadata on caps change
	  The metdata contains tags but also caps dependent info such as the
	  resolution and the framerate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4730>

2023-05-29 15:23:11 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/flv/gstflvmux.c:
	* gst/flv/gstflvmux.h:
	  flvmux: rename 'new_tags' to 'new_metadata'
	  The metadata contains more than just tags: resolution, framerate, etc.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4730>

2023-05-29 15:21:27 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/flv/gstflvmux.c:
	  flvmux: add some logs when input is changing
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4730>

2023-05-24 16:17:46 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst/flv/gstflvmux.c:
	  flvmux: use the correct timestamp to calculate wait times
	  Since c0bf793c05cf793aa18a8548cda702625e388115 ("flvmux: Set PTS based on
	  running time") the timestamp of the output buffer is already in running
	  time. So using that for 'srcpad->segment.position' does not work correctly
	  because gst_aggregator_simple_get_next_time() will convert it again with
	  gst_segment_to_running_time().
	  This means that the timestamp returned by
	  gst_aggregator_simple_get_next_time() may be incorrect. For example, if
	  flvmux is added to a already runinng pipeline then the timestamp is too
	  small and gst_aggregator_wait_and_check() returns immediately. As a result,
	  buffers may be muxed in the wrong order.
	  To fix this, use the PTS of the incoming buffer instead of the outgoing
	  buffer. Also add the duration as get_next_time() is supposed to return the
	  timestamp of the next buffer, not the current one.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4701>

2020-08-31 16:38:48 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* ext/jpeg/gstjpegdec.c:
	  jpegdec: be stricter when detecting interlaced video
	  There are broken(?) mjpeg videos that are incorrectly detected as
	  interlaced. This happens because 'info.height > height' (e.g. 1088 > 1080).
	  In the interlaced case info.height is approximately 'height * 2' but not
	  exactly because height is a multiple of DCTSIZE. Make the check more
	  restrictive but take the rounding effect into account.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4696>

2020-08-31 16:12:33 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* ext/jpeg/gstjpegdec.c:
	  jpegdec: decode the correct number of lines for interlaced frames
	  For interlaced jpeg, gst_jpeg_dec_decode_direct() is called twice, once for each
	  field. In this case, stride[n] is plane_stride[n] * 2 to ensure that only every
	  other line is written. So the loop must stop at height / num_fields.
	  If the frame is really interlaced then continuing beyound this, is not harmful,
	  because jpeg_read_raw_data() will do nothing and return 0, so am info message is
	  printed.
	  However, if the frame is not actually interlaced, just misdetected as interlaced
	  then there is still data available from the second half of the frame. Now
	  line[0][j] is set to the scratch buffer. If the scratch buffer is not allocated
	  (because the height is a multiple of v_samp[0] * DCTSIZE) then the result is a
	  segfault due to a null-pointer dereference.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4696>

2023-05-05 15:12:46 +0800  YURI FEDOSEEV <yuri.fedoseev@helixleisure.com>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: support force keyframe event in v4l2 encoder
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4663>

2023-05-19 15:50:11 +0200  Ruben Gonzalez <rgonzalez@fluendo.com>

	* docs/gst_plugins_cache.json:
	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* gst/alpha/gstalpha.c:
	* gst/multifile/gstimagesequencesrc.c:
	  doc: Fix newline char between authors
	  Found running `gst-inspect-1.0 -a |& grep -v ":" | grep @`
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4682>

2023-05-18 11:58:51 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2allocator.c:
	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Fix stalls on empty buffer
	  Drivers may signal end of sequence using an empty buffer and LAST buffer
	  set, or just an empty buffer on certain legacy implementation. When this
	  occured, we'd send GST_V4L2_FLOW_LAST_BUFFER were the code expected
	  GST_FLOW_EOS. Stop abusing GST_FLOW_EOS and port all the code to the new
	  GST_V4L2_FLOW_LAST_BUFFER.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4669>

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

	* gst/isomp4/fourcc.h:
	* gst/isomp4/qtdemux.c:
	  qtdemux: Add support for SpeedHQ video codec
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3982>

2023-05-12 13:49:20 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt6/gstplugin.cc:
	* ext/qt6/gstqml6glmixer.cc:
	* ext/qt6/gstqml6glmixer.h:
	* ext/qt6/gstqml6gloverlay.cc:
	* ext/qt6/gstqml6glsink.cc:
	* ext/qt6/gstqt6elements.h:
	* ext/qt6/meson.build:
	* tests/examples/qt6/meson.build:
	* tests/examples/qt6/qmlmixer/main.cpp:
	* tests/examples/qt6/qmlmixer/main.qml:
	* tests/examples/qt6/qmlmixer/meson.build:
	* tests/examples/qt6/qmlmixer/mixer.qml:
	* tests/examples/qt6/qmlmixer/qmlmixer.qrc:
	  qml6: add a mixer element
	  Can take multiple input streams and a qml scene and layout the input
	  videos inside the qml scene.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4609>

2023-05-06 11:17:43 +0800  Shengqi Yu <shengqi.yu@mediatek.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: fix some errors in probe_caps_for_fromat
	  1, there is a mistake when print stepwise.max_height, fix it
	  2, modify the calculation of width and height under the step wise
	  condition
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4562>

2023-05-17 22:58:46 +0200  Ruben Gonzalez <rgonzalez@fluendo.com>

	* README.md:
	  README.md: fix current version
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4662>

2023-04-27 13:54:58 +0800  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: fix set format failure when needs reset encoder
	  In cases that encoder needs to reset format, there is race while draining.
	  v4l2videoenc finish() sends CMD_STOP command to driver, and desire to return
	  GST_FLOW_OK. But at this time, encoder CAPTURE may have dequeued the last
	  buffer and got eos. finish() return value changes to be GST_FLOW_EOS which
	  causes set format fail. So there is no need to check return value for finish()
	  when set format.
	  Also need to flush encoder after draining to make sure flush is finished.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4495>

2023-05-15 11:45:12 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/gstqtmux.c:
	  qtmux: Fix extraction of CEA608 data from S334-1A packets
	  The index is already incremented by 3 every iteration so multiplying it
	  by 3 additionally on each array access is doing it twice and does not
	  work.
	  This caused invalid files to be created if there's more than one CEA608
	  triplet in a buffer, and out of bounds memory reads.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4634>

2023-05-15 19:10:39 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	  splitmuxsrc: Make PTS contiguous by preference
	  Make splitmuxsrc deal better with stream reordering by
	  making the largest observed PTS contiguous in the
	  next fragment. Previously, it selected DTS, but then
	  aligned that with the segment start of the next fragment,
	  which holds PTS values - leading to glitches in
	  streams that don't have PTS = DTS at the start.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4637>

2023-05-12 13:27:19 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/pulse/pulsesink.c:
	* ext/pulse/pulsesink.h:
	* ext/pulse/pulsesrc.h:
	  pulse: Change bitfield booleans to normal gbooleans
	  Assigning TRUE (1) to a signed 1 bit integer will cause truncation
	  from 1 to -1 because the only non-zero value that can be stored is -1
	  due to how two's-complement works.
	  As this is a proper GObject let's not bother with all this and simply
	  use a normal gboolean instead.
	  ../subprojects/gst-plugins-good/ext/pulse/pulsesink.c:1490:19: warning: implicit truncation from 'int' to a one-bit
	  wide bit-field changes value from 1 to -1 [-Wsingle-bit-bitfield-constant-conversion]
	  pbuf->in_commit = TRUE;
	  ^ ~~~~
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4617>

2023-05-12 13:12:04 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/rtpjitterbuffer.c:
	  rtpjitterbuffer: Fix uninitialized variable compiler warning
	  It could indeed be used uninitialized, but only if one of the
	  g_return_val_if_fail() caused an early return.
	  ../subprojects/gst-plugins-good/gst/rtpmanager/rtpjitterbuffer.c: In function ‘rtp_jitter_buffer_append_query’:
	  ../subprojects/gst-plugins-good/gst/rtpmanager/rtpjitterbuffer.c:1234:10: warning: ‘head’ may be used uninitialized
	  [-Wmaybe-uninitialized]
	  1234 |   return head;
	  |          ^~~~
	  ../subprojects/gst-plugins-good/gst/rtpmanager/rtpjitterbuffer.c:1232:12: note: ‘head’ was declared here
	  1232 |   gboolean head;
	  |            ^~~~
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4616>

2023-05-11 20:01:45 +0200  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxvideo/osxvideosink.m:
	  macos: Set activation policy in osxvideosink and glimagesink
	  Upon creating a window, glimagesink and osxvideosink now set the policy to
	  NSApplicationActivationPolicyRegular, which lets us show an icon in the Dock
	  for convenience and appear in the top menu bar like other apps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4573>

2023-05-10 22:35:27 +0200  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxvideo/cocoawindow.h:
	* sys/osxvideo/cocoawindow.m:
	* sys/osxvideo/osxvideosink.h:
	* sys/osxvideo/osxvideosink.m:
	  macos: Remove old NSApp workaround related code
	  This is no longer needed since the introduction of `gst_macos_main()` in 1.22.
	  Before that existed, we had a patch for GLib in Cerbero, which did work but made it
	  impossible to update GLib at all. The code being removed was a fail-safe in case of
	  running without said patch being applied. It's no longer needed, since for macOS
	  we just wrap our GStreamer with an NSApplication using `gst_macos_main()`.
	  Warnings will be displayed if no NSApp/NSRunLoop is found wherever needed,
	  pointing the user towards using the new API.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4366>

2023-05-11 16:25:11 +0100  Tim-Philipp Müller <tim@centricular.com>

	* tests/check/elements/qtdemux.c:
	* tests/files/editlists.mp4.gz.gz:
	  qtdemux: add unit test for edit list regression
	  File is the mp4 file from #2549 with the mdat atom
	  zeroed out and compressed. We compress twice because
	  apparently compressing 5MB of zeroes effectively in
	  one run is too difficult for gzip.
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2549
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4560>

2023-05-05 19:41:34 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/isomp4/qtdemux.c:
	  Revert "qtdemux: fix conditions for end of segment in reverse playback"
	  This reverts commit 9deb3c27acd4161f810cd782f03bcdaccf2643c7.
	  The test case that was described in the associated MR
	  (https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/262)
	  remains adequately fixed by a related MR that was merged later
	  (https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/275).
	  It introduced incorrect logic that broke edit lists as described in
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2549
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2549
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4560>

2023-05-05 18:27:14 +0200  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxvideo/osxvideosink.m:
	  osxvideosink: fix deadlock upon closing output window
	  Invoking gst_osx_video_sink_osxwindow_destroy() can currently cause a deadlock
	  because showFrame() keeps trying to get the same lock as well. Moving the lock
	  closer to where it's actually needed seems to be enough to fix the issue for now.
	  Reported-by: Alexande B <abobrikovich@gmail.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4559>

2023-05-09 17:28:49 +0200  François Laignel <francois@centricular.com>

	  rtpmanager/rtsession: data race leading to critical warnings
	  This is a fix for a data race leading to:
	  > GLib-CRITICAL: g_hash_table_foreach:
	  >   assertion 'version == hash_table->version' failed
	  Identified sequence:
	  * `rtp_session_on_timeout` acquires the lock on `session` and proceeds with its
	  processing.
	  * `rtp_session_process_rtcp` is called (debug log : received RTCP packet) and
	  attempts to acquire the lock on `session`, which is still held by
	  `rtp_session_on_timeout`.
	  * as part of an hash table iterator, `rtp_session_on_timeout` transitively
	  invokes `source_caps` which releases the lock on `session` so as to call
	  `session->callbacks.caps`.
	  * Since `rtp_session_process_rtcp` was waiting for the lock to be released, it
	  succeeds in acquiring it and proceeds with `rtp_session_process_rr` which
	  transitively calls `g_hash_table_insert` via `add_source`.
	  * After `source_caps` re-acquires the lock and gives the control flow back to
	  `rtp_session_on_timeout`, the hash table iterator is changed, resulting in the
	  assertion failure.
	  This commits copies `sess->ssrcs[sess->mask_idx]` and iterates on the copy so
	  the iterator is not affected by a concurrent change due to the lock being
	  released in the `source_caps` callback.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4555>

2023-05-09 14:37:25 +0100  Philippe Normand <philn@igalia.com>

	* docs/gst_plugins_cache.json:
	* gst/dtmf/gstrtpdtmfdepay.c:
	  rtpdtmfdepay: Classify as RTP element
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4582>

2023-05-09 14:36:56 +0100  Philippe Normand <philn@igalia.com>

	* docs/gst_plugins_cache.json:
	* gst/dtmf/gstrtpdtmfsrc.c:
	  rtpdtmfsrc: Classify as RTP source
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4582>

2023-05-03 21:05:54 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt/meson.build:
	* ext/qt6/meson.build:
	* meson_options.txt:
	  meson: Add more qt options and eliminate all automagic
	  The qt5 and qt6 plugins will now correctly error out if you enable the
	  option, and you can also now explicitly ensure that wayland, x11,
	  eglfs support is actually functional by enabling the options. It was
	  too easy to build non-functional support for these.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4537>

2023-05-04 18:58:13 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ext/jack/gstjackaudioclient.c:
	  jack: tone down log ERRORs in case no JACK server is running
	  jackaudiosink and jackaudiosrc have a rank and might be plugged
	  as part of auto-plugging inside playbin and playsink or the
	  autoaudiosink/autoaudiosrc elements, so we don't really want to
	  spew ERROR log messages in that case, which is consistent with
	  what alsasink and pulseaudiosink do.
	  This is less noticable on Linux because pulseaudiosink has a
	  higher and alsasink which has the same rank comes before jack
	  in the alphabet.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4545>

2023-05-03 15:42:01 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/videofilter/gstvideoflip.c:
	  videoflip: fix setting of method property at construction time
	  Since c2f890ab, element properties are gathered from the parse-launch
	  line and passed at object construction.
	  This caused the following issue to happen in videoflip:
	  * videoflip installed a CONSTRUCT property named method, now deprecated
	  * videoflip now also overrides that property with a video-direction
	  property
	  GObject construction causes method to be set first at construct time,
	  with the user-provided value, then video-direction with the default
	  value.
	  The user-provided value was thus overridden, causing a regression.
	  Fix by not installing the properties as CONSTRUCT, and explicitly
	  implementing constructed() instead in order to ensure that we do still
	  call gst_video_flip_set_method() at least once during construction.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2529
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4536>

2023-05-04 02:41:09 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* gst/rtp/gstrtpvp8pay.c:
	* gst/rtp/gstrtpvp8pay.h:
	* gst/rtp/gstrtpvp9pay.c:
	* gst/rtp/gstrtpvp9pay.h:
	  rtpvp8pay: rtpvp9pay: access picture_id property atomically
	  Atomically set and get the picture_id. This changeset only atomically gets
	  the picture-id when such property is queried on the element, on every other
	  place where it is accessed internally it is accessed directly.
	  This is because there is no MT scenario where we would be modifying this value
	  and reading it internally in parallel.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-05-03 20:53:41 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* gst/rtp/gstrtpvp8pay.c:
	* gst/rtp/gstrtpvp9pay.c:
	* tests/check/elements/rtpvp8.c:
	  rtpvp8pay, rtpvp9pay: increment PictureID on FLUSH_START
	  In recent versions of Chrome (M106) a change on their jitter buffer means that
	  they are very susceptible to PictureID discontinuities.
	  Then avoid at all cost resetting the PictureID. Moreover, according to
	  the RFCs for VP8 and VP9 payloads; the PictureID can start off at any
	  random value. So there is no logical problem of incrementing it here
	  rather than resetting it, as long as it is a different PictureID.
	  WebRTC's recent corruption issue:
	  https://bugs.chromium.org/p/webrtc/issues/detail?id=15101
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-05-03 00:34:55 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtpvp8pay.c:
	* gst/rtp/gstrtpvp9pay.c:
	  rtpvp8pay, rtpvp9pay: expose picture-id as a property
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-05-02 22:21:34 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* tests/check/elements/rtpvp9.c:
	  rtpvp9pay: tests: remove unused struct and argument on test
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-05-02 21:45:48 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtpvp9pay.c:
	* gst/rtp/gstrtpvp9pay.h:
	  rtpvp9pay: add picture-id-offset property
	  Bring the VP9 payloader in sync in this regard to the VP8 payloader
	  Allowing setting the picture id to a known value is useful when testing.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-04-25 15:36:45 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* gst/rtp/gstrtpvp9pay.c:
	  rtpvp9pay: minor refactor of PictureID logic
	  This brings the logic inline with the vp8pay
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-04-25 15:25:57 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* gst/rtp/gstrtpvp8pay.c:
	  rtpvp8pay: avoid reseting PictureID if NO_PICTURE_ID mode is set
	  There is no logical change here, as `& (1 << nbits) - 1` would produce also 0
	  when NO_PICTURE_ID mode is choosen. However, this avoid computing a random
	  integer that is actually unused.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-04-25 15:11:10 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* gst/rtp/gstrtpvp8pay.c:
	* gst/rtp/gstrtpvp8pay.h:
	* gst/rtp/gstrtpvp9pay.h:
	  rtpvp8pay, rtpvp9pay: use GType like name for PictureIDMode
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-05-03 13:21:23 +0200  Xabier Rodriguez Calvar <calvaris@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: emit no-more-pads after pruning old pads
	  If we don't do that, clients can rely on this signal to see the final pad
	  topology but it won't be the real one as some of them will disappear after
	  emitting that signal. This can happen after injecting a different init segment.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4535>

2023-05-01 14:01:02 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2deviceprovider.c:
	  v4l2: device provider: Fix GMainLoop leak
	  On very quick start/stop, the mainloop may never be run. As a side
	  effect, our idle stop function is not really being ran, so we can't rely
	  on that to free the main loop. Simply unref the mainloop when the
	  thread have completely stop.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4521>

2023-03-29 15:34:36 +0200  Carlos Rafael Giani <crg7475@mailbox.org>

	* tests/check/elements/qtdemux.c:
	  qtdemux: Only set appsink sync property and check for async state changes
	  By keeping async to TRUE, a deadlock is avoided where the appsink is
	  filled with data after a flushing seek but before its PAUSED->PLAYING
	  state change finishes. If that happens, the appsink is stuck, because
	  its internal condition variable waits for the appsink to have more room
	  for data. The basesink's preroll lock is held during this, and it also
	  tries to acquire that lock during the state change -> deadlock.
	  By keeping async to TRUE, this flood of data does not happen.
	  Also, setting the max-buffers property to 1 is unnecessary - the test
	  runner will anyway detect excess memory usage if it happens.
	  Other property adjustments turned out to just be redundant.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4200>

2023-03-03 12:10:38 +0100  Carlos Rafael Giani <crg7475@mailbox.org>

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux.h:
	* gst/isomp4/qtdemux_tags.c:
	* tests/check/elements/qtdemux.c:
	* tests/files/sine-1kHztone-48kHzrate-mono-s32le-200000samples-itunes.m4a:
	* tests/files/sine-1kHztone-48kHzrate-mono-s32le-200000samples-nero-with-itunsmpb.m4a:
	* tests/files/sine-1kHztone-48kHzrate-mono-s32le-200000samples-nero-without-itunsmpb.m4a:
	  qtdemux: Add audio clipping meta when playing gapless m4a content
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4200>

2023-02-27 20:36:20 +0100  Carlos Rafael Giani <crg7475@mailbox.org>

	* gst/isomp4/qtdemux_tags.c:
	  qtdemux: use qtdemux debug category instead of default in qtdemux_tags.c
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4200>

2023-04-28 16:06:24 +0100  Tim-Philipp Müller <tim@centricular.com>

	* REQUIREMENTS:
	* docs/gst_plugins_cache.json:
	* ext/amrnb/GstAmrnbEnc.prs:
	* ext/amrnb/README:
	* ext/amrnb/amrnb.c:
	* ext/amrnb/amrnbdec.c:
	* ext/amrnb/amrnbdec.h:
	* ext/amrnb/amrnbenc.c:
	* ext/amrnb/amrnbenc.h:
	* ext/amrnb/meson.build:
	* ext/amrwbdec/README:
	* ext/amrwbdec/amrwb.c:
	* ext/amrwbdec/amrwbdec.c:
	* ext/amrwbdec/amrwbdec.h:
	* ext/amrwbdec/meson.build:
	* ext/meson.build:
	* meson_options.txt:
	* tests/check/elements/amrnbenc.c:
	* tests/check/meson.build:
	  amrnb, amrwbdec: move AMR-NB and AMR-WB plugins to -good
	  Fedora ships these libraries as part of the main distribution now,
	  and they are decades old anyway so don't implement any of the newer
	  features.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4512>

2023-05-01 14:14:25 +0200  François Laignel <francois@centricular.com>

	  rtpmanager/rtsession: race conditions leading to critical warnings
	  While testing the [implementation for insertable streams] in `webrtcsink` &
	  `webrtcsrc`, I encountered critical warnings, which turned out to result from
	  two race conditions in `rtpsession`. Both race conditions produce:
	  > GLib-CRITICAL: g_hash_table_foreach:
	  >   assertion 'version == hash_table->version' failed
	  This commit fixes one of the race conditions observed.
	  In its simplest form, the test consists in 2 pipelines and a Signalling server:
	  * pipelines_sink: audiotestsrc ! webrtcsink
	  * pipelines_src: webrtcsrc ! appsrc
	  1. Set `pipelines_sink` to `Playing`.
	  2. The Signalling server delivers the `producer_id`.
	  3. Initialize `pipelines_src` to establish a session with `producer_id`.
	  4. Set `pipelines_src` to `Playing`.
	  5. Wait for a buffer to be received by the `appsrc`.
	  6. Set `pipelines_src` to `Null`.
	  7. Set `pipelines_sink` to `Null`.
	  The race condition happens in the following sequence:
	  * `webrtcsink` runs a task to periodically retrieve statistics from `webrtcbin`.
	  This transitively ends up executing `rtp_session_create_stats`.
	  * `pipelines_sink` is set to `Null`.
	  * In `Paused` to `Ready`, `gst_rtp_session_change_state()` calls
	  `rtp_session_reset()`.
	  * The assertion failure occurs when `rtp_session_reset` is called while
	  `rtp_session_create_stats` is executing.
	  This is because `rtp_session_create_stats` acquires the lock on `session` prior
	  to calling `g_hash_table_foreach`, but `rtp_session_reset` doesn't acquire the
	  lock before calling `g_hash_table_remove_all`.
	  Acquiring the lock in `rtp_session_reset` fixes the issue.
	  [implementing insertable streams support]: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1176
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4528>

2023-05-02 11:32:01 +0200  Xabier Rodriguez Calvar <calvaris@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix segfault in cenc sample grouping
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4523>

2023-04-26 15:58:23 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2bufferpool.h:
	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: pool: Flush events on capture queue
	  Unfortunately streamoff does not flush the events, and this can cause all
	  sort of issues. Flush events on capture queue. We also return
	  GST_V4L2_FLOW_RESOLUTION_CHANGE in case a resolution change was seen.
	  This allow skipping streamon(capture) on flush, which could lead to a
	  configuration miss-match, or failure if the buffers aren't of the right
	  size.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-21 13:33:11 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Detect flushes while setting up the capture
	  As we missed the fact we were flushing, we could create and activate
	  that buffer pool, and wait on it, causing a hang. We detect that we
	  are flushing by checking the related pad state.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-21 13:30:43 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Don't copy buffer when flushing
	  Threshold handling can race with flushing operation. This can lead to
	  avoidable buffer copies. Simply check and return the flushing status.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-19 14:19:13 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	* sys/v4l2/gstv4l2videodec.h:
	  v4l2: videodec: Don't forcibly drain on resolution changes
	  Let the driver detects the change and reconfigure the capture side
	  transparently from there. This avoid reallocation of the output buffers,
	  and eliminates the need to stop and restart the capture task. This is
	  only happening if the driver have support for this, otherwise the old
	  behaviour is maintained.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-18 11:42:06 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Remove the spurious srccaps probe
	  We don't need to probe the srccaps in set_format() anymore, this
	  handled already in the capture thread while setting up the capture
	  queue.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-17 16:10:34 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Improve few logs
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-17 16:07:21 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Only warn of incomplete drain on success
	  We may have hit an error, or just flushing in order to stop the thread,
	  in which case, not having drain everything is expected and not a
	  driver bug.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-17 16:05:35 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Don't assert when orphaning is not needed
	  This may happen when shutting down and should not cause
	  any harm. This removes the associated assert when shutting
	  down the pipeline, notably with CTRL+C.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-14 18:54:22 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	* sys/v4l2/gstv4l2videodec.h:
	  v4l2: videodec: Wait for source change event
	  Stop doing capture buffer allocation based on guesses
	  and wait for the source change event when available.
	  Unlike stateless decoder, the stateful decoder is not aware of
	  the coded resolution, and this may lead to the wrong result
	  even when using TRY_FMT.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-14 22:22:06 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2bufferpool.h:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2: object: Move the GstPoll into v4l2object
	  Moves the GstPoll from the buffer pool into v4l2object. This will be
	  needed to poll for events before the pool has been created.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-14 23:38:34 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: object: Fix bogus debug objects pointers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-14 09:53:15 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	* sys/v4l2/gstv4l2videodec.h:
	  v4l2: videodec: Move the capture setup into the processing loop
	  In previous implementation that job was split between handle_frame and
	  the processing loop and it wasn't clear if this mechanism was race
	  free. The capture setup would also be tried for every buffer, which was
	  not necessary.
	  This also simplify the handling of SRC_CH event, dropping the unneeded
	  atomic boolean.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-14 09:51:39 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Ensure object is inactive on failure
	  Sprinkle stop() calls in error case to guaranty that the capture object
	  is inactive on failure. Not doing so could allow some code to be called
	  in unexpected (and possibly undefined) conditions.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>

2023-04-21 09:58:36 +0800  jeri.li <jeri.li@mediatek.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2bufferpool: add lock as atomic operation for seek
	  When seek flush, gst v4l2 buffer pool flush is not atomic which will
	  lead double enqueue buffer (qbuf) issue, and v4l2 buffer pool qbuf is
	  also not atomic which will lead no free buffer found in the pool.
	  1. add lock for calculate enqueue number in streamon function
	  2. add lock for v4l2 capture end streamoff in pool flush function
	  3. lock the whole funciton of v4l2 buffer pool qbuf, then the buffer
	  pool index and qbuf operation are atomic
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4465>

2023-04-27 22:12:15 +0800  Haihua Hu <jared.hu@nxp.com>

	* sys/v4l2/gstv4l2src.c:
	  v4l2src: fix cannot reuse current caps when fixate caps in negotiation
	  when regotiation happens, v4l2src will check if it can reuse current caps,
	  but we need check if current caps is subset of all query caps from downstream
	  instead of check it with query caps one by one.
	  Assuming that the current caps is not the subset of first caps from query caps,
	  it will go to try fmt. when try fmt success, v4l2src will make pending_set_fmt
	  to TRUE and going to reset.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4500>

2023-04-28 12:51:08 +0300  Jordan Petridis <jordan@centricular.com>

	* ext/jack/gstjack.c:
	  jack: return TRUE during init when failing to dlopen
	  If we return FALSE, that means the plugin won't be tried again,
	  even if jack is available afterwards.
	  Followup to 689dbd1fbe43f293d7a46d5fa0fe1ddcfbea50d6
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4507>

2023-04-27 16:33:25 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	  Revert "splitmuxsink: Avoid assertion when WAITING_GOP_COLLECT on reference context"
	  This reverts commit f29c19be5821d26a6b7682d0c69ff31d0815e072. If this is
	  called for the reference context then we would run into an infinite
	  loop, which is not really better than an assertion.
	  By fixing up DTS to never be ahead of the PTS in the previous commit
	  this situation should be impossible to hit now.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4498>

2023-04-27 16:29:53 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	  splitmuxsink: Catch invalid DTS to avoid running into problems later
	  DTS > PTS makes no sense, so we clamp DTS to the PTS. Also if there's a
	  PTS but no DTS, then assume that PTS=DTS to make sure we're not working
	  with a much older DTS.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4498>

2023-04-27 13:00:42 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Fix handling of `*` control path
	  Regression introduced by 7f9d689572843ff9e0b8a92128034a8fc4a14d96.
	  Thanks to Tristan Matthews for reporting this.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4497>

2022-12-09 11:16:21 +0100  Sebastian Szczepaniak <s.szczepaniak@metrological.com>

	* gst/isomp4/fourcc.h:
	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux_types.c:
	  qtdemux: Add support for cenc sample grouping
	  Co-authored-by: Xabier Rodriguez Calvar <calvaris@igalia.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3551>

2023-03-19 15:35:29 -0300  Thibault Saunier <tsaunier@igalia.com>

	* docs/meson.build:
	  doc: Avoid shelling out to hotdoc to generate plugins config files
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4479>

2023-04-20 16:31:04 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	* gst/videofilter/gstvideoflip.h:
	  videoflip: check that stream actually changed when resetting
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4377>

2023-04-13 14:19:29 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	* gst/videofilter/gstvideoflip.h:
	* tests/check/elements/videoflip.c:
	  videoflip: reset orientation if not present in a tag update
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4377>

2023-04-13 14:06:19 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	* gst/videofilter/gstvideoflip.h:
	* tests/check/elements/videoflip.c:
	  videoflip: handle tag list scopes
	  STREAM taglist can now overrides the orientation from the GLOBAL
	  taglist, but not the other way around.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4377>

2023-04-10 13:01:14 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	* tests/check/elements/videoflip.c:
	  videoflip: reset orientation on new stream
	  Fix the following use:
	  - upstream sends a video with a rotation tag, say 90°
	  - upstream switches to another video without rotation
	  - the second video was still rotated by videoflip
	  Fix this by resetting the orientation when receiving STREAM_START.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4377>

2023-04-13 11:37:13 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* tests/check/elements/videoflip.c:
	  videoflip: add test rotating from tags
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4377>

2023-03-29 19:50:19 +0300  Jordan Petridis <jordan@centricular.com>

	* ext/jack/gstjack.c:
	* ext/jack/gstjack.h:
	* ext/jack/gstjackaudioclient.c:
	* ext/jack/gstjackaudioclient.h:
	* ext/jack/gstjackaudiosink.c:
	* ext/jack/gstjackaudiosink.h:
	* ext/jack/gstjackaudiosrc.c:
	* ext/jack/gstjackaudiosrc.h:
	* ext/jack/gstjackloader.c:
	* ext/jack/gstjackloader.h:
	* ext/jack/meson.build:
	* tests/examples/jack/meson.build:
	  jack: Dynamically load libjack at runtime instead of linking
	  In order to provide build and provide the jack plugin with the prebuilt
	  binaries of gstreamer we distribute with releases, we can not depend
	  on an external dependency nor can we ship plugins linking to libraries
	  we don't provide.
	  We can also not provide jack ourselves, as it would likely cause a
	  mismatch with the jack daemon on the host.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4350>

2023-04-18 15:28:30 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/meson.build:
	  meson: Add a wrap file for libgudev
	  And allow fallback to it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4447>

2023-04-17 11:36:55 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* ext/adaptivedemux2/dash/gstmpdclient.c:
	  dash: mpdclient: fix divide by 0 if segment has no duration
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4436>

2021-12-23 18:23:57 +0900  Seungha Yang <seungha@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/deinterlace/gstdeinterlace.c:
	* gst/deinterlace/gstdeinterlacemethod.c:
	* gst/deinterlace/gstdeinterlacemethod.h:
	* gst/deinterlace/tvtime-dist.c:
	* gst/deinterlace/tvtime-dist.h:
	* gst/deinterlace/tvtime.orc:
	* gst/deinterlace/tvtime/linear.c:
	* gst/deinterlace/tvtime/vfir.c:
	* gst/deinterlace/tvtime/weave.c:
	* gst/deinterlace/tvtime/weavebff.c:
	* gst/deinterlace/tvtime/weavetff.c:
	* gst/deinterlace/yadif.c:
	  deinterlace: Add support for high bitdepth planar YUV formats
	  Add C implementation for high bitdepth planar YUV formats
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1476>

2021-12-22 19:49:35 +0900  Seungha Yang <seungha@centricular.com>

	* gst/deinterlace/yadif.c:
	  deinterlace: yadif: Prettify indentation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1476>

2023-04-17 09:28:43 +0200  Edward Hervey <edward@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix av1C parsing
	  This is a regression introduced by
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3882
	  The av1c codec configuration parsing would always fail due to an off-by-one
	  error, the content of an atom starting at offset 8 (i.e. the 9th byte) and not
	  9 (the 10th byte).
	  Also introduce a break in order to not get stray warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4433>

2023-04-13 00:55:46 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpmux.c:
	  docs: mark GstRTPMux as plugin API
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4408>

2023-04-12 17:18:13 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2: Fix use after free of fmtdesc part 2
	  Add missing code in merge commit e890e6e8d8bd
	  ("v4l2: Fix use after free of fmtdesc"). The v4l2object code was
	  missing.
	  Related to https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4317
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4411>

2023-04-12 17:18:13 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: Fix use after free of fmtdesc
	  The decoder needs to force another enumeration of the format. For
	  this it was clearing the v4l2object insternal list, leaving a fmtdesc
	  pointer pointing to freed memory. This patch clears the fmtdesc pointer
	  that has just been free. It also makes sure the probe function does not
	  use the cached formats list. The probe function will restore the current
	  fmtdesc pointer based on the currently configured pixelformat.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4317>

2023-03-31 10:32:54 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Prefer acquired caps over anything downstream
	  As we don't have anything smart in the fixation process, we may endup with
	  a format that has a lower bitdepth, even if downstream can handle higher
	  depth. it is notably the case when negotiating with deinterlace, which places
	  is non-passthrough caps before its passthrough one. This makes the generic
	  fixation prefer the formats natively supported by deinterlace element over
	  the HW 10bit format. As some HW can downscale 10bit to 8bit, this can break
	  10bit decoding.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4317>

2023-03-31 10:31:07 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Remove leading space in comment
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4317>

2023-03-03 18:40:22 +0000  Jan Alexander Steffens (heftig) <heftig@archlinux.org>

	* docs/gst_plugins_cache.json:
	* gst/multifile/gstimagesequencesrc.c:
	  imagesequencesrc: Properly set default location
	  Noticed this because the generic_states test kept segfaulting at random.
	  GLibC 2.37 can crash when NULL is supplied as a format string.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4109>

2023-04-12 12:47:02 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst/multifile/gstimagesequencesrc.c:
	* gst/multifile/gstmultifilesrc.c:
	  multifile: error out if no filename was set
	  Fixes #2483
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4404>

2022-11-22 23:06:02 +0900  Seungha Yang <seungha@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/udp/gstudp.c:
	* gst/udp/gstudpnetutils.c:
	* gst/udp/gstudpnetutils.h:
	* gst/udp/gstudpsink.c:
	* gst/udp/gstudpsrc.c:
	* gst/udp/gstudpsrc.h:
	* tests/check/elements/udpsrc.c:
	  udpsrc: Add support for IGMPv3 SSM
	  Adding "multicast-source" property to support Source Specific Muliticast
	  RFC 4604. The source can be multiple address with '+' (for positive
	  filter) or '-' (negative filter) prefix, or URI query can be used.
	  Note that negative filter is not implemented yet and it will be
	  ignored
	  Example:
	  gst-launch-1.0 uridecodebin \
	  uri=udp://{ADDRESS}:PORT?multicast-source=+SOURCE0+SOURCE1
	  Inspired by:
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2620
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3485>

2023-04-11 17:54:23 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: fix critical when using an unsupported URI
	  adaptivedemux2 only supports http(s), trying to use it with, say,
	  file:// was raising a CRITICAL in libsoup.
	  Fix #2476
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4396>

2023-04-06 08:55:46 +0200  Matthias Fuchs <matthias1.fuchs@zeiss.com>

	* ext/qt/qtwindow.cc:
	  qtwindow: unref caps in destructor
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4393>

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/4328>

2023-04-05 19:36:15 +0300  Jordan Petridis <jordan@centricular.com>

	* ext/jack/gstjackaudiosink.c:
	* ext/jack/gstjackaudiosrc.c:
	* ext/jack/meson.build:
	  jack: remove version guards from the code
	  We already require >= 1.9.7 in meson and thus we can remove
	  the older codepath.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4348>

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/3336>

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/4339>

2023-04-04 23:58:36 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	  adaptivedemux: Don't parse URI unnecessarily
	  Short-circuit parsing and recreating the playlist URI if
	  no HLS directives are going to be applied to it.
	  Fixes problems playing some streams (YouTube) that have
	  unneeded escaped characters in the URI and then complain
	  when GStreamer removes the escaping
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4335>

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/4287>

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/4256>

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/4183>

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/4229>

2023-03-20 11:20:30 +0100  Edward Hervey <edward@centricular.com>

	* gst/rtp/gstrtph264pay.c:
	* gst/rtp/gstrtph265pay.c:
	  plugins: Fix wrong enum usage
	  gcc 13 now detects conflicting enum usages. Fix the various cases where it was wrong
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4225>

2023-02-15 18:06:36 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2: Don't blindly set the main manifest URI as referer
	  There's no guarantee it will *actually* be the URI which refered to what we are
	  downloading. It could be a stream URI or anything else.
	  Instead of putting something wrong, put no (specific) referer as a better choice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3972>

2023-02-15 17:32:39 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	  hlsdemux2: Don't set a referer when updating playlists
	  In the same way we don't for regular playlists in the base class.
	  If there is a referer specified by the app/user, the downloadhelper will set it
	  accordingly.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3972>

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/4210>

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/4210>

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/4210>

2023-03-16 20:54:14 +0100  Enrique Ocaña González <eocanha@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix crash on MSE-style flush
	  The flowcombiner and active_streams shouldn't be cleared in the
	  mse-bytestream variant, only in the mss-fragmented one. Otherwise the
	  soft reset leaves qtdemux in a state where it still believes that it has
	  streams, but they've been cleared. In that case, a null pointer
	  dereference happens and the app crashes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4199>

2023-03-15 18:52:48 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ext/flac/gstflacdec.c:
	* ext/gtk/gstgtkbasesink.c:
	* ext/jpeg/gstjpegdec.c:
	* ext/pulse/pulsesink.c:
	* ext/pulse/pulsesrc.c:
	* ext/pulse/pulseutil.c:
	* ext/wavpack/gstwavpackcommon.c:
	* gst/alpha/gstalpha.c:
	* gst/apetag/gstapedemux.c:
	* gst/audiofx/audioamplify.c:
	* gst/audiofx/gstscaletempo.c:
	* gst/audioparsers/gstac3parse.c:
	* gst/audioparsers/gstwavpackparse.c:
	* gst/avi/gstavidemux.c:
	* gst/avi/gstavimux.c:
	* gst/deinterlace/gstdeinterlace.c:
	* gst/flv/gstflvdemux.c:
	* gst/goom/mmx.c:
	* gst/imagefreeze/gstimagefreeze.c:
	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux_tags.c:
	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-mux.c:
	* gst/rtp/dboolhuff.c:
	* gst/rtp/gstrtph263depay.c:
	* gst/rtp/gstrtpmparobustdepay.c:
	* gst/rtp/gstrtpsv3vdepay.c:
	* gst/rtsp/gstrtspsrc.c:
	* gst/videofilter/gstvideotemplate.c:
	* gst/wavenc/gstwavenc.c:
	* sys/oss4/oss4-sink.c:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2transform.c:
	* sys/v4l2/v4l2_calls.c:
	* tests/check/elements/dtmf.c:
	* tests/check/elements/rtpvp8.c:
	* tests/check/elements/rtpvp9.c:
	* tests/check/elements/videocrop.c:
	* tests/check/elements/videofilter.c:
	* tests/check/elements/vp8enc.c:
	  gst-plugins-good: re-indent with GNU indent 2.2.12
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4182>

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/4151>

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/4151>

2023-03-09 15:08:19 +0200  Itamar Marom <imarom@trigoretail.com>

	* gst/multifile/gstsplitmuxsink.c:
	  splitmuxsink: Fix docs support version
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4138>

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/4123>

2023-03-03 23:15:42 +0900  Seungha Yang <seungha@centricular.com>

	* ext/adaptivedemux2/downloadrequest.c:
	  adaptivedemux2: Fix MSVC build error
	  downloadrequest.c(497): error C4013: 'atoi' undefined; assuming extern returning int
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4107>

2023-03-02 18:05:08 +0100  Alicia Boya García <aboya@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Add MSE-style flush
	  The abort() method of SourceBuffer in Media Source Extensions is
	  expected to flush the demuxer and discard the current fragment,
	  if any. The configuration of tracks, if any, should be preserved.
	  qtdemux has different behavior for flush events depending on the
	  context.
	  This patch activates the intended behaviour only for streams of the
	  VARIANT_MSE_BYTESTREAM type, conformant to the ISO BMFF Bytestream
	  specification[1]. This flush behaviour is the same as the one
	  already in use for adaptivedemux sources.
	  [1] https://www.w3.org/TR/mse-byte-stream-format-isobmff/
	  https://bugzilla.gnome.org/show_bug.cgi?id=795424
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4101>

2023-02-22 17:18:11 +0800  Shengqi Yu <shengqi.yu@mediatek.com>

	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-parse.c:
	  matroskademux: Consider TrackUID==0 a warning and not handle it as error
	  some special files whose trackUID is 0 can be played on the other
	  player. But it cannot be played in GStreamer, because trackUID 0 will be
	  treated as an error in matroskademux.
	  So, it makes sense to only consider trackUID==0 a warning and not handle
	  it as error
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1821
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4036>

2021-09-15 10:21:19 -0400  Scott Kanowitz <skanowitz@echo360.com>

	* gst/rtpmanager/gstrtpsession.c:
	  rtpsession: fix a race condition during the EOS event in gstrtpsession.c
	  This patch prevents a possible race condition from taking place between the EOS event handling and rtcp send
	  function/thread.
	  The condition starts by getting the GST_EVENT_EOS event on the send_rtp_sink pad, which causes two core things
	  to happen -- the event gets pushed down to the send_rtp_src pad and all sessions get marked "bye" prior to
	  completion of the event handler. In another thread the rtp_session_on_timeout function gets called after an
	  expiration of gst_clock_id_wait in the rtcp_thread function. This results in a call to the
	  ess->callbacks.send_rtcp(), which is configured as a function pointer to gst_rtp_session_send_rtcp via the
	  RTPSessionCallbacks structure passed to rtp_session_set_callbacks in the gst_rtp_session_init function.
	  In the race condition, the call to gst_rtp_session_send_rtcp can have the all_sources_bye boolean set to true
	  while GST_PAD_IS_EOS(rtpsession->send_rtp_sink) evaluates to false. This is the result of gst_rtp_session_send_rtcp
	  running before the send_rtp_sink's GST_EVENT_EOS handler completes. The exact point at which this condition occurs
	  is if there's a context switch to the rtcp_thread right after the call to rtp_session_mark_all_bye in the
	  GET_EVENT_EOS handler, but before the handler returns.
	  Normally, this would not be an issue because the rtcp_thread continues to run and indirectly call
	  gst_rtp_session_send_rtcp. However, the call to rtp_source_reset sets the sent_bye boolean to false, which ends up
	  causing rtp_session_are_all_sources_bye to return false. This gets passed to gst_rtp_session_send_rtcp and the EOS
	  event never gets sent.
	  The race condition results in the EOS event never getting passed to the rtcp_src pad, which prevents the bin and
	  pipeline from ever completing with EOS.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3798>

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/4050>

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/4042>

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/4040>

2023-02-16 21:31:59 +0100  Rafał Dzięgiel <rafostar.github@gmail.com>

	* ext/adaptivedemux2/dash/gstmpdclient.c:
	  dashdemux2: mpdclient: Debug all restrictions when selecting rep
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3894>

2023-01-29 20:00:45 +0100  Rafał Dzięgiel <rafostar.github@gmail.com>

	* docs/gst_plugins_cache.json:
	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/dash/gstdashdemux.h:
	  dashdemux2: Add start-bitrate property
	  Similarly to hlsdemux2 that has this property, also add it to dashdemux2
	  so users can use it to choose first alternate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3894>

2022-11-13 18:12:51 +0100  Rafał Dzięgiel <rafostar.github@gmail.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/dash/gstmpdclient.c:
	* ext/adaptivedemux2/dash/gstmpdclient.h:
	* tests/check/elements/dash_mpd.c:
	  dashdemux2: Improve initial representation selection
	  Do not always start with lowest quality possible. Use properties set
	  by user to select best allowed initial representation at startup too.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3894>

2023-02-05 16:21:57 +0100  Rafał Dzięgiel <rafostar.github@gmail.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Make start-bitrate property work without connection-speed
	  Makes "start-bitrate" work without setting "connection-speed" property. Having
	  another property set as a requirement for this one to work is unexpected.
	  This commit allows to request some initial bitrate for first segment, then
	  go into adaptive streaming for the rest of media playback.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3895>

2020-06-16 15:18:37 +0900  Hosang Lee <hosang10.lee@lge.com>

	* tests/check/elements/qtdemux.c:
	* tests/files/mss-fragment.m4f:
	  tests: qtdemux: add test for MSS fragment wrong data offset compensation
	  A data offset with an offset smaller than the moof length is wrong
	  in smooth streaming streams. The samples will not be located and
	  eventually playback will error out. So compensate assuming data
	  is in mdat following moof.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3840>

2023-01-27 02:17:47 +0000  Tim-Philipp Müller <tim@centricular.com>

	* tests/check/elements/qtdemux.c:
	* tests/check/elements/qtdemux.h:
	* tests/files/qtdemux-test-BBB_32k_1.mp4:
	* tests/files/qtdemux-test-BBB_32k_init.mp4:
	* tests/files/qtdemux-test-audio-init.mp4:
	* tests/files/qtdemux-test-audio-seg1.m4f:
	  tests: qtdemux: use binary files for samples
	  Instead of hexdumping it in a 360k header file.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3840>

2020-06-16 15:18:37 +0900  Hosang Lee <hosang10.lee@lge.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: compensate wrong data offset for MSS fragments
	  A data offset with an offset smaller than the moof length is wrong
	  in smooth streaming streams.
	  The samples will not be located and eventually playback will
	  error out. So compensate assuming data is in mdat following moof.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3840>

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

	* gst/multifile/gstsplitmuxsrc.c:
	  splitmuxsrc: Proxy latency query to part reader
	  splitmuxsrc can respond to the latency query
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3566>

2023-02-13 12:47:31 -0800  Khem Raj <raj.khem@gmail.com>

	* sys/v4l2/gstv4l2object.h:
	  v4l2: Define ioctl_req_t for posix/linux case
	  this is an issue seen with musl based linux distros e.g. alpine [1]
	  musl is not going to change this since it breaks ABI/API interfaces
	  Newer compilers are stringent ( e.g. clang16 ) which can now detect
	  signature mismatches in function pointers too, existing code warned but
	  did not error with older clang
	  Fixes
	  gstv4l2object.c:544:23: error: incompatible function pointer types assigning to 'gint (*)(gint, ioctl_req_t, ...)' (aka 'int (*)(int, unsigned long, ...)') from 'int (int, int, ...)' [-Wincompatible-function-pointer-types]
	  v4l2object->ioctl = ioctl;
	  ^ ~~~~~
	  [1] https://gitlab.alpinelinux.org/alpine/aports/-/issues/7580
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3950>

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/3934>

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/3934>

2023-02-03 11:25:29 +0100  Edward Hervey <bilboed@bilboed.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Use track ID for debugging
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3890>

2023-02-03 11:23:50 +0100  Edward Hervey <bilboed@bilboed.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	* ext/adaptivedemux2/gstadaptivedemux.h:
	  adaptivedemux2: Split track id from event stream-id
	  The id is used for naming of the various objects and debugging. We don't
	  want/need it to be obfuscated with the massive upstream id.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3890>

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/3882>

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/3882>

2022-11-14 10:49:02 +0100  Patricia Muscalu <patricia@axis.com>

	* gst/rtp/gstrtph264pay.c:
	* tests/check/elements/rtph264.c:
	  rtph264pay: Don't insert SPS/PPS before the second image slice
	  Only the first slice, for which fist_mb_in_slice is set to 0,
	  should trigger insertion of SPS and PPS buffers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3402>

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/3867>

2023-01-25 11:07:43 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.h:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Remove enable-llhls property
	  This was only used for testing purposes
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-25 10:52:10 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Don't leak PDT datetime
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-25 10:08:50 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	* ext/adaptivedemux2/mss/gstmssdemux.c:
	  adaptivedemux2: Don't leak taglist
	  Clarify the ownership in the documentation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-25 07:46:22 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	  adaptivedemux2: Don't leak track tags
	  The tags are fully transfered to this function
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-06 00:14:27 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadhelper.c:
	  adaptivedemux2: Log request duration in debug output
	  When completing, log how long a HTTP request took into the debug output.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-04 11:49:14 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Improve live playlist update intervals
	  The live playlists should be updated at a defined interval. The problem is that
	  this interval was used *after* the playlist was finally received and processed,
	  which resulted in a gradual shift happening in playlist updates.
	  Instead store and use the time at which playlists were requested to determine
	  when the next one should be downloaded.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-04 11:45:30 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	  hlsdemux2: Fix playlist reload interval when unchanged
	  When falling back to using the regular last segment, use that duration as the
	  identical-playlist reload interval (and not the playlist target duration which
	  could be much larger)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-04 11:40:40 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Fix position searching
	  The scanning is done in a reverse order, the proper full checks to do are
	  therefore:
	  * If the position is beyond half a "segment duration", it's in the following
	  segment
	  * If the position is within the first half of a segment, it's in that one
	  * If the segment is the first one and the position is within half a duration
	  backwards, we consider the position as being within that first segment
	  Also handle the case where a "partial only" segment doesn't have a reliable
	  duration, and therefore use the playlist target duration instead.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-04 11:17:42 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Handle all cases for starting segment calculation
	  The implementation wouldn't work with regular HLS streams (i.e. the final
	  fallback).
	  Now that the implementation uses time to search for the starting
	  segment (instead of just the n-th from the end), we can specify the correct
	  hold_back fallback value from the RFC
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-04 11:16:14 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Fix buffering threshold calculation and handling
	  * The checks for smaller values were wrong
	  * Properly initialize the stream default recommended buffering threshold so that
	  a default (10s) value is used until the subclass can provide a proper value
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-04 10:28:40 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Make sure simple media playlist is properly primed
	  By setting/propagating stream time initially
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-30 23:37:23 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	* ext/adaptivedemux2/gstadaptivedemux.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	  adaptivedemux2: Fix manifest access during seeking query
	  Avoid a deadlock if a downstream seeking query happens while the scheduler
	  thread is holding the manifest lock (for example during a seek back to live).
	  Instead, do a more elaborate fix where the external calls that need access to a
	  'manifest' access a copy that's updated during a manually triggered manifest
	  update callback.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-03 21:15:21 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Symbol hygiene cleanup
	  Rename track_dequeue_data_locked() to
	  gst_adaptive_demux_track_dequeue_data_locked(), since it's non-static.
	  Make find_stream_for_track_locked() static since it's only used in the main
	  gstadaptivedemux.c file.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-03 21:03:35 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-stream.h:
	  adaptivedemux2: Fix download error handling more
	  gst_adaptive_demux2_stream_finish_download() will already schedule another
	  fragment download if it can so don't fall through to the retry code that will
	  also try and schedule a download (triggering an assert).
	  Fix the logic in general to retry advancing into the live seek range once.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-02 22:32:13 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	  hlsdemux2: Immediately request playlist after URI changes
	  When the stream switches to a new playlist / variant while the loader is waiting
	  on a timer to refresh the old playlist, cancel the timer and submit the request
	  for the new URI.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

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

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Re-add support for fallback variant URLs
	  fallback variant URLs get accumulated into a list in the variant now. If there's
	  one available, switch to it after a variant update failure (failure to load the
	  variant 3 times)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-31 00:51:55 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Demote log message
	  Don't complain loudly about replacing the current pending playlist, just log it
	  at debug level
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

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

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Wait for playlist load after a switch
	  Check in update_fragment_info() if the playlist we want has actually been loaded
	  yet, and return BUSY if not.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-30 23:39:46 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Handle async playlist loading failures
	  Add failed variant playlists to a list and failover to other variants until
	  there is none left
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-28 04:40:38 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Wait for playlist switch during seek.
	  When switching to/from an iframe variant to do seeking, wait for the target
	  playlist to load before handling the seek.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-28 02:01:57 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	  hlsdemux2/playlist-loader: Implement more features
	  Implement limited retries on download errors before reporting it, and remember
	  permanent redirects, with LL-HLS directives removed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-28 00:45:15 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemuxdemux2: Consider the hold-back when calculating seek range
	  When calculating the seek range for a live stream, use the same hold-back logic
	  as when choosing a starting segment, including low-latency segments if
	  enabled. Permits seeking closer to the live edge when re-synching or catching
	  up.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-27 03:04:36 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.h:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	  hlsdemux2: Continue reworking code for async playlist updates
	  Everything is working again now except for corner cases:
	  - Failing over to another playlist after a load failure
	  - Remembering playlist redirects and using that URI
	  directly next time.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-31 23:26:03 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Handle more async stream cases
	  Handle BUSY flow returns when making calls from external threads, and inhibit
	  fragment downloads during stream prepare
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-24 01:37:40 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Add llhls-enabled property to streams
	  Tidying: Make the llhls-enabled setting configurable through a stream property
	  instead of set manually after construction.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-24 01:36:52 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Add gst_hls_demux_stream_set_playlist_uri
	  Add a method that configures the new playlist URI for a stream.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-24 17:03:21 +0100  Edward Hervey <bilboed@bilboed.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.h:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/meson.build:
	  hlsdemux2: Add HLS playlist loader
	  Add a helper that asynchronously loads and refreshes the playlist for HLS
	  streams.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-31 00:33:51 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2: Fix for failed download handling
	  When playing at the live edge of a live playlist, and a download fails, we don't
	  expect there to be a next fragment. That case is handled lower down anyway, so
	  don't retry infinitely on spurious http errors at the live edge.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-28 00:41:44 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Drop segment lock on stream_seek error.
	  If stream_seek() fails, make sure to drop the segment lock before bailing out.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-31 23:22:29 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-stream.h:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Add gst_adaptive_demux2_stream_wait_prepared()
	  Add a method that waits for a stream to signal the prepare_cond after it returns
	  a BUSY flow return.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-27 03:46:47 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Remove gst_adaptive_demux2_stream_has_selected_tracks
	  Use gst_adaptive_demux2_stream_is_selected_locked() instead, which is identical
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-25 03:39:47 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux.h:
	  adaptivedemux2: Move GST_ADAPTIVE_DEMUX_FLOW_BUSY to adaptivedemux.h
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-15 02:27:27 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  adaptivedemux2: Add start/stop vfuncs
	  Remove the can_start() vfunc, in favour of vfuncs when the stream starts/stops,
	  allowing the sub-class to do custom logic before (or preventing) the stream from
	  starting and stopping.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-09 02:17:51 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Remove unused function argument
	  Remove the demux argument from the
	  gst_hls_demux_stream_update_rendition_playlist() method
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-09 02:07:57 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	* ext/adaptivedemux2/gstadaptivedemux.h:
	  adaptivedemux2: Add gst_adaptive_demux_get_loop()
	  Add an accessor function for retrieving the demuxer's scheduler thread loop.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-09 01:35:40 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-period.c:
	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Add gst_adaptive_demux_period_add_stream()
	  Make a function for adding a stream to a period, for better encapsulation.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-09 00:54:47 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-stream.h:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Add new flow return value for BUSY and PREPARE stream state
	  Neither are used yet, they're just placeholders.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-30 07:54:07 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: support old compilers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-26 03:01:14 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Place HLS delivery directives in UTF-8 order.
	  Use new GstURI gst_uri_to_string_with_keys() API to produce the playlist URI
	  with query arguments in UTF-8 order.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-26 02:59:48 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Avoid assert in _has_next_fragment()
	  gst_hls_demux_stream_has_next_fragment() can be called with a NULL
	  current_segment if we're past the end of the current playlist. In that case,
	  just return FALSE instead of hitting a critical in the playlist code.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-26 01:21:33 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Include skipped segments in MSN calculation
	  When a playlist has skipped segments, increment the MSN to account for them so
	  the remaining segments end up with the right sequence numbers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-25 03:57:38 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Use partial segment for playlist update interval
	  When playing LL-HLS playlists in LL-HLS mode, update the playlist more often (on
	  the partial segment interval) or else we end up downloading them in bursts and
	  playing further from the live edge than intended.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-25 01:14:12 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Do a full playlist reload if delta fails
	  If we do a delta playlist request but then can't merge the result with the
	  existing playlist, retry with a full playlist request.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-18 04:35:51 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Fill in skipped segments if possible
	  After reloading a playlist using a delta request, use the previous playlist to
	  fill in skipped segments if possible.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-18 04:35:00 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Add gst_hls_media_playlist_sync_skipped_segments()
	  Add a method that transfers over skipped segments from a reference playlist,
	  used to repopulate a delta playlist
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-18 03:24:38 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Parse EXT-X-SKIP tag
	  Parse the attributes from the EXT-X-SKIP tag
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

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

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Use skip and blocking playlist delivery directives
	  Detect when we can use a blocking request and delta playlist update requests and
	  add the required delivery directives to the request URI.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-18 01:23:54 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Add gst_hls_media_playlist_get_next_msn_and_part()
	  Add a function that computes the media sequence number and/or part index that
	  are immediately after the end of the playlist, for use in blocking playlist
	  requests
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

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

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Use stream llhls_enabled flag
	  Use the stream's copy of the llhls_enabled flag when deciding whether to do
	  preload requests - the value that was cached when the stream started
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-18 00:26:41 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	* ext/adaptivedemux2/gstadaptivedemux.h:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	* ext/adaptivedemux2/hls/meson.build:
	  hlsdemux2: Split the stream object out
	  Move the stream object to a separate file to split the demux level behaviour
	  from the stream behaviour better.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-17 02:59:37 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Add a timestamp to the playlist
	  Store the timestamp for this playlist. If valid it represents the monotonic time
	  at which the data was retrieved, minus any proxy cache Age field.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-17 03:49:12 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadrequest.c:
	* ext/adaptivedemux2/downloadrequest.h:
	  adaptivedemux2/downloadrequest: add a helper to retrieve the Age header
	  Add a method to look at HTTP response headers and parse and return any Age
	  header, provided by caching proxy servers if the data was provided from a cache.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-27 23:53:51 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Fix missed segment match for partial-only segment
	  Fix a case where the matching code might not select the final partial-only
	  segment because it has too short a duration (while it's still being created)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-27 03:44:29 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: In live, match buffering to the hold back distance
	  When playing a live stream, make the recommended buffering threshold at most the
	  hold-back distance from live. If we start 3 seconds from the live edge, there's
	  no point trying to buffer more - we'll just hit the live edge and have to wait
	  for more data to be available anyway.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-25 01:03:16 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Resync stream time on partial segment boundaries
	  When resyncing stream times in a playlist, support at any partial segment
	  position, not just at full segment boundaries.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 23:32:56 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.c:
	  hlsdemux2: Calculate / transfer timing info for preloads
	  When fulfilling data requests, transfer timing information so the stream can
	  calculate data bitrates.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 23:30:59 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadhelper.c:
	* ext/adaptivedemux2/downloadrequest.c:
	* ext/adaptivedemux2/downloadrequest.h:
	  adaptivedemux2: Add most recent data time and offset helper
	  Add a field to the DownloadRequest that reports the most recent time at which
	  data arrived. Update it in the DownloadHelper.
	  Add a method to retrieve the GST_BUFFER_OFFSET() for the DownloadRequest's data
	  buffer (if any).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 22:12:26 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadrequest.c:
	  adaptivedemux2: Handle another case in download_request_take_buffer_range
	  Handle the case where we want to get a range from the available data that
	  doesn't start at the first available byte (and discard the bytes before that
	  start offset).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 22:01:55 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Cancel preload before fetching something else
	  When submitting a request for fragment or header that doesn't match any preload,
	  make sure there's not an ongoing preload for that data type, to avoid parallel
	  downloads using up bandwidth.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 06:41:21 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.c:
	  hlsdemux2: Fix assertion on shutdown
	  After cancelling a DownloadRequest, the download helper may not do so
	  immediately, so we can't assert on the in_use flag. Also, since there's no
	  refcount on the preload hint struct in the download request callback data, make
	  sure no callbacks will be dispatched when we're going to free the preload hint
	  struct.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 06:28:47 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Implement the stream submit_request() vfunc
	  Implement the submit_request() vfunc for streams and fulfil requests from the
	  preload hint data if possible.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 06:25:28 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.h:
	  hlsdemux2/preloader: Implement basic request handling
	  Implement fulfilment of HTTP requests from the active preload downloads by
	  finding any preload request that can provide the requested data and feeding
	  bytes from the internal DownloadRequest to the caller provided target
	  DownloadRequest.
	  Doesn't yet calculate timestamps to make the target request have a sensible
	  apparent bitrate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 06:22:35 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadrequest.c:
	* ext/adaptivedemux2/downloadrequest.h:
	  adaptivedemux2/downloadrequest: Add new methods
	  Add download_request_take_buffer_range() and
	  download_request_get_bytes_available() methods.
	  download_request_take_buffer_range() takes bytes from the front of the request
	  that satisfy the requested start/end byterange, and puts any remaining bytes
	  back into the DownloadRequest
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-13 21:35:00 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivdemux2: Improve a comment about unlocking download requests.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-13 14:49:35 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-stream.h:
	  adaptivedemux2: Make download mechanism overrideable
	  Make the mechanism by which DownloadRequests are fulfilled overrideable by the
	  subclass, in case it has an internal mechanism it can use (such as blocking
	  preloads in HLS)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-13 05:19:57 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	* ext/adaptivedemux2/hls/meson.build:
	  hlsdemux2: Add preloader helper.
	  Add a helper that submits and handles blocking preload requests for future
	  PART/MAP data from live playlists. Add handling in the hlsdemux stream to submit
	  preload requests when hitting the end of the available segments in a live
	  playlist.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-13 05:17:59 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Add preload equality helper
	  Add a helper function that compares two preload hints for equality based on URI
	  and requested byte range.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-13 05:15:17 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadhelper.h:
	  adaptivedemux2: Define RFC8673_LAST_BYTE_POS
	  Define the recommended value from RFC8673 for the last byte of an open-ended
	  range request intended to invoke chunked blocking downloads of an incrementally
	  created resource.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-17 02:12:21 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Ignore partial segments when not live
	  Add some checks that LL-HLS support is enabled and that the current playlist is
	  live before proceeding to play any partial segments.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-16 22:05:03 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Print playlist age in debug output
	  Store the timestamp when playlists are updated, and add some debug output to the
	  update_fragment_info that estimates how far from the live edge the fragment
	  currently is
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-13 05:44:24 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Implement LL-HLS flag and part-hold-back/hold-back in live.
	  Add a flag to hlsdemux to enable or disable LL-HLS handling.
	  When LL-HLS is enabled and an LL-HLS playlist is loaded, use the part-hold-back
	  threshold to choose a starting segment.
	  For live streams that aren't LL-HLS, use the provided hold-back attribute, or
	  fall back to landing 3 segments from the end.
	  Make the gst_hls_media_playlist_seek() method able to choose a partial segment
	  within 2 target durations of the end of the playlist when requested.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-12 05:00:32 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  m3u8demux2: Fix off-by-one and leak.
	  Fix an off-by-one in gst_hls_media_playlist_sync_to_playlist() that would ignore
	  the first fragment in the reference playlist.  The error was harmless, since we
	  expect the reference playlist to be older than the playlist we're
	  synchronising (so the first/oldest segment in the reference playlist will likely
	  not exist in the new playlist), so this is just for correctness.
	  Also fix a segment leak in gst_hls_media_playlist_advance_fragment() when
	  ignoring the partial_only segment.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-12 04:59:09 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Fix segment advance on partial segments.
	  Fix the duration passed to gst_adaptive_demux2_stream_advance_fragment() when
	  advancing from a partial segment.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-12 04:58:47 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Improve some debug output
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-12 04:56:47 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Add and use gst_hls_media_playlist_find_position()
	  Add a function for synchronising current position with the contents of a
	  playlist that is specifically for that and can handle synchronising to a partial
	  segment.
	  gst_hls_media_playlist_seek() will be used only when performing external seek
	  requests, to find the best segment or partial segment at which to resume
	  playback.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-12 02:14:47 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Add debug in find_segment_in_playlist()
	  In m3u8 segment matching, print the PDT that was matched between playlists.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-12 02:11:34 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Fix some m3u8 segment leaks
	  Make sure unref m3u8 segments in some missed paths.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-07 15:02:26 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Allow starting at the partial_only segment
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

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

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Recalculate partial segments in anchor segment
	  When recalculating the partial segment stream times in
	  gst_hls_media_playlist_recalculate_stream_time(), don't miss the anchor segment
	  itself.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

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

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Dump init uri details for segments.
	  When dumping an m3u8 playlist to debug, include information about any
	  initialisation data.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

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

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Use gst_hls_media_playlist_recalculate_stream_time()
	  Instead of recalculating stream times manually in a playlist, let the playlist
	  do it, so that it fixes up partial segment stream times too.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

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

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: LL-HLS improvements
	  Fixes for stream_time recalculation and handling in partial segments.
	  Disallow bitrate switching when in the middle of partial segments - only at a
	  full segment (or right before the first partial segment of a segment).
	  It's possible but more difficult to switch bitrates in the middle of a partial
	  segment group, since they are less likely to have aligned keyframes. In any
	  case, the seek code can't do that right now.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

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

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	  hlsdemux2: Continue implementing LL-HLS support
	  Somewhat working support for proceeding into the partial segments appearing at
	  the live edge of the playlist.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-07-30 00:47:18 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Mark locations where partial segments need handling
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-22 00:15:04 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	  hlsdemux2: Start adding partial_segment handling
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-17 14:51:39 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Note STABLE-RENDITION-ID is not handled
	  Add a comment that STABLE-RENDITION-ID is not yet parsed or used.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-09 01:19:46 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Calculate stream times for partial segments
	  When calculating stream times for segments, fill in the stream time fields on
	  any attached partial segments
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-08 23:48:31 +1000  Jan Schmidt <jan@centricular.com>

	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Add unit test for parsing LL-HLS playlist
	  Test parsing of partial segments (EXT-X-PART, EXT-X-PART-INF) and preload
	  hints (EXT-X-PRELOAD)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-09 00:39:13 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Implement preload hint parsing
	  Load EXT-X-PRELOAD-HINT into a preload_hints array in the media playlist
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-08 14:33:56 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Implement EXT-X-SERVER-CONTROL parsing
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-08 01:35:44 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Add parsing of partial segments
	  Add partial segments to each media segment, and potentially create a trailing
	  dummy segment if there are partial segments at the end of the playlist
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-08 23:08:24 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: make helper function for parsing times
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-08 08:17:56 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Global output position is always positive
	  Change to non-signed GstClockTime for tracking
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-03 15:19:16 -0300  Thibault Saunier <tsaunier@igalia.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	  adaptivedemux2: Generate proper stream-id taking into account upstream
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3160>

2023-01-24 15:58:24 +1100  Matthew Waters <matthew@centricular.com>

	* ext/qt6/gstplugin.cc:
	* ext/qt6/gstqml6gloverlay.cc:
	* ext/qt6/gstqml6gloverlay.h:
	* ext/qt6/gstqt6elements.h:
	* ext/qt6/gstqt6glutility.cc:
	* ext/qt6/gstqt6glutility.h:
	* ext/qt6/meson.build:
	* ext/qt6/qt6glrenderer.cc:
	* ext/qt6/qt6glrenderer.h:
	* tests/examples/qt6/meson.build:
	* tests/examples/qt6/qmloverlay/main.cpp:
	* tests/examples/qt6/qmloverlay/main.qml:
	* tests/examples/qt6/qmloverlay/meson.build:
	* tests/examples/qt6/qmloverlay/overlay.qml:
	* tests/examples/qt6/qmloverlay/overlay2.qml:
	* tests/examples/qt6/qmloverlay/qmloverlay.qrc:
	  qml6: implement qml6gloverlay
	  Based on the Qt5 version of qmlgloverlay.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3845>

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/3855>

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/3855>

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/3854>

2022-12-22 18:11:19 +1100  Matthew Waters <matthew@centricular.com>

	* ext/qt6/gstplugin.cc:
	* ext/qt6/gstqml6glsrc.cc:
	* ext/qt6/gstqml6glsrc.h:
	* ext/qt6/gstqt6elements.h:
	* ext/qt6/meson.build:
	* ext/qt6/qt6glwindow.cc:
	* ext/qt6/qt6glwindow.h:
	* tests/examples/qt6/meson.build:
	* tests/examples/qt6/qmlsrc/grabqml.pro:
	* tests/examples/qt6/qmlsrc/main.cpp:
	* tests/examples/qt6/qmlsrc/main.qml:
	* tests/examples/qt6/qmlsrc/meson.build:
	* tests/examples/qt6/qmlsrc/qmlsrc.qrc:
	  qt6: add qml6glsrc element
	  Same functionality as qmlglsrc (Qt5) but for Qt6.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3737>

2020-01-02 22:24:36 +0100  Alicia Boya García <aboya@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Use safer clearing functions in dispose()
	  In theory, `dispose()` functions should be idempotent and should be
	  prepared not to crash or cause a double-free if an unref done from
	  inside caused a recursive call to `dispose()` of the same object.
	  https://developer.gnome.org/gobject/stable/howto-gobject-destruction.html
	  This patch modifies the `dispose()` method to honor these constraints.
	  Since the double `dispose()` call won't actually occur in qtdemux (there
	  is no cycle detection mechanism that could invoke it to work that way),
	  this is more of a code cleanup than a user-facing problem fix.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3822>

2021-09-23 10:00:45 +0200  Daniel Knobe <daniel-knobe@web.de>

	* docs/gst_plugins_cache.json:
	* gst/imagefreeze/gstimagefreeze.c:
	  imagefreeze: add bayer support
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3807>

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/3786>

2023-01-11 01:11:06 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt/meson.build:
	  meson: Add build_rpath for qt5 plugin on macOS
	  Without this, the plugin cannot be loaded in a devenv because the
	  RPATH is not added to the plugin dylib. This RPATH will be stripped on
	  install, which is what we want.
	  When deploying apps, people are supposed to use `macdeployqt` to
	  create an AppBundle that bundles Qt for you and sets the RPATHs
	  correctly to point to that bundled Qt.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3708>

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/3785>

2023-01-08 17:40:11 +0000  Tim-Philipp Müller <tim@centricular.com>

	* tests/check/elements/rtpcollision.c:
	* tests/examples/rpicamsrc/webrtc-unidirectional-h264.c:
	  good: tests: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:38:17 +0000  Tim-Philipp Müller <tim@centricular.com>

	* sys/v4l2/gstv4l2allocator.c:
	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/v4l2-utils.c:
	  v4l2: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:36:33 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/xingmux/gstxingmux.c:
	  xingmux: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

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

	* gst/udp/gstmultiudpsink.c:
	  multiudpsink: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:33:50 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/rtpmanager/gstrtpmux.c:
	* gst/rtpmanager/gstrtpptdemux.c:
	* gst/rtpmanager/gstrtprtxreceive.c:
	* gst/rtpmanager/gstrtprtxsend.c:
	* gst/rtpmanager/rtpjitterbuffer.c:
	* gst/rtpmanager/rtpsession.c:
	* gst/rtpmanager/rtpsource.c:
	* gst/rtpmanager/rtptimerqueue.c:
	  rtpmanager: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:31:57 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/rtp/gstrtpmparobustdepay.c:
	* gst/rtp/gstrtpreddec.c:
	* gst/rtp/gstrtpredenc.c:
	* gst/rtp/rtpstoragestream.c:
	  rtp: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:31:29 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	* gst/multifile/gstsplitmuxsink.c:
	* gst/multifile/gstsplitmuxsrc.c:
	  multifile: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:31:03 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/matroska/matroska-read-common.c:
	  matroska: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:27:38 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/flv/gstflvmux.c:
	* gst/flv/gstindex.c:
	* gst/flv/gstmemindex.c:
	  flv: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:27:21 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/dtmf/gstdtmfsrc.c:
	* gst/dtmf/gstrtpdtmfsrc.c:
	  dtmf: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:26:17 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ext/vpx/gstvp8enc.c:
	* ext/vpx/gstvp9enc.c:
	* ext/vpx/gstvpxenc.c:
	  vpx: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

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

	* ext/gdk_pixbuf/gstgdkpixbufsink.c:
	  gdkpixbuf: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:25:25 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ext/pulse/pulsesink.c:
	  pulseaudio: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:22:46 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/dash/gstmpdadaptationsetnode.c:
	* ext/adaptivedemux2/dash/gstmpdclient.c:
	* ext/adaptivedemux2/dash/gstmpdcontentcomponentnode.c:
	* ext/adaptivedemux2/dash/gstmpdparser.c:
	* ext/adaptivedemux2/dash/gstmpdrepresentationbasenode.c:
	* ext/adaptivedemux2/dash/gstmpdsegmentbasenode.c:
	* ext/adaptivedemux2/dash/gstmpdsegmenturlnode.c:
	* ext/adaptivedemux2/dash/gstmpdurltypenode.c:
	* ext/adaptivedemux2/dash/gstxmlhelper.c:
	* ext/adaptivedemux2/downloadrequest.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	* ext/adaptivedemux2/gstadaptivedemuxutils.c:
	* ext/adaptivedemux2/mss/gstmssmanifest.c:
	  adaptivedemux2: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

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-09 08:16:36 +0000  Hiero32 <unnoh@tkd.att.ne.jp>

	* docs/gst_plugins_cache.json:
	* gst/debugutils/gsttaginject.c:
	* gst/debugutils/gsttaginject.h:
	  taginject: Add scope property
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3697>

2023-01-23 23:04:53 +0000  Tim-Philipp Müller <tim@centricular.com>

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

=== release 1.22.0 ===

