dwww Home | Show directory contents | Find package

=== release 1.26.2 ===

2025-05-29 23:56:43 +0100  Tim-Philipp Müller <tim@centricular.com>

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

2025-04-29 09:43:58 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Use byte reader to parse mvhd box
          This avoids OOB reads.
          Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4394
          Fixes CVE-2025-47183
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9133>

2025-05-23 05:07:38 -0400  Doug Nazar <nazard@nazar.ca>

        * ext/adaptivedemux2/downloadhelper.c:
          adaptivedemux2: Ensure all download tasks call g_task_return_*()
          There is a small window during stopping when tasks have been add
          to the transfer_requests queue, but never transfered to the
          active_transfers array and causes the fallowing error:
          GTask 0x7f2c4400e930 (source object: (nil), source tag: (nil)) finalized
          without ever returning (using g_task_return_*()).
          This potentially indicates a bug in the program.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9108>

2025-05-21 10:01:24 -0400  Doug Nazar <nazard@nazar.ca>

        * ext/adaptivedemux2/dash/gstdashdemux.c:
          gstreamer: A few small memory cleanups
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9101>

2025-05-25 19:31:22 +0900  Seungha Yang <seungha@centricular.com>

        * gst/rtp/gstrtputils.c:
          rtputils: Add debug category
          Use rtputils specific debug category instead of "default"
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9093>

2025-03-19 14:56:52 -0300  Thibault Saunier <tsaunier@igalia.com>

        * gst/imagefreeze/gstimagefreeze.c:
          imagefreeze: Reset 'flushing' state when receiving FLUSH_STOP
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9092>

2025-03-19 14:55:58 -0300  Thibault Saunier <tsaunier@igalia.com>

        * gst/imagefreeze/gstimagefreeze.c:
          imagefreeze: Set seqnum from segment too
          This is the right behavior, setting from seeks is also OK but we should take the seqnums from segment into account too
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9092>

2025-05-14 14:42:19 -0400  Doug Nazar <nazard@nazar.ca>

        * tests/check/elements/audiofirfilter.c:
        * tests/check/elements/wavpackdec.c:
        * tests/check/elements/wavpackenc.c:
          tests: Switch to GST_AUDIO_NE()
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9089>

2025-05-14 14:41:44 -0400  Doug Nazar <nazard@nazar.ca>

        * gst/spectrum/gstspectrum.c:
          spectrum: Switch to GST_AUDIO_NE()
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9089>

2025-05-14 14:41:10 -0400  Doug Nazar <nazard@nazar.ca>

        * gst/law/mulaw-decode.c:
        * gst/law/mulaw-encode.c:
        * gst/law/mulaw.c:
          law: Switch to GST_AUDIO_NE()
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9089>

2025-05-14 14:39:57 -0400  Doug Nazar <nazard@nazar.ca>

        * ext/flac/gstflacdec.c:
          flac: Switch to GST_AUDIO_NE()
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9089>

2025-05-13 19:44:21 -0400  Doug Nazar <nazard@nazar.ca>

        * gst/rtsp/gstrtspsrc.c:
          gstrtspsrc: Free various props before being set
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9088>

2025-03-30 01:41:10 -0400  Doug Nazar <nazard@nazar.ca>

        * ext/adaptivedemux2/dash/gstmpdclient.c:
          dash: mpdclient: Don't pass terminating NUL to adapter
          libxml2 will complain if it detects any characters after the valid
          XML, including a NUL byte.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9068>

2025-05-23 09:41:51 +0200  Branko Subasic <branko@axis.com>

        * gst/matroska/matroska-mux.c:
          matroskamux: Write stream headers before finishing file
          In the rare case when we get EOS on all pads before we get any buffer we
          would finish the file without writing headers, i.e. the file would be
          corrupt. This patch makes sure that a header is always written.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9066>

2025-05-23 09:33:35 +0200  Jan Schmidt <jan@centricular.com>

        * ext/qt6/meson.build:
          meson: Add build_rpath for qt6 plugin on macOS
          This is the same fix for qt6 that was done for the qt5 plugin
          in gstreamer/gstreamer!3708
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9064>

2025-05-21 20:29:06 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

        * meson_options.txt:
          meson: Add a monorepo-wide qt-method option and yield to it
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9063>

2025-05-21 20:23:47 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

        * tests/examples/qt/meson.build:
        * tests/examples/qt6/meson.build:
          meson: Make qml/qml6 plugins use the right qt detection method
          Otherwise they can pick up the wrong qt and cause two different Qt
          instances to be used in the same program.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9063>

2025-05-17 15:24:29 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/videofilter/gstvideobalance.c:
          videobalance: Implement basetransform meta transform function
          This makes sure we can pass through more metas correctly, e.g.
          GstVideoOverlayComposition meta.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9041>

2025-05-21 15:39:46 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: cmpd box is only mandatory for uncompressed video with uncC version 0
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9040>

2025-05-13 11:27:23 +0900  Hou Qi <qi.hou@nxp.com>

        * sys/v4l2/gstv4l2bufferpool.c:
          v4l2: pool: Send drop frame signal after dqbuf success
          This is a regression introduced by https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5479
          Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4424
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9036>

2025-05-06 11:17:52 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Add support for DNxHR
          Apart from the fourcc it works the same as DNxHD and can be distinguished from
          the beginning of each frame header.
          ffmpeg uses the same codec ID for DNxHD and DNxHR so we use the same caps with
          just an additional, optional profile field for the DNxHR profile.
          Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3066
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-06 11:02:55 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/fourcc.h:
        * gst/isomp4/qtdemux.c:
        * gst/isomp4/qtdemux.h:
          qtdemux: Parse content light level and mastering display info if available
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-03 18:07:18 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Use already parsed codec data boxes instead of parsing a second time
          And parse common boxes in a central place.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-03 12:28:23 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/fourcc.h:
        * gst/isomp4/qtdemux.c:
          qtdemux: Add missing codec sample entry fourccs to qtdemux_parse_node()
          This allows parsing the various common sample entry boxes like btrt, colr, pasp,
          chan, chnl, etc. for extending the caps with additional information.
          Also unify some cases, which as a side effect makes them more correct because
          many were not checking for different versions of the boxes and the corresponding
          different offsets.
          See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4403
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

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

        * gst/isomp4/qtdemux.c:
        * gst/isomp4/qtdemux_types.c:
          qtdemux: Take Theora headers directly out of the already parsed nodes
          Instead of parsing them yet another time.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-05 22:24:33 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Don't parse fiel box a second time for JPEG-2000
          It was already parsed above in general for all video codecs. Just put the number
          of fields into the JPEG-2000 in the specific field.
          As a side effect this also actually checks if enough data is available.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-05 22:20:41 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Remove second parsing of fiel box for JPEG
          Exactly the same is already done some hundred lines above for all video codecs.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-05 21:54:07 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Simplify parsing of SVQ3/VP31 boxes
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-05 19:20:06 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Parse codec data for QDM2/QDMC correctly
          First find the wave box then include its whole content instead of just including
          everything from a random offset onwards.
          Also actually do that for QDMC instead of leaving commented code.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-05 18:55:47 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Use already parsed damr box for AMR NB/WB streams
          Instead of parsing it again and possibly getting the offset for reading
          it wrong.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-05 18:35:03 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Don't parse audio sample entry a second time in mp4a fallback case
          These values were all passed a few hundred lines above already and can directly
          be re-used here. The offset for the sample rate was also wrong.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-05 11:08:51 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux_tree.c:
        * gst/isomp4/qtdemux_tree.h:
          qtdemux: Add qtdemux_tree_get_child_by_index_full() helper function
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-04 20:13:58 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Fix endianness/alignment problems with parsing omwa sample description entries
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-04 19:54:41 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Handle stsd entry offset correctly for audio in qtdemux_parse_node()
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-04 18:59:34 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Pass stsd entry node to caps creation functions
          Also fix lpcm to only read its additional fields from sound sample description v2.
          Previously it would read random data if a different stsd entry was used.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-04 18:47:07 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Don't parse invalid data from ISOBMFF AudioSampleEntryV1
          The additional fields only exist in sound sample description v1, which
          is only defined for MOV.
          ISOBMFF has AudioSampleEntryV1 but it has the exact same layout as
          AudioSampleEntry.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-04 16:22:38 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Don't retrieve video stsd entry multiple times
          And remove various duplicated checks.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-04 16:15:32 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Parse uncompressed video uncC / cmpd boxes from already parsed stsd entry
          Also simplifies code and error checking considerably.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-04 15:58:03 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Don't retrieve enca/encv boxes a second time, wrongly
          They need to be retrieved by index and they were already correctly retrieved
          just above so let's just use that.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-04 15:48:55 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Use already parsed stsd entries instead of parsing them again
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-05 17:28:20 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Fix typo in debug message
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-06 15:47:30 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Don't configure any channel-mask in fallback case with 1 channel
          For mono we don't set any channel mask. Setting 0 would mean an unpositioned
          layout with a single channel.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-03 17:49:06 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Add channel layouts to three more raw audio fourccs
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-03 12:26:43 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/fourcc.h:
        * gst/isomp4/qtdemux.c:
          qtdemux: Parse chan box
          This is another variant of providing channel positions.
          Also if neither chan nor chnl boxes are found, configure a default channel
          layout for raw audio tracks.
          Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4403
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>

2025-05-17 11:15:11 +0200  Jan Schmidt <jan@centricular.com>

        * ext/adaptivedemux2/gstadaptivedemux.c:
          adaptivedemux: Answer element-level SELECTABLE query
          Add handling for the selectable query as an element query,
          on top of the existing pad query handling. This is useful
          for uridecodebin when handling stream collection messages
          before any adaptivedemux source pads have been exposed.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9012>

2025-05-17 11:13:33 +0200  Jan Schmidt <jan@centricular.com>

        * ext/adaptivedemux2/gstadaptivedemux.c:
          adaptivedemux: Copy collection inside lock
          When posting the collection message, don't access the shared
          collection after releasing the manifest and track locks.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9012>

2025-05-12 13:19:37 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/wavparse/gstwavparse.c:
          wavparse: Error out correctly if no data tag is found until EOS in pull mode
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8986>

2025-05-09 10:49:20 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/wavparse/gstwavparse.c:
          wavparse: Ignore EOS when parsing the headers
          The file might be truncated or contain < 8 bytes of remaining data after the
          last chunk.
          Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4426
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8986>

2025-05-02 08:56:19 +0200  Alexander Slobodeniuk <aslobodeniuk@fluendo.com>

        * gst/debugutils/gstnavigationtest.c:
        * gst/debugutils/gstpushfilesrc.c:
        * gst/multipart/multipartdemux.c:
        * gst/rtp/gstrtpsbcpay.c:
        * sys/v4l2/gstv4l2radio.c:
        * sys/v4l2/gstv4l2sink.c:
        * sys/ximage/gstximagesrc.c:
          properties: add G_PARAM_STATIC_STRINGS where missing
          "Hold on, I know you need to generate the registry, but let me just
          create copies of all those strings first", Framework whispered
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8962>

2025-05-07 22:19:44 -0400  Olivier Crête <olivier.crete@collabora.com>

        * gst/rtp/gstrtph264pay.c:
          rtph264pay: Reject stream-format=avc without codec_data
          Without the codec_data, it's impossible to know the size of the field
          for the number of NALu in a buffer. And since nal_length_size is unkown
          the stream can't be parsed and payloaded and we risk an infinite loop.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8959>

2025-05-04 13:41:56 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Check length of JPEG2000 colr box before parsing it
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8937>

2025-05-03 18:24:49 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Remove obsolete TODO comment
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8937>

2025-05-06 12:41:37 +0300  Sebastian Dröge <sebastian@centricular.com>

        * gst/interleave/interleave.c:
          interleave: Don't hold object lock while querying caps downstream
          This can easily lead to deadlocks.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8934>

2025-04-01 23:03:02 +0200  Jakub Adam <jakub.adam@collabora.com>

        * sys/v4l2/gstv4l2bufferpool.c:
        * sys/v4l2/gstv4l2bufferpool.h:
          v4l2: pool: fix assert when mapping video frame with DMA_DRM caps
          Make sure the pool recognizes DMA_DRM caps and parses them into
          GstVideoInfo that has GstVideoFormat corresponding to "drm-format"
          in the caps.
          Fixes
          gst_video_frame_map_id: assertion 'info->finfo->format ==
          meta->format' failed
          Where the left side of the assertion was GST_VIDEO_FORMAT_DMA_DRM and
          the right side was some GstVideoFormat converted from DRM fourcc.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8922>

2025-04-03 02:24:13 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

        * ext/meson.build:
          gst-examples: Port all webrtc examples to libsoup-3.0
          Also do some indent changes, and add `static` while we're at it.
          And move the libsoup wrap to 3.6.5, add nghttp2 wrap
          We need to disable libsoup 3.0 tests because they fail to build on
          Windows.
          Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1115
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8919>

2025-04-01 17:58:14 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

        * ext/lame/meson.build:
        * ext/meson.build:
          meson: Add include_type: 'system' everywhere to squelch wrap warnings
          Wrap dependencies add a ton of warnings with the latest GCC in Fedora
          42. Squelch them by specifying that these dependencies are not
          a part of the gstreamer project, and should be treated as system deps.
          libsoup needs some porting work for the bump, and vorbis/lame are
          already at their latest releases.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8919>

2025-04-28 13:24:45 +0900  Hou Qi <qi.hou@nxp.com>

        * sys/v4l2/gstv4l2videoenc.c:
          v4l2videoenc: report error only when buffer pool parameters are invalid
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8912>

2025-04-24 20:26:57 +0100  Tim-Philipp Müller <tim@centricular.com>

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

=== release 1.26.1 ===

2025-04-24 20:20:14 +0100  Tim-Philipp Müller <tim@centricular.com>

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

2025-04-23 12:06:48 -0700  Eli Mallon <eli@aquareum.tv>

        * gst/isomp4/qtdemux.c:
          qtdemux: unref simple caps after use
          Otherwise we leak a GSTCaps object every time we
          use qtdemux on a file with Opus audio
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8880>

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

        * sys/v4l2/gstv4l2bufferpool.c:
        * sys/v4l2/gstv4l2videodec.c:
          v4l2: drop frames for those dequeued buffer with error flag
          Some frames are dequeued with error flag, which may cause AV unsync if decoder
          does not drop them as soon as possible. So add "output-error-dequeued" and
          "capture-error-dequeued" signal for v4l2 to drop such frames.
          Fixes #3031
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8869>

2025-04-16 11:58:45 +0200  Stefan Andersson <stefana@axis.com>

        * gst/matroska/matroska-demux.c:
          matroska-demux: Prevent corrupt cluster duplication
          Make sure to always update next_cluster_offset, if next cluster offset
          isn't known set it to zero. If next_cluster_offfset isn't updated it will
          be the same as current and if the cluster parsing fails the same cluster
          will be parsed again leading to duplication of the data in the cluster.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8856>

2025-04-10 11:31:28 +0200  Gustav Fahlen <gustafah@axis.com>

        * gst/rtsp/gstrtspsrc.c:
          gstrtspsrc: Do not emit signal 'no-more-pads' too early
          Due to race condition it was previously possible that
          gst_element_add_pad was not completed for each RTSP stream before
          signal 'no-more-pads' was emitted.
          Race condition explained:
          Lets say two RTSP streams are created: Video and Audio.
          1. Callback new_manager_pad is called for the Video stream =>
          stream->added=TRUE.
          all_added=FALSE because both streams are not yet added.
          Call gst_element_add_pad and emit signal 'pad-added' for Video stream.
          2. Callback new_manager_pad is called for Audio stream =>
          stream->added=TRUE.
          all_added=TRUE because both streams are added.
          Call gst_element_add_pad and emit signal 'pad-added' for Audio stream.
          3. Lets say gst_element_add_pad for the audio stream completes before
          the video stream. Since the audio stream already has all_added==TRUE
          this will result in the signal 'no-more-pads' to be emitted before
          gst_element_add_pad for the video stream is completed.
          Solution is to move the logic that sets added=True and checks if all
          streams are added to after gst_element_add_pad. This will make sure
          signal 'no-more-pads' is not emitted until all code in
          gst_element_add_pad is completed for all streams.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8836>

2025-04-09 18:08:19 +1000  Jan Schmidt <jan@centricular.com>

        * gst/rtsp/gstrtspsrc.c:
        * gst/rtsp/gstrtspsrc.h:
          rtspsrc: Don't error out on not-linked too early
          Wait until all pads have been exposed before accepting a not-linked,
          as pads are added one-by-one and downstream might not be interested
          in the first ones to appear.
          Follow up to
          https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7946
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8816>

2025-04-07 17:16:20 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

        * gst/y4m/gsty4mencode.c:
          y4menc: fix Y41B format
          This a regression of commit fb0bea8f where output info variable was swapped with
          input info variable by mistake.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8796>

2025-03-26 13:09:30 +0100  Ognyan Tonchev <ognyan@axis.com>

        * gst/rtpmanager/gstrtpsession.c:
          gstrtpsession: Do not push events while holding SESSION_LOCK
          Doing so can trigger deadlocks
          Fixes: #4328
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8781>

2025-03-26 13:04:41 +0100  Ognyan Tonchev <ognyan@axis.com>

        * gst/rtpmanager/gstrtpsession.c:
        * gst/rtpmanager/gstrtpsession.h:
          gstrtpsession: protect recv_rtcp_segment_seqnum with a lock
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8781>

2025-03-26 12:34:35 +0100  Ognyan Tonchev <ognyan@axis.com>

        * gst/rtpmanager/gstrtpsession.c:
          gstrtpsession: use correct seqnum for the STREAM_START ans SEGMENT events
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8781>

2025-03-06 09:54:21 -0700  dukesook <devonsookhoo14@gmail.com>

        * gst/isomp4/qtdemux.c:
        * gst/isomp4/qtdemux.h:
          qtdemux: Extend Uncompressed Lookup Table
          - LUT now supports various subsampling, interleaves, and bit depths.
          - Replaces stride with GstVideoInfo pre_info to represent original data.
          - Simplifies gst_row_align_buffer() with gst_video_frame_copy().
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8780>

2025-03-24 15:32:22 +0100  Stéphane Cerveau <scerveau@igalia.com>

        * sys/v4l2/gstv4l2object.c:
          v4l2object: fix memory leak
          The tmp caps should be unreffed as the template structure.
          The leaks can be reproduced with
          gst-launch-1.0 v4l2src num-buffers=1 ! autovideosink
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8706>

2019-08-07 18:01:53 -0400  Doug Nazar <nazard@nazar.ca>

        * gst/matroska/matroska-mux.c:
          matroskamux: Add support for chroma siting
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8732>

2019-08-07 17:48:47 -0400  Doug Nazar <nazard@nazar.ca>

        * gst/matroska/matroska-mux.c:
          matroskamux: Add support for interlaced field order
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8732>

2019-08-07 17:47:29 -0400  Doug Nazar <nazard@nazar.ca>

        * gst/matroska/ebml-write.c:
        * gst/matroska/ebml-write.h:
        * gst/matroska/matroska-mux.c:
        * gst/matroska/matroska-mux.h:
        * tests/check/elements/matroskamux.c:
          matroskamux: Always use v4 for DocType version
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8732>

2019-07-29 23:16:26 -0400  Doug Nazar <nazard@nazar.ca>

        * gst/matroska/matroska-demux.c:
        * gst/matroska/matroska-ids.c:
        * gst/matroska/matroska-ids.h:
          matroskademux: Handle chroma site color information
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8732>

2025-03-26 22:00:43 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

        * tests/check/elements/y4menc.c:
          tests: y4menc: padded frame test
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8716>

2025-03-26 12:31:52 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

        * gst/y4m/gsty4mencode.c:
          y4menc: use start() vmethod rather than change_state()
          Also it wil call negotiate() vmethod at set_format()
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8716>

2025-03-20 16:25:05 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

        * gst/y4m/gsty4mencode.c:
          y4menc: enable y4menc debugging category
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8716>

2025-03-27 14:07:25 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

        * gst/y4m/gsty4mencode.c:
          y4menc: handle padded frames
          Since y4menc inherits from GstVideoEncoder, it negotiates upstream buffer pools
          with GstVideoMeta support. Thus, certain decoders might use that meta for
          frames with padded memory. Nonetheless y4menc assumes only linear memory video
          frames, without padding.
          This patch will copy frames using gst_video_frame_copy() if buffer has
          GstVideoMeta or its video info is padded with its custom video info. Otherwise,
          it ill call the agnostic gst_buffer_copy() for a shallow copy.
          Supersedes: !5042
          Fixes: #2765
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8716>

2025-03-27 12:46:54 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

        * gst/y4m/gsty4mencode.c:
        * gst/y4m/gsty4mencode.h:
          y4menc: create an output video info without padding
          The unpadded strides and offsets calculations for the video info are inspired
          from y4mdec.
          A boolean flags is toggled if the video info is padded for the given resolution.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8716>

2025-03-26 12:33:32 -0400  Arun Raghavan <arun@asymptotic.io>

        * ext/qt6/gstqt6glutility.cc:
          qt6: Add a missing newline in unsupported platform message
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8715>

2025-03-14 22:14:42 -0400  Doug Nazar <nazard@nazar.ca>

        * gst/rtsp/gstrtspsrc.c:
          rtspsrc: Free various props during cleanup
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8714>

2025-03-14 22:13:44 -0400  Doug Nazar <nazard@nazar.ca>

        * sys/ximage/gstximagesrc.c:
          ximagesrc: Free various props during cleanup
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8714>

2025-03-14 22:12:56 -0400  Doug Nazar <nazard@nazar.ca>

        * gst/isomp4/gstqtmoovrecover.c:
          qtmoovrecover: Free various props during cleanup
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8714>

2025-03-14 22:11:39 -0400  Doug Nazar <nazard@nazar.ca>

        * ext/jack/gstjackaudiosink.c:
        * ext/jack/gstjackaudiosrc.c:
          jack: Free various props during cleanup
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8714>

2025-03-14 19:25:48 -0400  Doug Nazar <nazard@nazar.ca>

        * ext/adaptivedemux2/dash/gstmpdadaptationsetnode.c:
        * ext/adaptivedemux2/dash/gstmpdperiodnode.c:
        * ext/adaptivedemux2/dash/gstmpdrepresentationbasenode.c:
        * ext/adaptivedemux2/dash/gstmpdrepresentationnode.c:
        * ext/adaptivedemux2/dash/gstmpdsegmenttemplatenode.c:
        * ext/adaptivedemux2/dash/gstmpdsegmenturlnode.c:
          dash: Free various props before set & during cleanup
          In addition several members were being freed via xmlFree() even though
          being created via g_value_dup_string(). Switch to g_free().
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8714>

2025-03-14 19:14:43 -0400  Doug Nazar <nazard@nazar.ca>

        * ext/pulse/pulsedeviceprovider.c:
        * sys/directsound/gstdirectsounddevice.c:
        * sys/oss/gstossdeviceprovider.c:
        * sys/v4l2/gstv4l2deviceprovider.c:
          all: Annotate *_set_property() contructor only props without free
          Properties that are marked constructor only aren't required to be freed
          before g_value_dup_string() as they can only be called once during construction.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8714>

2025-03-21 02:16:58 +0100  Jakub Adam <jakub.adam@collabora.com>

        * ext/qt6/gstqml6glsrc.cc:
          qml6glsrc: update buffer pool on renegotiation
          When dynamic caps change in the pipeline leads to a new buffer pool
          getting negotiated, the change is not propagated to Qt6GLWindow, which
          keeps using the old, now defunct, pool.
          Unset current pool on Qt6GLWindow in decide_allocation(). This will
          trigger a switch to the new pool inside create().
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8705>

2025-03-20 11:01:25 +0200  Sebastian Dröge <sebastian@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Fix stsc size check in qtdemux_merge_sample_table()
          There are 3 32bit integers per entry and not one more for all but the last.
          Fixes a regression introduced in 5a9e80c01b4b49c6c7630a6d08b600114f38c0db
          when playing back files that have one sample table entry per audio sample.
          Merging the sample tables would've always failed because of the too strict size
          check and one audio sample per GStreamer buffer would've been output, which
          doesn't perform very well.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8684>

2025-03-11 16:36:58 +0100  Alyssa Ross <hi@alyssa.is>

        * sys/v4l2/gstv4l2object.c:
          v4l2object: fix type mismatch when ioctl takes int
          v4l2object->ioctl can either be set to v4l2_ioctl() or ioctl().
          v4l2_ioctl() always takes the request number as unsigned long int, but ioctl()
          may take (at least) unsigned long int, int, or unsigned, depending on libc.
          This means that there isn't one function pointer type that can be used for
          v4l2object->ioctl that will always be able to accomodate being set to either of
          v4l2_ioctl() and ioctl().  It's therefore necessary to wrap one of them so that
          both options can have the same type.  This fixes an assignment from incompatible
          pointer type error when building for musl.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8642>

2025-03-11 20:23:16 +0000  Tim-Philipp Müller <tim@centricular.com>

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

=== release 1.26.0 ===

2025-03-11 20:14:44 +0000  Tim-Philipp Müller <tim@centricular.com>

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

2025-03-05 19:03:42 +0900  Hou Qi <qi.hou@nxp.com>

        * sys/v4l2/gstv4l2object.c:
          v4l2: object: Not consider GRAY as RGB
          This is to fix colorimetry mismatch between v4l2object and video-info
          when format is GRAY.
          Fixes #4270
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8590>

2025-03-05 14:08:50 +0000  Devon Sookhoo <devonsookhoo14@gmail.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: InterleaveType enum
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8578>

2025-03-04 10:14:23 -0700  dukesook <devonsookhoo14@gmail.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: component to format lookup table
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8578>

2025-02-28 15:41:23 +0100  Jakub Adam <jakub.adam@collabora.com>

        * ext/adaptivedemux2/gstadaptivedemux.c:
          adaptivedemux2: wake waiting streams upon completed manifest downlaod
          Fixes race when a live stream finishes playing all segments from a
          dynamic manifest and waits for its update. If the manifest meanwhile
          changes from dynamic to static and this update is received
          asynchronously, periodic calls of gst_adaptive_demux_manifest_update_cb
          will stop. As a result the blocked stream won't get notified about the
          updated manifest and will remain stuck indefinitely.
          Also removed the wake-up code from gst_adaptive_demux_manifest_update_cb
          where it remained as a relic from previous implementation when manifest
          updates were synchronous.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8587>

2025-03-04 15:01:24 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

        * ext/meson.build:
          meson: Replace disabler dependencies with not-found dependencies
          If a plugin gets disabled due to a `disabler()` dependency, the plugin
          docs build itself will get disabled because `all_plugins_paths` will
          become a disabler.
          This was actually happening with opencv on systems that don't have
          opencv available, and could happen with libsoup too if the build files
          change in the future.
          Let's avoid wasting hours of debugging for people. A not-found
          dependency has the same effect.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8582>

2025-02-26 05:46:58 +0100  Jochen Henneberg <jochen@centricular.com>

        * gst/isomp4/qtdemux.c:
          qtdemux: Ignore non-zero values for UV/XY in transformation matrix
          But write an info message about that. The values have been ignored
          before !8127 as well.
          Fixes #4252
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8559>

2025-02-24 14:20:33 +0200  Sebastian Dröge <sebastian@centricular.com>

        * gst/multifile/gstsplitmuxsink.c:
          splitmuxsink: Also increment fragment IDs when no filename is configured on the sink
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8544>

2024-12-12 08:48:04 -0300  Thibault Saunier <tsaunier@igalia.com>

        * docs/gst_plugins_cache.json:
        * ext/adaptivedemux2/gstadaptivedemux-private.h:
        * ext/adaptivedemux2/gstadaptivedemux-stream.c:
        * ext/adaptivedemux2/gstadaptivedemux.c:
        * ext/adaptivedemux2/gstadaptivedemux.h:
        * ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
          adaptivedemux: Add 'backoff' logic for HTTP request
          So that the user can configure waits between retries
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>

2024-12-11 22:00:56 -0300  Thibault Saunier <tsaunier@igalia.com>

        * docs/gst_plugins_cache.json:
        * ext/adaptivedemux2/gstadaptivedemux-private.h:
        * ext/adaptivedemux2/gstadaptivedemux-stream.c:
        * ext/adaptivedemux2/gstadaptivedemux.c:
        * ext/adaptivedemux2/gstadaptivedemux.h:
        * ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
          adaptivedemux2: Expose a `max-retries` property
          So the user can configure what is the maximum number of time HTTP requests can
          be performed
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>

2024-12-11 17:44:20 -0300  Thibault Saunier <tsaunier@igalia.com>

        * docs/gst_plugins_cache.json:
        * ext/soup/gstsouphttpsrc.c:
        * ext/soup/gstsouphttpsrc.h:
          souphttpsrc: Add the notion of "retry-backoff"
          So that the user can force waits between retries
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>

2024-12-11 07:46:09 -0300  Thibault Saunier <tsaunier@igalia.com>

        * ext/soup/gstsouphttpsrc.c:
          souphttpsrc: Retry on SERVICE_UNAVAILABLE and INTERNAL_SERVER_ERROR
          Those might be temporary issue, for example s3 returns SERVICE_UNAVAILABLE high
          load, but afterward a few tries the request will work, and it has been observed
          that internal server error sometimes "fix themselves"  so it makes sense to
          also retry requests, in case.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>

2024-12-10 23:54:07 -0300  Thibault Saunier <tsaunier@igalia.com>

        * ext/adaptivedemux2/gstadaptivedemux-stream.c:
          adaptivedemux2: Increment retry counter to stop after MAX_ERROR_COUNT
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>

2024-12-10 23:49:38 -0300  Thibault Saunier <tsaunier@igalia.com>

        * ext/adaptivedemux2/dash/gstdashdemux.c:
          dashdemux2: Do not set empty string 'track_id'
          This is not needed and generates g_warning like:
          ```
          Trying to set empty string on taglist field 'container-specific-track-id'. Please file a bug.
          ```
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>

2025-02-19 19:25:52 +0900  Elliot Chen <elliot.chen@nxp.com>

        * gst/audiofx/gstscaletempo.c:
          scaletempo: scaletempo: clip the timestamp or duration of gap event if needed
          For some cases, maybe the timestamp of gap event is smaller than
          segment start value or larger than segment stop value in playback.
          And the timestamp plus duration may exceed segment boundary. Need
          check and clip the timestamp or duration before recalculating.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8517>

2025-02-23 23:52:57 +0000  Tim-Philipp Müller <tim@centricular.com>

        * meson.build:
          Back to development after 1.25.90

=== release 1.25.90 ===

2025-02-23 23:44:10 +0000  Tim-Philipp Müller <tim@centricular.com>

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

2025-02-23 16:56:05 +0000  Tim-Philipp Müller <tim@centricular.com>

        * po/hr.po:
        * po/lv.po:
        * po/pt_BR.po:
        * po/zh_TW.po:
          gst-plugins-good: update translations

2025-02-19 11:54:48 -0500  Julian Bouzas <julian.bouzas@collabora.com>

        * gst/rtp/gstrtph264depay.c:
          rtph264depay: Improve properties doc to be the same as rtph265depay
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8343>

2025-02-19 11:47:50 -0500  Julian Bouzas <julian.bouzas@collabora.com>

        * gst/rtp/gstrtph264depay.c:
        * gst/rtp/gstrtph264depay.h:
          rtph264depay: Improve request keyframe logic
          We cannot rely only on the DISCONT flag when deciding whether we need to
          request a new key frame or not because it might be that the packet that just
          came in with the DISCONT flag is actually the start of a keyframe.
          This patch improves the logic to be the same as rtph265depay, by only requesting
          a key frame if the packet with the DISCONT flag is not the first one of a FU; or
          if its the first one, only request it when we could drop packets due to a
          missing key frame.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8343>

2025-01-22 12:54:45 -0500  Julian Bouzas <julian.bouzas@collabora.com>

        * docs/gst_plugins_cache.json:
          docs: update plugins cache with new rtph265depay properties
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8343>

2025-01-22 12:44:51 -0500  Julian Bouzas <julian.bouzas@collabora.com>

        * gst/rtp/gstrtph265depay.c:
        * gst/rtp/gstrtph265depay.h:
          rtph265depay: Add request-keyframe property
          Similar to the H264 depayloader, this property will request a new keyframe
          when packet loss is detected.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8343>

2025-01-22 12:41:35 -0500  Julian Bouzas <julian.bouzas@collabora.com>

        * gst/rtp/gstrtph265depay.c:
        * gst/rtp/gstrtph265depay.h:
          rtph265depay: Add wait-for-keyframe property
          Similar to the H264 depayloader, this property will wait for the next keyframe
          by dropping RTP packets if there is a missing packet.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8343>

2025-02-18 16:46:15 +1100  Matthew Waters <matthew@centricular.com>

        * ext/qt/gstqtglutility.cc:
        * ext/qt6/gstqt6glutility.cc:
          qt/6: mark GstGLDisplayEGLs that would be created as foreign
          Otherwise, GStreamer may preemptively call eglTerminate() before Qt has
          finished using the EGLDisplay.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8504>

2025-02-18 14:04:09 +1100  Jan Schmidt <jan@centricular.com>

        * tests/examples/rtsp/test-onvif.c:
          test-onvif: Re-add mulawenc
          Accidentally lost mulawenc from the rtppcmupay case
          in the previous commit !8378
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8503>

2025-02-15 14:07:52 +1100  Brad Hards <bradh@frogmouth.net>

        * gst/isomp4/qtdemux.c:
          qtdemux: look up uncompressed component type
          This fix handles the case where the order of components in the cmpd box
          does not correspond to the order used for a specific track. That
          is the case where the uncC component_index values are something
          other than 0, 1, 2, 3.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8483>

2025-01-31 14:40:27 +0200  Sebastian Dröge <sebastian@centricular.com>

        * gst/multifile/gstsplitmuxsink.c:
          splitmuxsink: Be less strict about queueing negative durations
          In case of temporary backwards timestamps durations can become negative. Instead
          of erroring out, simply clip the durations and warn.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8390>

2024-10-23 14:21:22 +0100  Tim-Philipp Müller <tim@centricular.com>

        * gst/isomp4/fourcc.h:
        * gst/isomp4/qtdemux.c:
          qtdemux: add mappings for Hap video codec
          Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3596
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7717>

2024-11-05 12:52:08 +0100  François Laignel <francois@centricular.com>

        * docs/gst_plugins_cache.json:
        * gst/rtpmanager/gstrtpjitterbuffer.c:
          rtpjitterbuffer: add RFC7273 active status to stats
          Checking whether rtpjitterbuffer actually timestamps the buffers according to
          the RFC7273 clock definition and rtpjitterbuffer configuration required looking
          at the DEBUG logs.
          This commit adds an entry in the rtpjitterbuffer stats to indicate if
          conditions are met for RFC7273 to be active.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7829>

2025-02-11 21:43:05 +1100  Brad Hards <bradh@frogmouth.net>

        * gst/isomp4/qtdemux.c:
          qtdemux: fix version 1 profile handling, add diagnostics
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8456>

2025-02-12 11:54:02 +1100  Brad Hards <bradh@frogmouth.net>

        * gst/isomp4/qtdemux.c:
          qtdemux: support uncompressed mono with component interleave
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8464>

2025-02-11 12:15:26 +0100  Jochen Henneberg <jochen@centricular.com>

        * sys/v4l2/gstv4l2object.c:
          v4l2: object: Make sure dmabuf_tmpl isn't used uninitialized
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8457>

2025-02-11 10:17:34 +0100  Ognyan Tonchev <ognyan@axis.com>

        * gst/rtpmanager/rtpsession.c:
        * gst/rtpmanager/rtpsource.c:
        * tests/check/elements/rtpsession.c:
          rtpmanager: skip RTPSources if last_rtime is not set yet
          Fixes previous commit (which worked in GStreamer 1.22 but not in
          1.24 and newer). Sorry for the noise, should have tested on
          master before pusshing it :(
          Fixes: #3918
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8455>

2025-02-11 11:52:05 +0700  sergey radionov <rsatom@gmail.com>

        * sys/v4l2/gstv4l2bufferpool.c:
          v4l2: bufferpool: update buffer state after group release
          This fixes the state that lead to a flood of "newly allocated buffer
          %u is not free" warnings.
          Fixes #1185 #3184 #4037
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8454>

2025-02-11 11:05:50 +0700  sergey radionov <rsatom@gmail.com>

        * sys/v4l2/gstv4l2allocator.c:
          v4l2: allocator: added group pointer to "group-released" signal
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8454>

2025-02-11 11:03:18 +0700  sergey radionov <rsatom@gmail.com>

        * sys/v4l2/gstv4l2allocator.c:
        * sys/v4l2/gstv4l2allocator.h:
          v4l2: allocator: G_TYPE defined for GstV4l2MemoryGroup
          This is needed to pass the GstV4l2MemoryGroup structure through
          a glib signal.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8454>

2025-02-07 18:53:11 +0100  Carlos Bentzen <cadubentzen@igalia.com>

        * docs/gst_plugins_cache.json:
        * gst/isomp4/atoms.c:
        * gst/isomp4/atoms.h:
        * gst/isomp4/gstqtmux.c:
        * gst/isomp4/gstqtmuxmap.c:
          qtmux: add support for VVC/H.266 video
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8436>

2025-02-10 11:31:48 +0900  Hou Qi <qi.hou@nxp.com>

        * docs/gst_plugins_cache.json:
        * sys/v4l2/gstv4l2object.c:
          v4l2: Add BGR10A2_LE support
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8154>

2025-02-08 16:32:31 +0100  Carlos Bentzen <cadubentzen@igalia.com>

        * docs/gst_plugins_cache.json:
        * gst/matroska/matroska-mux.c:
          matroskamux: add support for VVC/H.266 video
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8441>

2025-02-08 16:19:58 +0100  Carlos Bentzen <cadubentzen@igalia.com>

        * gst/matroska/matroska-demux.c:
          matroskademux: add support for VVC/H.266 video
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8441>

2025-02-08 16:19:22 +0100  Carlos Bentzen <cadubentzen@igalia.com>

        * gst/matroska/matroska-ids.h:
          matroska: add V_MPEGI/ISO/VVC id
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8441>

2025-02-06 11:34:06 +0100  Alexander Slobodeniuk <aslobodeniuk@fluendo.com>

        * gst/autodetect/gstautodetect.c:
          autodetect: cleanup no-op check for "constructed" implementation
          It's always implemented by GObject.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416>

2025-02-06 11:28:51 +0100  Alexander Slobodeniuk <aslobodeniuk@fluendo.com>

        * gst/videofilter/gstvideoflip.c:
          videoflip: fix chaining up GObject's constructed virtual method
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416>

2023-07-22 01:14:52 +0200  Carlos Bentzen <cadubentzen@gmail.com>

        * gst/isomp4/fourcc.h:
        * gst/isomp4/qtdemux.c:
        * gst/isomp4/qtdemux_types.c:
          qtdemux: add support for VVC/H.266
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5088>

2025-02-09 17:47:32 +0000  Tim-Philipp Müller <tim@centricular.com>

        * meson.build:
          Back to development after 1.25.50

=== release 1.25.50 ===

2025-02-09 17:35:17 +0000  Tim-Philipp Müller <tim@centricular.com>

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

2025-02-04 00:01:01 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

        * ext/adaptivedemux2/meson.build:
        * ext/meson.build:
        * ext/soup/meson.build:
          soup: Ensure that libsoup RPATHs are added with Homebrew too
          With the old method of adding build RPATHs, only the libsoup as
          a subproject was supported. However, it's possible to use Homebrew for
          libsoup too by adding libsoup as a dependency to the target (even
          though we don't link to it).
          Apple ld will not add a LC_LOAD_DYLIB entry for a library unless there
          are symbols that need it because meson passes `-dead_strip_dylibs`, so
          we can do this without issue.
          As a bonus, this ensures the correct build RPATHs in all cases.
          Additionally, we still need to explicitly add an LC_RPATH for the
          installed case.
          Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4027
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8403>

2024-11-26 11:17:17 -0700  dukesook <devonsookhoo14@gmail.com>

        * gst/isomp4/fourcc.h:
        * gst/isomp4/qtdemux.c:
        * gst/isomp4/qtdemux.h:
          qtdemux: Demux Uncompressed MP4
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7985>

2025-02-06 17:13:16 +0000  Philippe Normand <philn@igalia.com>

        * gst/rtpmanager/gstrtpsession.c:
          rtpsession: Fix heap-use-after-free of twcc_packets structure
          This is a regression introduced by 90d99c7b52d9dc82a220cca1355f1dca3d57a838.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8427>

2025-01-29 20:42:55 +1100  Jan Schmidt <jan@centricular.com>

        * tests/examples/rtsp/test-onvif.c:
          test-onvif example: Add support for AAC backchannel
          Detect upstream backchannel codec and support AAC in MPEG4-GENERIC
          encapsulation
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8378>

2025-02-03 14:00:23 +0100  Nicolas Dufresne <nicolas.dufresne@collabora.com>

        * docs/gst_plugins_cache.json:
        * sys/v4l2/gstv4l2object.c:
          v4l2: object: Use libgstvideo DMA DRM mapping
          Complete the mapping by pulling GST/DRM mapping from libgstvideo. This removes
          the duplication.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8404>

2025-01-25 04:29:54 +0100  Robert Mader <robert.mader@collabora.com>

        * gst/matroska/matroska-demux.c:
          matroskademux: Implement rotation tag support
          Similar to qtdemux.
          Tested against other Gst elements and MPV. Note that the later
          apparently does not show correct results for flipped values.
          In particular the Yaw value seems to get ignored by many clients.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8319>

2025-01-20 00:37:58 +0100  Robert Mader <robert.mader@collabora.com>

        * gst/matroska/matroska-mux.c:
          matroskamux: Implement rotation tag support
          Similar to qtmux, but for mkv and webm containers.
          Tested against other Gst elements and MPV. Note that the later
          apparently does not show correct results for flipped values.
          In particular the Yaw value seems to get ignored by many clients.
          Can be tested with:
          ```
          gst-launch-1.0 \
          videotestsrc num-buffers=90 ! \
          taginject tags="image-orientation=rotate-270" ! \
          capsfilter caps=video/x-raw,width=640,height=480,max-framerate=30/1 ! \
          videoconvert ! \
          queue ! \
          vp8enc ! \
          queue ! \
          webmmux ! \
          filesink location=./test.webm
          ```
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8319>

2025-01-20 00:35:03 +0100  Robert Mader <robert.mader@collabora.com>

        * gst/matroska/matroska-ids.h:
          matroska: Add projection IDs
          These will allow us to support rotate methods with matroska v4 and
          the corresponding webm.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8319>

2025-02-02 16:09:06 +0100  Tomas Granath <tomas.granath@outlook.com>

        * gst/matroska/matroska-demux.c:
          matroskademux: Mark streams as EOS when outside the requested segment
          Ensure that streams with no (more) data are marked as EOS when
          advancing past the requested segment. Without this change the
          EOS would be postponed to the end of the file in that case.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8395>

2024-06-11 17:46:11 +0200  Ruben Gonzalez <rgonzalez@fluendo.com>

        * meson.build:
          meson: use nls option to ENABLE_NLS
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7017>

2023-09-29 18:10:09 +0200  Tim-Philipp Müller <tim@centricular.com>

        * scripts/update-orc-dist-files.py:
          scripts: update update-orc-dist-files.py scripts for new gst-indent
          And fix python indentation with autopep8
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5192>

2025-01-30 15:48:03 +1100  Jan Schmidt <jan@centricular.com>

        * sys/v4l2/gstv4l2videodec.c:
          v4l2vidoedec: Fix caps negotiation in non-DRM case
          Append acquired_caps to the filter_caps being built,
          instead of a 2nd copy of acquired_drm_caps.
          Fix a regression introduced in
          https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633
          when downstream doesn't support DRM output.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8385>

2025-01-27 16:38:38 +0100  Piotr Brzeziński <piotr@centricular.com>

        * sys/osxaudio/gstosxcoreaudio.c:
          osxaudio: Always expose max amount of channels with no positions
          For outputs with a high number of channels, macOS has a bug where
          initially CoreAudio will report incorrect positions for all channels,
          but after you run Audio MIDI Setup and configure the speaker layout
          there, macOS will always report those few as positioned, with no option
          to revert that (other than deleting some internal files).
          In such scenario our code would just ignore all the unpositioned
          channels. Since you can only position max. 16 channels in macOS, if you
          had more on your output device, those would be unusable.
          This commit makes sure that in addition to the usual positioned layout
          (if there is one), we will expose caps for a no-positions layout that
          always has the maximum amount of channels available.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8311>

2025-01-16 17:27:50 +0100  Piotr Brzeziński <piotr@centricular.com>

        * sys/osxaudio/gstosxcoreaudio.c:
          osxaudio: Work around invalid channel positions from CoreAudio
          By default, for devices with larger amounts of outputs, CoreAudio can
          provide invalid channel labels/positions, simply by starting at 0 and
          incrementing forward. For example, values 19 through 32 are not valid
          according to the CoreAudioBaseTypes.h header, but if your device has >19
          output channels, you will find CoreAudio using those values.
          This is most likely a bug in CoreAudio, since in that case it should use
          unpositioned labels (e.g. _Discrete_X) instead.
          This commit aims to work around this by overriding all channels to be
          unpositioned if the case above is detected.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8311>

2025-01-19 18:49:57 +0100  Robert Mader <robert.mader@collabora.com>

        * gst/isomp4/gstqtmux.c:
          qtmux: Implement rotation tag support
          Mirroring the demux element and isomp4mux from gst-plugins-rs.
          Tested against other Gst elements and MPV. Note that the later
          apparently does not show correct results for flipped values.
          Can be tested with:
          ```
          gst-launch-1.0 \
          videotestsrc num-buffers=90 ! \
          taginject tags="image-orientation=rotate-90" ! \
          capsfilter caps=video/x-raw,width=640,height=480,max-framerate=30/1 ! \
          videoconvert ! \
          queue ! \
          openh264enc ! \
          queue ! \
          h264parse ! \
          mp4mux ! \
          filesink location=./test.mp4
          ```
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8371>

2025-01-28 15:08:03 +0100  Alexander Slobodeniuk <aslobodeniuk@fluendo.com>

        * gst/isomp4/gstqtmux.c:
          qtmux: fix critical warnings on negotiation error
          This pipeline fails to negotiate on my PC:
          gst-launch-1.0 v4l2src ! h264parse ! qtmux ! filesink location=t.mp4
          When it happens some critical glib warnings are emitted:
          -------------------------------
          GStreamer-CRITICAL **: 15:09:03.485: gst_mini_object_copy: assertion 'mini_object != NULL' failed
          GStreamer-CRITICAL **: 15:09:03.485: gst_mini_object_unref: assertion 'mini_object != NULL' failed
          GStreamer-CRITICAL **: 15:09:03.485: gst_caps_get_structure: assertion 'GST_IS_CAPS (caps)' failed
          GStreamer-CRITICAL **: 15:09:03.485: gst_structure_set_value: assertion 'structure != NULL' failed
          GStreamer-CRITICAL **: 15:09:03.485: gst_mini_object_unref: assertion 'mini_object != NULL' failed
          --------------------------------
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8374>

2025-01-26 13:16:51 +1100  Brad Hards <bradh@frogmouth.net>

        * gst/debugutils/gsttaginject.c:
          taginject: typo fix in usage example
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8362>

2025-01-21 18:29:47 -0300  Thibault Saunier <tsaunier@igalia.com>

        * gst/matroska/matroska-demux.c:
        * gst/matroska/matroska-demux.h:
          matroskademux: Add support to seek with stop in push mode
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8340>

2025-01-15 17:36:00 +0100  Mathieu Duponchelle <mathieu@centricular.com>

        * docs/meson.build:
          docs: generate hotdoc configs for libraries with our helper script
          With this patch, configure time is identical no matter whether doc is
          enabled or not.
          The configuration files also now contain explicitly-listed sources with
          no wildcards.
          For the four libraries where hotdoc needs to use clang to generate the
          documentation (as opposed to the rest of the libraries where hotdoc uses
          the gir), the script will call pkg-config to determine the appropriate
          C flags.
          This means a side effect of this patch is that pkg-config files are now
          generated for the gstadaptivedemux and gstopencv libraries.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312>

2025-01-17 16:51:22 +0100  Mathieu Duponchelle <mathieu@centricular.com>

        * meson.build:
          meson: bump minimum version to 1.4 in every subprojects
          36c01d05797ad9c7778939c54870f979bdcbba1f bumped to 1.4 for gst-devtools
          and the root project, but we usually keep those in sync everywhere.
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312>

2025-01-14 16:29:28 +0100  Mathieu Duponchelle <mathieu@centricular.com>

        * docs/gst_plugins_cache.json:
        * gst/audiofx/gstscaletempo.c:
        * gst/audiofx/gstscaletempo.h:
          scaletempo: expose alternative mode, fit-down
          In fit-down mode only 1.0 rates are supported, and the element will fit
          audio data in buffers to their advertised duration.
          This is useful in speech synthesis cases, where elements such as
          awspolly will generate audio data from text, and assign the duration of the
          input text buffers to their output buffers
          Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8149>

2025-01-14 15:00:43 +0000  Tim-Philipp Müller <tim@centricular.com>

        * meson.build:
          Back to development after 1.25.1

=== 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 ===

Generated by dwww version 1.16 on Sat Oct 3 03:25:08 CEST 2026.