=== release 1.22.8 ===

2023-12-18 12:09:37 +0000  Tim-Philipp Müller <tim@centricular.com>

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

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/5817>

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/5787>

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/5786>

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/5751>

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/5745>

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/5695>

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/5686>

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/5674>

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/5662>

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/5664>

2023-11-13 14:57:09 +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/5650>

=== release 1.22.7 ===

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

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

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/5611>

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/5597>

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/5564>

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/5564>

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/5515>

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/5487>

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/5465>

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/5463>

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/5436>

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/5414>

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/5402>

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/5388>

2023-09-20 19:41:00 +0100  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/5371>

=== release 1.22.6 ===

2023-09-20 18:10:57 +0100  Tim-Philipp Müller <tim@centricular.com>

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

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/5354>

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/5319>

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/5319>

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/5319>

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/5318>

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/5223>

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/5217>

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/5200>

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/5156>

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/5149>

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/5114>

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/5132>

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/5099>

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/5096>

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/4890>

2023-07-20 16:57:47 +0100  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/5082>

=== release 1.22.5 ===

2023-07-20 15:22:48 +0100  Tim-Philipp Müller <tim@centricular.com>

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

2023-02-15 17:32:39 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.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/5057>

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/5057>

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/5051>

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/5036>

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/5036>

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/4959>

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/4959>

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/5016>

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/5014>

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/4996>

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/4996>

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/4992>

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/4990>

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/4985>

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/4971>

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/4970>

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/4922>

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/4922>

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/4922>

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/4922>

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/4922>

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/4922>

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/4922>

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/4796>

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/4908>

2023-06-20 19:10:38 +0100  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/4907>

=== release 1.22.4 ===

2023-06-20 17:42:25 +0100  Tim-Philipp Müller <tim@centricular.com>

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

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/4853>

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/4897>

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/4891>

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/4891>

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/4891>

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/4773>

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/4867>

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/4855>

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/4851>

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/4799>

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/4799>

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/4787>

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/4762>

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/4776>

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/4776>

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/4759>

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/4744>

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/4734>

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/4717>

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/4717>

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/4702>

2023-05-19 12:36:19 +0100  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/4679>

=== release 1.22.3 ===

2023-05-19 09:23:19 +0100  Tim-Philipp Müller <tim@centricular.com>

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

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/4672>

2023-05-18 11:58:51 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

