Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gstreamer-plugins-bad for 
openSUSE:Factory checked in at 2023-07-01 23:17:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-bad (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-plugins-bad.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-plugins-bad"

Sat Jul  1 23:17:25 2023 rev:147 rq:1096146 version:1.22.4

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-plugins-bad/gstreamer-plugins-bad.changes  
    2023-05-28 19:21:39.620539954 +0200
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-plugins-bad.new.13546/gstreamer-plugins-bad.changes
   2023-07-01 23:17:29.126056798 +0200
@@ -1,0 +2,24 @@
+Mon Jun 26 14:36:10 UTC 2023 - Bjørn Lie <bjorn....@gmail.com>
+
+- Update to version 1.22.4:
+  + asfmux: fix possible unaligned write on 32-bit ARM.
+  + d3d11videosink: Fix error on pause and play.
+  + d3dvideosink: Fix navigation event leak.
+  + decklink: Correctly handle SDK strings on macOS and free
+    strings after usage on Linux.
+  + dvdspu: Make sure enough data is allocated for the available
+    data.
+  + fdkaacdec: Support up to 5 rear channels.
+  + h265parse: Fix framerate handling.
+  + kmssink: Add STM32 LTDC and NXP i.MX8M Plus LCDIFv3
+    auto-detection.
+  + sdpdemux: ensure that only one srcpad is created per stream.
+  + srtpdec: fix critical warnings on shutdown.
+  + testsrcbin: Remove spurious caps unref.
+  + va: map the mbbrc to correct enum value in get_property().
+  + vtenc: apply DTS offset to ensure DTS <= PTS.
+  + vtdec: time glitches on h264 playback.
+  + waylandsink: Emit "map" signal boarder surface is ready.
+- Rebase reduce-required-meson.patch.
+
+-------------------------------------------------------------------

Old:
----
  gst-plugins-bad-1.22.3.tar.xz

New:
----
  gst-plugins-bad-1.22.4.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gstreamer-plugins-bad.spec ++++++
--- /var/tmp/diff_new_pack.6IybEp/_old  2023-07-01 23:17:29.994062001 +0200
+++ /var/tmp/diff_new_pack.6IybEp/_new  2023-07-01 23:17:29.998062025 +0200
@@ -71,7 +71,7 @@
 %endif
 
 Name:           gstreamer-plugins-bad
-Version:        1.22.3
+Version:        1.22.4
 Release:        0
 Summary:        GStreamer Streaming-Media Framework Plug-Ins
 License:        LGPL-2.1-or-later

++++++ gst-plugins-bad-1.22.3.tar.xz -> gst-plugins-bad-1.22.4.tar.xz ++++++
++++ 1617 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/ChangeLog new/gst-plugins-bad-1.22.4/ChangeLog
--- old/gst-plugins-bad-1.22.3/ChangeLog        2023-05-19 10:26:34.555968000 
+0200
+++ new/gst-plugins-bad-1.22.4/ChangeLog        2023-06-20 18:48:28.867239500 
+0200
@@ -1,3 +1,255 @@
+=== release 1.22.4 ===
+
+2023-06-20 17:42:25 +0100  Tim-Philipp Müller <t...@centricular.com>
+
+       * NEWS:
+       * RELEASE:
+       * gst-plugins-bad.doap:
+       * meson.build:
+         Release 1.22.4
+
+2023-06-13 14:25:04 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * gst/dvdspu/gstspu-pgs.c:
+         dvdspu: Avoid integer overflow when checking if enough data is 
available
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4899>
+
+2023-06-13 14:23:47 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * gst/dvdspu/gstspu-pgs.c:
+         dvdspu: Make sure enough data is allocated for the available data
+         If the size read from the stream is smaller than the currently 
available
+         data then the size is bogus and the data should simply be discarded.
+         Fixes ZDI-CAN-20994
+         Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2660
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4899>
+
+2023-04-18 09:59:36 +0200  Andoni Morales Alastruey <amora...@fluendo.com>
+
+       * sys/applemedia/vtenc.c:
+       * sys/applemedia/vtenc.h:
+         vtenc: remove duplicated framerate and size variables
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4888>
+
+2023-03-30 15:38:22 +0200  Andoni Morales Alastruey <amora...@fluendo.com>
+
+       * sys/applemedia/meson.build:
+       * sys/applemedia/vtdec.h:
+       * sys/applemedia/vtenc.c:
+       * sys/applemedia/vtenc.h:
+       * tests/validate/meson.build:
+       * tests/validate/vtenc/vtenc_h264.validatetest:
+       * 
tests/validate/vtenc/vtenc_h264/flow-expectations/log-enc-src-expected:
+       * tests/validate/vtenc/vtenc_h264_b_frames.validatetest:
+       * 
tests/validate/vtenc/vtenc_h264_b_frames/flow-expectations/log-enc-src-expected:
+       * tests/validate/vtenc/vtenc_h265.validatetest:
+       * 
tests/validate/vtenc/vtenc_h265/flow-expectations/log-enc-src-expected:
+       * tests/validate/vtenc/vtenc_h265_b_frames.validatetest:
+       * 
tests/validate/vtenc/vtenc_h265_b_frames/flow-expectations/log-enc-src-expected:
+         vtenc: apply DTS offset to ensure DTS <= PTS
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4888>
+
+2023-03-23 20:04:49 -0400  Nicolas Dufresne <nicolas.dufre...@collabora.com>
+
+       * gst/videoparsers/gsth265parse.c:
+         h265parse: Don't override upstream framerate
+         The framerate should only be replaced (and corrected for alternating 
field)
+         when it is parsed from the bitstream. Otherwise, the upstream 
framerate
+         from caps should be trusted and assumed correct.
+         Related to gst-plugins-bad!2020
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352>
+
+2023-03-23 20:02:16 -0400  Nicolas Dufresne <nicolas.dufre...@collabora.com>
+
+       * gst/videoparsers/gsth265parse.c:
+       * gst/videoparsers/gsth265parse.h:
+         h265parse: Rename parsed_framerate to framerate_from_caps
+         That meaning of parsed_framerate is ambigious, it is set whenever the
+         framerate has been parsed from caps, which can be confused with being
+         parsed from the bitstream. Rename this as framerate_from_caps.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352>
+
+2023-02-15 13:10:39 +0800  Mengkejiergeli Ba <mengkejiergeli...@intel.com>
+
+       * gst/videoparsers/gsth265parse.c:
+         h265parse: Fix to check returned value
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352>
+
+2023-05-11 15:28:35 +0200  Michael Olbrich <m.olbr...@pengutronix.de>
+
+       * gst/sdp/gstsdpdemux.c:
+         sdpdemux: ensure that only one srcpad is created per stream
+         If two senders use the same multicast IP and port then 
new_session_pad()
+         may try to add a srcpad to the same stream twice.
+         stream->srcpad is updated but gst_element_add_pad() fails the second
+         time. As a result stream->srcpad points to a deleted object and
+         access in gst_sdp_demux_stream_free() fails with a segfault.
+         Just ignore the second pad. Nothing useful can be done with it anyway.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4873>
+
+2023-06-11 22:22:36 +0200  Marek Vasut <ma...@denx.de>
+
+       * sys/kms/gstkmssink.c:
+         kmssink: Add ST STM32 LTDC auto-detection
+         Add STM32 LTDC controller into list of auto-detected modules.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4872>
+
+2023-06-11 22:22:25 +0200  Marek Vasut <ma...@denx.de>
+
+       * sys/kms/gstkmssink.c:
+         kmssink: Add NXP i.MX8M Plus LCDIFv3 auto-detection
+         Add i.MX8M Plus LCDIFv3 controller into list of auto-detected modules.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4872>
+
+2023-04-28 22:25:11 +0800  He Junyan <junyan...@intel.com>
+
+       * sys/va/gstvah265enc.c:
+         va: h265enc: map the mbbrc to correct enum value in get_property()
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4870>
+
+2023-04-28 22:26:34 +0800  He Junyan <junyan...@intel.com>
+
+       * sys/va/gstvah264enc.c:
+         va: h264enc: map the mbbrc to correct enum value in get_property()
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4870>
+
+2023-06-14 10:08:51 +0200  François Laignel <franc...@centricular.com>
+
+       * ext/srtp/gstsrtpdec.c:
+         srtpdec: fix Got data flow before segment event
+         A race condition can occur in `srtpdec` during the READY -> NULL 
transition:
+         an RTCP buffer can make its way to `gst_srtp_dec_chain` while the 
element is
+         partially stopped, resulting in the following critical warning:
+         > Got data flow before segment event
+         The problematic sequence is the following:
+         1. An RTCP buffer is being handled by the chain function for the
+         `rtcp_sinkpad`. Since, this is the first buffer, we try pushing the 
sticky
+         events to `rtcp_srcpad`.
+         2. At the same moment, the element is being transitioned from PAUSED 
to READY.
+         3. While checking and pushing the sticky events for `rtcp_srcpad`, we 
reach the
+         Segment event. For this, we try to get it from the "otherpad", in 
this case
+         `rtp_srcpad`. In the problematic case, `rtp_srcpad` has already been
+         deactivated so its sticky events have been cleared. We won't be 
pushing any
+         Segment event to `rtcp_srcpad`.
+         4. We return to the chain function for `rtcp_sinkpad` and try pushing 
the
+         buffer to `rtcp_srcpad` for which deactivation hasn't started yet, 
hence the
+         "Got data flow before segment event".
+         This commit:
+         - Adds a boolean return value to `gst_srtp_dec_push_early_events`: in 
case the
+         Segment event can't be retrieved, `gst_srtp_dec_chain` can return  an 
error
+         instead of calling `gst_pad_push`.
+         - Replaces the obsolete `gst_pad_set_caps` with `gst_pad_push_event`. 
The
+         additional preconditions checked by previous function are guaranteed 
here
+         since we push a fixed Caps which was built in the same function.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4860>
+
+2023-06-15 11:11:39 +0200  François Laignel <franc...@centricular.com>
+
+       * ext/srtp/gstsrtpdec.c:
+         srtpdec: backport for fix assertion 'parent->numsinkpads <= 1' failed
+         Commit 96450f4c uses the new function 
`gst_element_decorate_stream_id` which
+         was introduced by 39633967 in 1.23.
+         This commit backports 96450f4c with a simplified version of
+         `gst_element_decorate_stream_id_internal` as a private srtpdec 
function.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4860>
+
+2023-06-15 01:36:25 +0900  Seungha Yang <seun...@centricular.com>
+
+       * sys/d3dvideosink/d3dvideosink.c:
+         d3dvideosink: Fix navigation event leak
+         Fixing regression introduced in 
6c2f6c3bd4dd525eb02c6d7000e84b76663d3daf
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4868>
+
+2023-06-13 01:29:14 +0100  Tim-Philipp Müller <t...@centricular.com>
+
+       * gst/asfmux/gstasfobjects.c:
+         asfmux: fix potentially unaligned write on 32-bit ARM
+         Fixes #2665
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4855>
+
+2023-06-01 15:16:47 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * sys/decklink/gstdecklink.h:
+         decklink: Implement Windows string conversion with common API between 
MinGW and MSVC
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
+
+2023-06-01 15:17:26 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * sys/decklink/gstdecklink.h:
+         decklink: Add some newlines in long defines
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
+
+2023-05-31 23:44:42 +0300  Maksym Khomenko <maksym.khomenko@skelia.partners>
+
+       * sys/decklink/gstdecklink.h:
+         decklink: Calculate string size before malloc
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
+
+2023-05-30 15:27:21 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * sys/decklink/gstdecklink.h:
+         decklink: Use the macOS version of the SDK on macOS and not the Linux 
one
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
+
+2023-05-30 13:23:28 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * sys/decklink/gstdecklink.h:
+         decklink: Free SDK strings after usage on Linux
+         While they're const char* they still need to be freed like on Windows
+         and macOS and would be leaked otherwise.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
+
+2023-05-30 13:22:44 +0300  Sebastian Dröge <sebast...@centricular.com>
+
+       * sys/decklink/gstdecklink.h:
+         decklink: Correctly handle SDK strings on macOS
+         They're CFStringRef* and not plain NUL-terminated char* C strings.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
+
+2023-05-26 13:26:42 +0100  Colin Kinloch <colin.kinl...@collabora.com>
+
+       * ext/gtk/gstgtkwaylandsink.c:
+       * gst-libs/gst/wayland/gstwlwindow.c:
+         waylandsink: Emit "map" signal boarder surface is ready
+         This allows gtkwaylandsink to queue a draw of its gtk widget at the
+         correct time, avoiding a race.
+         Signed-off-by: Colin Kinloch <colin.kinl...@collabora.com>
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4754>
+
+2023-05-25 17:02:24 +0200  Jan Alexander Steffens (heftig) 
<jan.steff...@ltnglobal.com>
+
+       * ext/fdkaac/gstfdkaacdec.c:
+         fdkaacdec: Support up to 5 rear channels
+         The `switch (n_rear)` supports up to 5 rear channels, but our channel
+         set only had space for 3. Size the set properly to fix this.
+         This didn't actually cause any memory unsafety as `PUSH_CHAN` would 
stop
+         incrementing `n_rear` if the channel set is already full.
+         Thanks to @alatiera for noticing this.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4740>
+
+2023-05-24 22:12:51 +0900  Seungha Yang <seun...@centricular.com>
+
+       * sys/d3d11/gstd3d11videosink.cpp:
+         d3d11videosink: Fix error on pause and play
+         The show_frame() can be called without prepare() call on paused to
+         playing state change. Thus the prepared buffer should not be cleared
+         on show_frame()
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4714>
+
+2023-05-18 09:27:29 -0400  Thibault Saunier <tsaun...@igalia.com>
+
+       * gst/debugutils/gsttestsrcbin.c:
+         testsrcbin: Remove spurious caps unref
+         Caps are cleared at the end of the function
+         Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2575
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4685>
+
+2023-05-19 12:36:19 +0100  Tim-Philipp Müller <t...@centricular.com>
+
+       * meson.build:
+         Back to development
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4679>
+
 === release 1.22.3 ===
 
 2023-05-19 09:23:19 +0100  Tim-Philipp Müller <t...@centricular.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/NEWS new/gst-plugins-bad-1.22.4/NEWS
--- old/gst-plugins-bad-1.22.3/NEWS     2023-05-19 10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/NEWS     2023-06-20 18:42:25.000000000 +0200
@@ -2,13 +2,13 @@
 
 GStreamer 1.22.0 was originally released on 23 January 2023.
 
-The latest bug-fix release in the stable 1.22 series is 1.22.3 and was
-released on 19 May 2023.
+The latest bug-fix release in the stable 1.22 series is 1.22.4 and was
+released on 20 June 2023.
 
 See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
 version of this document.
 
-Last updated: Friday 19 May 2023, 01:00 UTC (log)
+Last updated: Tuesday 20 June 2023, 16:30 UTC (log)
 
 Introduction
 
@@ -1831,6 +1831,183 @@
 -   List of Merge Requests applied in 1.22.3
 -   List of Issues fixed in 1.22.3
 
+1.22.4
+
+The fourth 1.22 bug-fix release (1.22.4) was released on 20 June 2023.
+
+This release only contains bugfixes and security fixes and it should be
+safe to update from 1.22.x.
+
+Highlighted bugfixes in 1.22.4
+
+-   Security fixes for flacparse, dvdspu, and subparse
+-   d3d11videosink: Fix error on pause and play
+-   decklink: Correctly handle SDK strings on macOS and free strings
+    after usage on Linux
+-   filesink: Fix buffered mode writing of buffer lists and buffers with
+    multiple memories
+-   gldownload: handle passthrough without a critical
+-   h265parse: Fix framerate handling regression
+-   oggdemux: vp8 fixes
+-   mp4mux, qtmux, qtdemux: Opus audio mapping fixes
+-   pngdec: Fix wrong colours output from 16bit RGB images
+-   ptp clock: Work around ptpd bug in default configuration
+-   srtpdec: fix critical warnings on shutdown
+-   v4l2src: fix support for bayer format
+-   v4l2videoenc: support force-keyframe event in v4l2 encoder
+-   vtenc: apply DTS offset to ensure DTS <= PTS
+-   gst-python: allow more functions to be called before gst_init()
+-   cerbero: fix vaapi variant; add qt6 build on windows; ensure errors
+    on unguarded use of new APIs, require macOS 10.13
+-   packages: ship codecalpha, rtponvif, dvbsubenc, switchbin,
+    videosignal plugins; fix pango crash on 32-bit windows
+-   various bug fixes, memory leak fixes, and other stability and
+    reliability improvements
+
+gstreamer
+
+-   filesink: Fix buffered mode writing of buffer lists and buffers with
+    multiple memories
+-   basesink: Clear EOS flag on STREAM-START event
+-   typefindhelper: downgrade bogus error level debug log message
+-   ptp: Correctly parse clock ID from the commandline parameters in the
+    helper
+-   ptp: Work around bug in ptpd in default configuration
+
+gst-plugins-base
+
+-   alsasink: Fix stall for transition from PAUSED to READY with USB
+    speakerphone.
+-   appsink: unref buffer in prev sample early so buffers from v4l2 can
+    be released properly
+-   basetextoverlay: Fix typo in “text-y” property description
+-   gldownload: handle passthrough without a critical
+-   glfilter: add parent meta to output buffer for input buffer
+-   oggdemux: vp8: Push headers downstream and detect keyframe packets
+-   opus: Fix potential crash when getting unexpected channel position
+-   streamsynchronizer: reset eos on STREAM_START
+-   subparse: Look for the closing > of a tag after the opening <
+-   video: convertframe: Add D3D11 specific conversion path
+-   videometa: Only validate the alignment only when it contains some
+    info
+-   video-blend: Fix linking error with C++
+
+gst-plugins-good
+
+-   flacparse: Avoid integer overflow in available data check for image
+    tags
+-   flvmux: use the correct timestamp to calculate wait times
+-   isomp4: Fix (E)AC-3 channel count handling
+-   jpegdec: fixes related to interlaced jpeg
+-   pngdec: Fix wrong colours output from 16bit RGB images
+-   qtmux, qtdemux: fix byte order for opus extension
+-   rtspsrc: Do not try send dropped get/set parameter
+-   qt5, qt6: Add more meson options and eliminate all automagic
+-   qt: glrenderer: don’t attempt to use QWindow from non-Qt main thread
+-   qml6glsink: Support building on win32
+-   v4l2src: fix support for bayer format
+-   v4l2: Change to query only up to
+    V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS
+-   v4l2videodec: treat MPEG-1 format as MPEG-2
+-   v4l2videoenc: support force keyframe event in v4l2 encoder
+-   tests: rtpbin_buffer_list: fix possible unaligned write/read on
+    32-bit ARM
+
+gst-plugins-bad
+
+-   asfmux: fix possible unaligned write on 32-bit ARM
+-   d3d11videosink: Fix error on pause and play
+-   d3dvideosink: Fix navigation event leak
+-   decklink: Correctly handle SDK strings on macOS and free strings
+    after usage on Linux
+-   dvdspu: Make sure enough data is allocated for the available data
+-   fdkaacdec: Support up to 5 rear channels
+-   h265parse: Fix framerate handling
+-   kmssink: Add STM32 LTDC and NXP i.MX8M Plus LCDIFv3 auto-detection
+-   sdpdemux: ensure that only one srcpad is created per stream
+-   srtpdec: fix critical warnings on shutdown
+-   testsrcbin: Remove spurious caps unref
+-   va: map the mbbrc to correct enum value in get_property()
+-   vtenc: apply DTS offset to ensure DTS <= PTS
+-   vtdec: time glitches on h264 playback
+-   waylandsink: Emit “map” signal boarder surface is ready
+
+gst-plugins-ugly
+
+-   No changes
+
+gst-libav
+
+-   No changes
+
+gst-rtsp-server
+
+-   No changes
+
+gstreamer-vaapi
+
+-   vaapidecodebin: don’t load vaapipostproc if not available
+
+gstreamer-sharp
+
+-   No changes
+
+gst-omx
+
+-   No changes
+
+gst-python
+
+-   python: More functions can be called before gst_init()
+
+gst-editing-services
+
+-   ges: launcher: Never put sinks in a GstPipeline
+
+gst-validate + gst-integration-testsuites
+
+-   No changes
+
+gst-examples
+
+-   No changes
+
+Development build environment
+
+-   No changes
+
+Cerbero build tool and packaging changes in 1.22.4
+
+-   Ship codecalpha, rtponvif, dvbsubenc, switchbin, videosignal plugins
+-   pango: Fix crash on Windows 32bit build
+-   qml6: Add support for building the qml6 plugin on Windows and bump
+    meson to 1.1.1
+-   vaapi: update vaapi variant/recipe for meson option changes
+-   packages: Put libass in the same category as assrender
+-   cerbero: Don’t extract if already extracted in fetch
+-   darwin: Ensure errors on unguarded use of new APIs, require macOS
+    10.13
+
+Contributors to 1.22.4
+
+Andoni Morales Alastruey, Arun Raghavan, Colin Kinloch, Daniel Morin,
+Edward Hervey, ekwange, Elliot Chen, François Laignel, Guillaume
+Desmottes, Haihua Hu, He Junyan, Hou Qi, Jan Alexander Steffens
+(heftig), Jochen Henneberg, Jordan Petridis, Kevin Song, Maksym
+Khomenko, Marek Vasut, Mathieu Duponchelle, Matthew Waters,
+Mengkejiergeli Ba, Michael Olbrich, Nicolas Beland, Nicolas Dufresne,
+Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Sebastian Dröge,
+Seungha Yang, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez
+Leal, William Manley, Xavier Claessens, Yuri Fedoseev,
+
+… and many others who have contributed bug reports, translations, sent
+suggestions or helped testing. Thank you all!
+
+List of merge requests and issues fixed in 1.22.4
+
+-   List of Merge Requests applied in 1.22.4
+-   List of Issues fixed in 1.22.4
+
 Schedule for 1.24
 
 Our next major feature release will be 1.24, and 1.23 will be the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/RELEASE new/gst-plugins-bad-1.22.4/RELEASE
--- old/gst-plugins-bad-1.22.3/RELEASE  2023-05-19 10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/RELEASE  2023-06-20 18:42:25.000000000 +0200
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-bad 1.22.3.
+This is GStreamer gst-plugins-bad 1.22.4.
 
 The GStreamer team is thrilled to announce a new major feature release
 of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/ext/fdkaac/gstfdkaacdec.c 
new/gst-plugins-bad-1.22.4/ext/fdkaac/gstfdkaacdec.c
--- old/gst-plugins-bad-1.22.3/ext/fdkaac/gstfdkaacdec.c        2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/ext/fdkaac/gstfdkaacdec.c        2023-06-20 
18:42:25.000000000 +0200
@@ -237,7 +237,7 @@
 
   DEF_CHANSET (front, 7);
   DEF_CHANSET (side, 2);
-  DEF_CHANSET (rear, 3);
+  DEF_CHANSET (rear, 5);
   DEF_CHANSET (lfe, 2);
   DEF_CHANSET (top_front, 3);
   DEF_CHANSET (top_center, 3);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/ext/gtk/gstgtkwaylandsink.c 
new/gst-plugins-bad-1.22.4/ext/gtk/gstgtkwaylandsink.c
--- old/gst-plugins-bad-1.22.3/ext/gtk/gstgtkwaylandsink.c      2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/ext/gtk/gstgtkwaylandsink.c      2023-06-20 
18:42:25.000000000 +0200
@@ -432,6 +432,17 @@
 }
 
 static void
+wl_window_map_cb (GstWlWindow * wl_window, GstGtkWaylandSink * self)
+{
+  GstGtkWaylandSinkPrivate *priv =
+      gst_gtk_wayland_sink_get_instance_private (self);
+
+  GST_DEBUG_OBJECT (self, "waylandsink surface is ready");
+
+  gtk_gst_base_widget_queue_draw (GTK_GST_BASE_WIDGET (priv->gtk_widget));
+}
+
+static void
 setup_wl_window (GstGtkWaylandSink * self)
 {
   GstGtkWaylandSinkPrivate *priv =
@@ -457,6 +468,8 @@
         wl_surface, &priv->render_lock);
     gst_wl_window_set_rotate_method (priv->wl_window,
         priv->current_rotate_method);
+    g_signal_connect_object (priv->wl_window, "map",
+        G_CALLBACK (wl_window_map_cb), self, 0);
   }
 
   /* In order to position the subsurface correctly within a scrollable widget,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/ext/srtp/gstsrtpdec.c 
new/gst-plugins-bad-1.22.4/ext/srtp/gstsrtpdec.c
--- old/gst-plugins-bad-1.22.3/ext/srtp/gstsrtpdec.c    2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/ext/srtp/gstsrtpdec.c    2023-06-20 
18:42:25.000000000 +0200
@@ -1260,7 +1260,54 @@
   return gst_srtp_dec_iterate_internal_links (pad, parent, TRUE);
 }
 
-static void
+/* Partial backport to 1.22 of `gst_element_decorate_stream_id_internal`,
+ * which was introduced in 1.23 */
+static gchar *
+decorate_stream_id_private (GstElement * element, const gchar * stream_id)
+{
+  gchar *upstream_stream_id = NULL, *new_stream_id;
+  GstQuery *query;
+  gchar *uri = NULL;
+
+  /* Try to generate a stream-id from the URI query and
+   * if it fails take a random number instead */
+  query = gst_query_new_uri ();
+  if (gst_element_query (element, query)) {
+    gst_query_parse_uri (query, &uri);
+  }
+
+  if (uri) {
+    GChecksum *cs;
+
+    /* And then generate an SHA256 sum of the URI */
+    cs = g_checksum_new (G_CHECKSUM_SHA256);
+    g_checksum_update (cs, (const guchar *) uri, strlen (uri));
+    g_free (uri);
+    upstream_stream_id = g_strdup (g_checksum_get_string (cs));
+    g_checksum_free (cs);
+  } else {
+    /* Just get some random number if the URI query fails */
+    GST_FIXME_OBJECT (element, "Creating random stream-id, consider "
+        "implementing a deterministic way of creating a stream-id");
+    upstream_stream_id =
+        g_strdup_printf ("%08x%08x%08x%08x", g_random_int (), g_random_int (),
+        g_random_int (), g_random_int ());
+  }
+
+  gst_query_unref (query);
+
+  if (stream_id) {
+    new_stream_id = g_strconcat (upstream_stream_id, "/", stream_id, NULL);
+  } else {
+    new_stream_id = g_strdup (upstream_stream_id);
+  }
+
+  g_free (upstream_stream_id);
+
+  return new_stream_id;
+}
+
+static gboolean
 gst_srtp_dec_push_early_events (GstSrtpDec * filter, GstPad * pad,
     GstPad * otherpad, gboolean is_rtcp)
 {
@@ -1283,7 +1330,7 @@
           is_rtcp ? "rtcp" : "rtp");
       gst_event_unref (otherev);
     } else {
-      new_stream_id = gst_pad_create_stream_id (pad, GST_ELEMENT (filter),
+      new_stream_id = decorate_stream_id_private (GST_ELEMENT (filter),
           is_rtcp ? "rtcp" : "rtp");
     }
 
@@ -1304,7 +1351,8 @@
     else
       caps = gst_caps_new_empty_simple ("application/x-rtp");
 
-    gst_pad_set_caps (pad, caps);
+    ev = gst_event_new_caps (caps);
+    gst_pad_push_event (pad, ev);
     gst_caps_unref (caps);
   }
 
@@ -1314,8 +1362,16 @@
   } else {
     ev = gst_pad_get_sticky_event (otherpad, GST_EVENT_SEGMENT, 0);
 
-    if (ev)
+    if (ev) {
       gst_pad_push_event (pad, ev);
+    } else if (GST_PAD_IS_FLUSHING (otherpad)) {
+      /* We didn't get a Segment event from otherpad
+       * and otherpad is flushing => we are most likely shutting down */
+      goto err;
+    } else {
+      GST_WARNING_OBJECT (filter, "No Segment event to push");
+      goto err;
+    }
   }
 
   if (is_rtcp)
@@ -1323,6 +1379,10 @@
   else
     filter->rtp_has_segment = TRUE;
 
+  return TRUE;
+
+err:
+  return FALSE;
 }
 
 /*
@@ -1500,15 +1560,24 @@
   /* Push buffer to source pad */
   if (is_rtcp) {
     otherpad = filter->rtcp_srcpad;
-    if (!filter->rtcp_has_segment)
-      gst_srtp_dec_push_early_events (filter, filter->rtcp_srcpad,
-          filter->rtp_srcpad, TRUE);
+    if (!filter->rtcp_has_segment) {
+      if (!gst_srtp_dec_push_early_events (filter, filter->rtcp_srcpad,
+              filter->rtp_srcpad, TRUE)) {
+        ret = GST_FLOW_FLUSHING;
+        goto drop_buffer;
+      }
+    }
   } else {
     otherpad = filter->rtp_srcpad;
-    if (!filter->rtp_has_segment)
-      gst_srtp_dec_push_early_events (filter, filter->rtp_srcpad,
-          filter->rtcp_srcpad, FALSE);
+    if (!filter->rtp_has_segment) {
+      if (!gst_srtp_dec_push_early_events (filter, filter->rtp_srcpad,
+              filter->rtcp_srcpad, FALSE)) {
+        ret = GST_FLOW_FLUSHING;
+        goto drop_buffer;
+      }
+    }
   }
+
   ret = gst_pad_push (otherpad, buf);
 
   return ret;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/gst/asfmux/gstasfobjects.c 
new/gst-plugins-bad-1.22.4/gst/asfmux/gstasfobjects.c
--- old/gst-plugins-bad-1.22.3/gst/asfmux/gstasfobjects.c       2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/gst/asfmux/gstasfobjects.c       2023-06-20 
18:42:25.000000000 +0200
@@ -311,14 +311,10 @@
 void
 gst_asf_put_guid (guint8 * buf, Guid guid)
 {
-  guint32 *aux32 = (guint32 *) buf;
-  guint16 *aux16 = (guint16 *) & (buf[4]);
-  guint64 *aux64 = (guint64 *) & (buf[8]);
-  *aux32 = GUINT32_TO_LE (guid.v1);
-  *aux16 = GUINT16_TO_LE (guid.v2);
-  aux16 = (guint16 *) & (buf[6]);
-  *aux16 = GUINT16_TO_LE (guid.v3);
-  *aux64 = GUINT64_TO_BE (guid.v4);
+  GST_WRITE_UINT32_LE (buf + 0, guid.v1);
+  GST_WRITE_UINT16_LE (buf + 4, guid.v2);
+  GST_WRITE_UINT16_LE (buf + 6, guid.v3);
+  GST_WRITE_UINT64_BE (buf + 8, guid.v4);
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/gst/debugutils/gsttestsrcbin.c 
new/gst-plugins-bad-1.22.4/gst/debugutils/gsttestsrcbin.c
--- old/gst-plugins-bad-1.22.3/gst/debugutils/gsttestsrcbin.c   2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/gst/debugutils/gsttestsrcbin.c   2023-06-20 
18:42:25.000000000 +0200
@@ -343,7 +343,6 @@
   capsfilter = gst_element_factory_make ("capsfilter", NULL);
   if (caps) {
     g_object_set (capsfilter, "caps", caps, NULL);
-    gst_caps_unref (caps);
   }
 
   src = gst_element_factory_make (srcfactory, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/gst/dvdspu/gstspu-pgs.c 
new/gst-plugins-bad-1.22.4/gst/dvdspu/gstspu-pgs.c
--- old/gst-plugins-bad-1.22.3/gst/dvdspu/gstspu-pgs.c  2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/gst/dvdspu/gstspu-pgs.c  2023-06-20 
18:42:25.000000000 +0200
@@ -593,6 +593,9 @@
     obj->rle_data_size = GST_READ_UINT24_BE (payload);
     payload += 3;
 
+    if (end - payload > obj->rle_data_size)
+      return 0;
+
     PGS_DUMP ("%d bytes of RLE data, of %d bytes total.\n",
         (int) (end - payload), obj->rle_data_size);
 
@@ -604,7 +607,8 @@
     PGS_DUMP ("%d bytes of additional RLE data\n", (int) (end - payload));
     /* Check that the data chunk is for this object version, and fits in the 
buffer */
     if (obj->rle_data_ver == obj_ver &&
-        obj->rle_data_used + end - payload <= obj->rle_data_size) {
+        end - payload <= obj->rle_data_size &&
+        obj->rle_data_used <= obj->rle_data_size - (end - payload)) {
 
       memcpy (obj->rle_data + obj->rle_data_used, payload, end - payload);
       obj->rle_data_used += end - payload;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/gst/sdp/gstsdpdemux.c 
new/gst-plugins-bad-1.22.4/gst/sdp/gstsdpdemux.c
--- old/gst-plugins-bad-1.22.3/gst/sdp/gstsdpdemux.c    2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/gst/sdp/gstsdpdemux.c    2023-06-20 
18:42:25.000000000 +0200
@@ -536,6 +536,9 @@
   if (stream == NULL)
     goto unknown_stream;
 
+  if (stream->srcpad)
+    goto unexpected_pad;
+
   stream->ssrc = ssrc;
 
   /* no need for a timeout anymore now */
@@ -576,6 +579,13 @@
   return;
 
   /* ERRORS */
+unexpected_pad:
+  {
+    GST_DEBUG_OBJECT (demux, "ignoring unexpected session pad");
+    GST_SDP_STREAM_UNLOCK (demux);
+    g_free (name);
+    return;
+  }
 unknown_stream:
   {
     GST_DEBUG_OBJECT (demux, "ignoring unknown stream");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/gst/videoparsers/gsth265parse.c 
new/gst-plugins-bad-1.22.4/gst/videoparsers/gsth265parse.c
--- old/gst-plugins-bad-1.22.3/gst/videoparsers/gsth265parse.c  2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/gst/videoparsers/gsth265parse.c  2023-06-20 
18:42:25.000000000 +0200
@@ -2155,7 +2155,7 @@
     }
 
     /* 0/1 is set as the default in the codec parser */
-    if (vui->timing_info_present_flag) {
+    if (vui->timing_info_present_flag && !h265parse->framerate_from_caps) {
       gint fps_num = 0, fps_den = 1;
 
       if (!(sps->fps_num == 0 && sps->fps_den == 1)) {
@@ -2166,15 +2166,19 @@
         fps_num = sps->vui_params.time_scale;
         fps_den = sps->vui_params.num_units_in_tick;
 
-        if (gst_h265_parse_is_field_interlaced (h265parse)
-            && h265parse->parsed_framerate) {
+        if (gst_h265_parse_is_field_interlaced (h265parse)) {
           gint new_fps_num, new_fps_den;
 
-          gst_util_fraction_multiply (fps_num, fps_den, 1, 2, &new_fps_num,
-              &new_fps_den);
-          fps_num = new_fps_num;
-          fps_den = new_fps_den;
-          h265parse->parsed_framerate = FALSE;
+          if (!gst_util_fraction_multiply (fps_num, fps_den, 1, 2, 
&new_fps_num,
+                  &new_fps_den)) {
+            GST_WARNING_OBJECT (h265parse, "Error calculating the new 
framerate"
+                " - integer overflow; setting it to 0/1");
+            fps_num = 0;
+            fps_den = 1;
+          } else {
+            fps_num = new_fps_num;
+            fps_den = new_fps_den;
+          }
         }
       }
 
@@ -2197,7 +2201,6 @@
             h265parse->parsed_par_n, h265parse->parsed_par_d);
         modified = TRUE;
       }
-
     }
 
     if (vui->video_signal_type_present_flag &&
@@ -2251,7 +2254,7 @@
       gst_caps_set_simple (caps, "width", G_TYPE_INT, width,
           "height", G_TYPE_INT, height, NULL);
 
-      h265parse->parsed_framerate = FALSE;
+      h265parse->framerate_from_caps = FALSE;
       /* upstream overrides */
       if (s && gst_structure_has_field (s, "framerate"))
         gst_structure_get_fraction (s, "framerate", &fps_num, &fps_den);
@@ -2269,9 +2272,9 @@
             &h265parse->parsed_fps_d);
         gst_base_parse_set_frame_rate (GST_BASE_PARSE (h265parse),
             fps_num, fps_den, 0, 0);
-        val = sps->profile_tier_level.interlaced_source_flag ? GST_SECOND / 2 :
+        val = gst_h265_parse_is_field_interlaced (h265parse) ? GST_SECOND / 2 :
             GST_SECOND;
-        h265parse->parsed_framerate = TRUE;
+        h265parse->framerate_from_caps = TRUE;
 
         /* If we know the frame duration, and if we are not in one of the zero
          * latency pattern, add one frame of latency */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/gst/videoparsers/gsth265parse.h 
new/gst-plugins-bad-1.22.4/gst/videoparsers/gsth265parse.h
--- old/gst-plugins-bad-1.22.3/gst/videoparsers/gsth265parse.h  2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/gst/videoparsers/gsth265parse.h  2023-06-20 
18:42:25.000000000 +0200
@@ -110,7 +110,7 @@
   gboolean predicted;
   gboolean bidirectional;
   gboolean header;
-  gboolean parsed_framerate;
+  gboolean framerate_from_caps;
   /* AU state */
   gboolean picture_start;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/gst-libs/gst/wayland/gstwlwindow.c 
new/gst-plugins-bad-1.22.4/gst-libs/gst/wayland/gstwlwindow.c
--- old/gst-plugins-bad-1.22.3/gst-libs/gst/wayland/gstwlwindow.c       
2023-05-19 10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/gst-libs/gst/wayland/gstwlwindow.c       
2023-06-20 18:42:25.000000000 +0200
@@ -79,6 +79,7 @@
 enum
 {
   CLOSED,
+  MAP,
   LAST_SIGNAL
 };
 
@@ -155,6 +156,9 @@
 
   signals[CLOSED] = g_signal_new ("closed", G_TYPE_FROM_CLASS (gobject_class),
       G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
+  signals[MAP] = g_signal_new ("map", G_TYPE_FROM_CLASS (gobject_class),
+      G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
+
 }
 
 static void
@@ -509,6 +513,7 @@
       gst_wl_window_update_borders (self);
       wl_surface_commit (priv->area_surface_wrapper);
       priv->is_area_surface_mapped = TRUE;
+      g_signal_emit (self, signals[MAP], 0);
     }
   } else {
     /* clear both video and parent surfaces */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/gst-plugins-bad.doap 
new/gst-plugins-bad-1.22.4/gst-plugins-bad.doap
--- old/gst-plugins-bad-1.22.3/gst-plugins-bad.doap     2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/gst-plugins-bad.doap     2023-06-20 
18:42:25.000000000 +0200
@@ -35,6 +35,16 @@
 
  <release>
   <Version>
+   <revision>1.22.4</revision>
+   <branch>1.22</branch>
+   <name></name>
+   <created>2023-06-20</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.22.4.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.22.3</revision>
    <branch>1.22</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/meson.build new/gst-plugins-bad-1.22.4/meson.build
--- old/gst-plugins-bad-1.22.3/meson.build      2023-05-19 10:23:19.000000000 
+0200
+++ new/gst-plugins-bad-1.22.4/meson.build      2023-06-20 18:42:25.000000000 
+0200
@@ -1,5 +1,5 @@
 project('gst-plugins-bad', 'c', 'cpp',
-  version : '1.22.3',
+  version : '1.22.4',
   meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/sys/applemedia/meson.build 
new/gst-plugins-bad-1.22.4/sys/applemedia/meson.build
--- old/gst-plugins-bad-1.22.3/sys/applemedia/meson.build       2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/sys/applemedia/meson.build       2023-06-20 
18:42:25.000000000 +0200
@@ -15,12 +15,14 @@
     '-Dgst_core_media_buffer_get_type=gst_core_media_buffer_priv_get_type',
     
'-Dgst_core_media_buffer_get_pixel_buffer=gst_core_media_buffer_priv_get_pixel_buffer',
     '-Dgst_core_video_buffer_new=gst_core_video_buffer_priv_new',
-    '-Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type'
+    '-Dgst_core_video_buffer_get_type=gst_core_video_buffer_priv_get_type',
+    '-DGST_USE_UNSTABLE_API'
 ]
 
 applemedia_objc_args = []
 applemedia_option = get_option('applemedia')
 if not ['darwin', 'ios'].contains(host_system) or applemedia_option.disabled()
+  applemedia_found_deps = false
   subdir_done()
 endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/sys/applemedia/vtdec.h 
new/gst-plugins-bad-1.22.4/sys/applemedia/vtdec.h
--- old/gst-plugins-bad-1.22.3/sys/applemedia/vtdec.h   2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/sys/applemedia/vtdec.h   2023-06-20 
18:42:25.000000000 +0200
@@ -30,7 +30,6 @@
 #if defined(APPLEMEDIA_MOLTENVK)
 #include <gst/vulkan/vulkan.h>
 #endif
-#define GST_USE_UNSTABLE_API
 #include <gst/codecparsers/gsth264parser.h>
 
 G_BEGIN_DECLS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/sys/applemedia/vtenc.c 
new/gst-plugins-bad-1.22.4/sys/applemedia/vtenc.c
--- old/gst-plugins-bad-1.22.3/sys/applemedia/vtenc.c   2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/sys/applemedia/vtenc.c   2023-06-20 
18:42:25.000000000 +0200
@@ -86,6 +86,8 @@
 #define GST_VTENC_CODEC_DETAILS_QDATA \
     g_quark_from_static_string ("vtenc-codec-details")
 
+#define CMTIME_TO_GST_CLOCK_TIME(time) time.value / (time.timescale / 
GST_SECOND)
+
 /* define EnableHardwareAcceleratedVideoEncoder in < 10.9 */
 #if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < 
1090
 const CFStringRef
@@ -240,7 +242,7 @@
     if (__builtin_available (macOS 13.0, *)) {
       /* Can't negate a __builtin_available check */
     } else {
-      /* Disable ARGB64/RGBA64 if we're on M1 Pro/Max and macOS < 13.0 
+      /* Disable ARGB64/RGBA64 if we're on M1 Pro/Max and macOS < 13.0
        * due to a bug within VideoToolbox which causes encoding to fail. */
       retval = sysctlbyname ("machdep.cpu.brand_string", &cpu_name, &cpu_len,
           NULL, 0);
@@ -713,6 +715,9 @@
 {
   GstVTEnc *self = GST_VTENC_CAST (enc);
 
+  /* DTS can be negative if b-frames are enabled */
+  gst_video_encoder_set_min_pts (enc, GST_SECOND * 60 * 60 * 1000);
+
   self->cur_outframes = g_async_queue_new ();
 
   return TRUE;
@@ -739,8 +744,8 @@
     gst_video_codec_state_unref (self->input_state);
   self->input_state = NULL;
 
-  self->negotiated_width = self->negotiated_height = 0;
-  self->negotiated_fps_n = self->negotiated_fps_d = 0;
+  self->video_info.width = self->video_info.height = 0;
+  self->video_info.fps_n = self->video_info.fps_d = 0;
 
   gst_vtenc_clear_cached_caps_downstream (self);
 
@@ -750,13 +755,12 @@
   return TRUE;
 }
 
-static CFStringRef
-gst_vtenc_h264_profile_level_key (GstVTEnc * self, const gchar * profile,
+static gboolean
+gst_vtenc_h264_parse_profile_level_key (GstVTEnc * self, const gchar * profile,
     const gchar * level_arg)
 {
   char level[64];
   gchar *key = NULL;
-  CFStringRef ret = NULL;
 
   if (profile == NULL)
     profile = "main";
@@ -767,13 +771,16 @@
   if (!strcmp (profile, "constrained-baseline") ||
       !strcmp (profile, "baseline")) {
     profile = "Baseline";
+    self->h264_profile = GST_H264_PROFILE_BASELINE;
   } else if (g_str_has_prefix (profile, "high")) {
     profile = "High";
+    self->h264_profile = GST_H264_PROFILE_HIGH;
   } else if (!strcmp (profile, "main")) {
     profile = "Main";
+    self->h264_profile = GST_H264_PROFILE_MAIN;
   } else {
     GST_ERROR_OBJECT (self, "invalid profile: %s", profile);
-    return ret;
+    return FALSE;
   }
 
   if (strlen (level) == 1) {
@@ -784,22 +791,21 @@
   }
 
   key = g_strdup_printf ("H264_%s_%s", profile, level);
-  ret = CFStringCreateWithBytes (NULL, (const guint8 *) key, strlen (key),
+  self->profile_level =
+      CFStringCreateWithBytes (NULL, (const guint8 *) key, strlen (key),
       kCFStringEncodingASCII, 0);
-
   GST_INFO_OBJECT (self, "negotiated profile and level %s", key);
 
   g_free (key);
 
-  return ret;
+  return TRUE;
 }
 
-static CFStringRef
-gst_vtenc_hevc_profile_level_key (GstVTEnc * self, const gchar * profile,
+static gboolean
+gst_vtenc_hevc_parse_profile_level_key (GstVTEnc * self, const gchar * profile,
     const gchar * level_arg)
 {
   gchar *key = NULL;
-  CFStringRef ret = NULL;
 
   if (profile == NULL || !strcmp (profile, "main"))
     profile = "Main";
@@ -811,18 +817,18 @@
     profile = "Main42210";
   else {
     GST_ERROR_OBJECT (self, "invalid profile: %s", profile);
-    return ret;
+    return FALSE;
   }
 
   /* VT does not support specific levels for HEVC */
   key = g_strdup_printf ("HEVC_%s_AutoLevel", profile);
-  ret = CFStringCreateWithBytes (NULL, (const guint8 *) key, strlen (key),
+  self->profile_level =
+      CFStringCreateWithBytes (NULL, (const guint8 *) key, strlen (key),
       kCFStringEncodingASCII, 0);
-
   GST_INFO_OBJECT (self, "negotiated profile and level %s", key);
 
   g_free (key);
-  return ret;
+  return TRUE;
 }
 
 static gboolean
@@ -834,20 +840,11 @@
   if (self->profile_level)
     CFRelease (self->profile_level);
 
-  if (self->specific_format_id == kCMVideoCodecType_HEVC)
-    self->profile_level =
-        gst_vtenc_hevc_profile_level_key (self, profile, level);
-  else
-    self->profile_level =
-        gst_vtenc_h264_profile_level_key (self, profile, level);
-
-  if (self->profile_level == NULL) {
-    GST_ERROR_OBJECT (self, "unsupported profile '%s' or level '%s'",
-        profile, level);
-    return FALSE;
+  if (self->specific_format_id == kCMVideoCodecType_HEVC) {
+    return gst_vtenc_hevc_parse_profile_level_key (self, profile, level);
+  } else {
+    return gst_vtenc_h264_parse_profile_level_key (self, profile, level);
   }
-
-  return TRUE;
 }
 
 static gboolean
@@ -931,10 +928,6 @@
     gst_video_codec_state_unref (self->input_state);
   self->input_state = gst_video_codec_state_ref (state);
 
-  self->negotiated_width = state->info.width;
-  self->negotiated_height = state->info.height;
-  self->negotiated_fps_n = state->info.fps_n;
-  self->negotiated_fps_d = state->info.fps_d;
   self->video_info = state->info;
 
   GST_OBJECT_LOCK (self);
@@ -954,7 +947,7 @@
 static gboolean
 gst_vtenc_is_negotiated (GstVTEnc * self)
 {
-  return self->negotiated_width != 0;
+  return self->video_info.width != 0;
 }
 
 /*
@@ -987,10 +980,10 @@
   GstStructure *s;
   GstVideoCodecState *state;
 
-  if (self->caps_width == self->negotiated_width &&
-      self->caps_height == self->negotiated_height &&
-      self->caps_fps_n == self->negotiated_fps_n &&
-      self->caps_fps_d == self->negotiated_fps_d) {
+  if (self->caps_width == self->video_info.width &&
+      self->caps_height == self->video_info.height &&
+      self->caps_fps_n == self->video_info.fps_n &&
+      self->caps_fps_d == self->video_info.fps_d) {
     return TRUE;
   }
 
@@ -998,10 +991,10 @@
   caps = gst_caps_make_writable (caps);
   s = gst_caps_get_structure (caps, 0);
   gst_structure_set (s,
-      "width", G_TYPE_INT, self->negotiated_width,
-      "height", G_TYPE_INT, self->negotiated_height,
+      "width", G_TYPE_INT, self->video_info.width,
+      "height", G_TYPE_INT, self->video_info.height,
       "framerate", GST_TYPE_FRACTION,
-      self->negotiated_fps_n, self->negotiated_fps_d, NULL);
+      self->video_info.fps_n, self->video_info.fps_d, NULL);
 
   switch (self->details->format_id) {
     case kCMVideoCodecType_H264:
@@ -1068,10 +1061,10 @@
   gst_video_codec_state_unref (state);
   result = gst_video_encoder_negotiate (GST_VIDEO_ENCODER_CAST (self));
 
-  self->caps_width = self->negotiated_width;
-  self->caps_height = self->negotiated_height;
-  self->caps_fps_n = self->negotiated_fps_n;
-  self->caps_fps_d = self->negotiated_fps_d;
+  self->caps_width = self->video_info.width;
+  self->caps_height = self->video_info.height;
+  self->caps_fps_n = self->video_info.fps_n;
+  self->caps_fps_d = self->video_info.fps_d;
 
   return result;
 }
@@ -1225,6 +1218,43 @@
   }
 }
 
+
+static gboolean
+gst_vtenc_compute_dts_offset (GstVTEnc * self, gint fps_n, gint fps_d)
+{
+  gint num_offset_frames;
+
+  // kVTCompressionPropertyKey_AllowFrameReordering enables B-Frames
+  if (!self->allow_frame_reordering ||
+      (self->specific_format_id == kCMVideoCodecType_H264
+          && self->h264_profile == GST_H264_PROFILE_BASELINE)) {
+    num_offset_frames = 0;
+  } else {
+    if (self->specific_format_id == kCMVideoCodecType_H264) {
+      // H264 encoder always sets 2 max_num_ref_frames
+      num_offset_frames = 1;
+    } else {
+      // HEVC encoder uses B-pyramid
+      num_offset_frames = 2;
+    }
+  }
+
+  if (fps_d == 0 && num_offset_frames != 0) {
+    GST_ERROR_OBJECT (self,
+        "Variable framerate is not supported with B-Frames");
+    return FALSE;
+  }
+
+  self->dts_offset =
+      gst_util_uint64_scale (num_offset_frames * GST_SECOND,
+      self->video_info.fps_d, self->video_info.fps_n);
+
+  GST_DEBUG_OBJECT (self, "DTS Offset:%" GST_TIME_FORMAT,
+      GST_TIME_ARGS (self->dts_offset));
+
+  return TRUE;
+}
+
 static VTCompressionSessionRef
 gst_vtenc_create_session (GstVTEnc * self)
 {
@@ -1262,20 +1292,27 @@
     pb_attrs = CFDictionaryCreateMutable (NULL, 0,
         &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
     gst_vtutil_dict_set_i32 (pb_attrs, kCVPixelBufferWidthKey,
-        self->negotiated_width);
+        self->video_info.width);
     gst_vtutil_dict_set_i32 (pb_attrs, kCVPixelBufferHeightKey,
-        self->negotiated_height);
+        self->video_info.height);
   }
 
   /* This was set in gst_vtenc_negotiate_specific_format_details() */
   g_assert_cmpint (self->specific_format_id, !=, 0);
 
+  if (self->profile_level) {
+    if (!gst_vtenc_compute_dts_offset (self, self->video_info.fps_d,
+            self->video_info.fps_n)) {
+      goto beach;
+    }
+  }
+
   status = VTCompressionSessionCreate (NULL,
-      self->negotiated_width, self->negotiated_height,
+      self->video_info.width, self->video_info.height,
       self->specific_format_id, encoder_spec, pb_attrs, NULL,
       gst_vtenc_enqueue_buffer, self, &session);
   GST_INFO_OBJECT (self, "VTCompressionSessionCreate for %d x %d => %d",
-      self->negotiated_width, self->negotiated_height, (int) status);
+      self->video_info.width, self->video_info.height, (int) status);
   if (status != noErr) {
     GST_ERROR_OBJECT (self, "VTCompressionSessionCreate() returned: %d",
         (int) status);
@@ -1284,7 +1321,7 @@
 
   if (self->profile_level) {
     gst_vtenc_session_configure_expected_framerate (self, session,
-        (gdouble) self->negotiated_fps_n / (gdouble) self->negotiated_fps_d);
+        (gdouble) self->video_info.fps_n / (gdouble) self->video_info.fps_d);
 
     /*
      * 
https://developer.apple.com/documentation/videotoolbox/kvtcompressionpropertykey_profilelevel
@@ -1586,6 +1623,18 @@
   CFRelease (value);
 }
 
+static void
+gst_vtenc_update_timestamps (GstVTEnc * self, GstVideoCodecFrame * frame,
+    CMSampleBufferRef sample_buf)
+{
+  CMTime pts = CMSampleBufferGetOutputPresentationTimeStamp (sample_buf);
+  frame->pts = CMTIME_TO_GST_CLOCK_TIME (pts);
+  CMTime dts = CMSampleBufferGetOutputDecodeTimeStamp (sample_buf);
+  if (CMTIME_IS_VALID (dts)) {
+    frame->dts = CMTIME_TO_GST_CLOCK_TIME (dts) - self->dts_offset;
+  }
+}
+
 static GstFlowReturn
 gst_vtenc_encode_frame (GstVTEnc * self, GstVideoCodecFrame * frame)
 {
@@ -1670,8 +1719,8 @@
     }
 
     cv_ret =
-        CVPixelBufferCreate (NULL, self->negotiated_width,
-        self->negotiated_height, pixel_format_type, NULL, &pbuf);
+        CVPixelBufferCreate (NULL, self->video_info.width,
+        self->video_info.height, pixel_format_type, NULL, &pbuf);
 
     if (cv_ret != kCVReturnSuccess) {
       GST_ERROR_OBJECT (self, "CVPixelBufferCreate failed: %i", cv_ret);
@@ -1765,7 +1814,7 @@
       }
 
       cv_ret = CVPixelBufferCreateWithPlanarBytes (NULL,
-          self->negotiated_width, self->negotiated_height,
+          self->video_info.width, self->video_info.height,
           pixel_format_type,
           frame,
           GST_VIDEO_FRAME_SIZE (&vframe->videoframe),
@@ -1886,6 +1935,8 @@
    * to enable the use of the video meta API on the core media buffer */
   frame->output_buffer = gst_core_media_buffer_new (sampleBuffer, FALSE, NULL);
 
+  gst_vtenc_update_timestamps (self, frame, sampleBuffer);
+
 beach:
   /* needed anyway so the frame will be released */
   if (frame)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/sys/applemedia/vtenc.h 
new/gst-plugins-bad-1.22.4/sys/applemedia/vtenc.h
--- old/gst-plugins-bad-1.22.3/sys/applemedia/vtenc.h   2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/sys/applemedia/vtenc.h   2023-06-20 
18:42:25.000000000 +0200
@@ -21,6 +21,7 @@
 #define __GST_VTENC_H__
 
 #include <gst/gst.h>
+#include <gst/codecparsers/gsth264parser.h>
 #include <gst/video/video.h>
 #include <VideoToolbox/VideoToolbox.h>
 
@@ -60,6 +61,7 @@
 
   CMVideoCodecType specific_format_id;
   CFStringRef profile_level;
+  GstH264Profile h264_profile;
   guint bitrate;
   gboolean allow_frame_reordering;
   gboolean realtime;
@@ -72,8 +74,6 @@
   gboolean dump_properties;
   gboolean dump_attributes;
 
-  gint negotiated_width, negotiated_height;
-  gint negotiated_fps_n, negotiated_fps_d;
   gint caps_width, caps_height;
   gint caps_fps_n, caps_fps_d;
   gboolean have_field_order;
@@ -81,6 +81,7 @@
   GstVideoInfo video_info;
   VTCompressionSessionRef session;
   CFDictionaryRef keyframe_props;
+  GstClockTime dts_offset;
 
   GAsyncQueue * cur_outframes;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/sys/d3d11/gstd3d11videosink.cpp 
new/gst-plugins-bad-1.22.4/sys/d3d11/gstd3d11videosink.cpp
--- old/gst-plugins-bad-1.22.3/sys/d3d11/gstd3d11videosink.cpp  2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/sys/d3d11/gstd3d11videosink.cpp  2023-06-20 
18:42:25.000000000 +0200
@@ -1440,8 +1440,6 @@
     ret = GST_FLOW_ERROR;
   }
 
-  gst_clear_buffer (&self->prepared_buffer);
-
   return ret;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/sys/d3dvideosink/d3dvideosink.c 
new/gst-plugins-bad-1.22.4/sys/d3dvideosink/d3dvideosink.c
--- old/gst-plugins-bad-1.22.3/sys/d3dvideosink/d3dvideosink.c  2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/sys/d3dvideosink/d3dvideosink.c  2023-06-20 
18:42:25.000000000 +0200
@@ -634,6 +634,7 @@
       gst_element_post_message (GST_ELEMENT_CAST (sink),
           gst_navigation_message_new_event (GST_OBJECT_CAST (sink), event));
     }
+    gst_event_unref (event);
     gst_object_unref (pad);
   }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/sys/decklink/gstdecklink.h 
new/gst-plugins-bad-1.22.4/sys/decklink/gstdecklink.h
--- old/gst-plugins-bad-1.22.3/sys/decklink/gstdecklink.h       2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/sys/decklink/gstdecklink.h       2023-06-20 
18:42:25.000000000 +0200
@@ -28,33 +28,58 @@
 
 #include <stdint.h>
 
-#ifdef G_OS_UNIX
-#include "linux/DeckLinkAPI.h"
-#endif
-
 #ifdef G_OS_WIN32
 #include "win/DeckLinkAPI.h"
 
 #include <stdio.h>
-#include <comutil.h>
 
 #define bool BOOL
 #define COMSTR_T BSTR
-/* MinGW does not have comsuppw.lib, so no _com_util::ConvertBSTRToString */
-# ifdef __MINGW32__
-#  define CONVERT_COM_STRING(s) G_STMT_START { BSTR _s = (BSTR)s; s = (char*) 
malloc(100); wcstombs(s, _s, 100); ::SysFreeString(_s); } G_STMT_END
-#  define FREE_COM_STRING(s) free(s);
-#  define CONVERT_TO_COM_STRING(s) G_STMT_START { char * _s = (char *)s; s = 
(BSTR) malloc(100); mbstowcs(s, _s, 100); g_free(_s); } G_STMT_END
-# else
-#  define CONVERT_COM_STRING(s) G_STMT_START { BSTR _s = (BSTR)s; s = 
_com_util::ConvertBSTRToString(_s); ::SysFreeString(_s); } G_STMT_END
-#  define FREE_COM_STRING(s) G_STMT_START { delete[] s; } G_STMT_END
-#  define CONVERT_TO_COM_STRING(s) G_STMT_START { char * _s = (char *)s; s = 
_com_util::ConvertStringToBSTR(_s); g_free(_s); } G_STMT_END
-# endif /* __MINGW32__ */
-#else
+#define CONVERT_COM_STRING(s) G_STMT_START { \
+  BSTR _s = (BSTR)s; \
+  int _s_length = ::SysStringLen(_s); \
+  int _length = ::WideCharToMultiByte(CP_ACP, 0, (wchar_t*)_s, _s_length, 
NULL, 0, NULL, NULL); \
+  s = (char *) malloc(_length); \
+  ::WideCharToMultiByte(CP_ACP, 0, (wchar_t*)_s, _s_length, s, _length, NULL, 
NULL); \
+  ::SysFreeString(_s); \
+} G_STMT_END
+#define FREE_COM_STRING(s) free(s);
+#define CONVERT_TO_COM_STRING(s) G_STMT_START { \
+  char * _s = (char *)s; \
+  int _s_length = strlen((char*)_s); \
+  int _length = ::MultiByteToWideChar(CP_ACP, 0, (char*)_s, _s_length, NULL, 
0); \
+  s = ::SysAllocStringLen(NULL, _length); \
+  ::MultiByteToWideChar(CP_ACP, 0, (char*)_s, _s_length, s, _length); \
+  g_free(_s); \
+} G_STMT_END
+#elif defined(__APPLE__)
+#include "osx/DeckLinkAPI.h"
+
+#define COMSTR_T CFStringRef
+#define CONVERT_COM_STRING(s) G_STMT_START { \
+  CFStringRef _s = (CFStringRef)s; \
+  CFIndex _length; \
+  CFStringGetBytes(_s, CFRangeMake(0, CFStringGetLength(_s)), 
kCFStringEncodingUTF8, 0, FALSE, NULL, 0, &_length); \
+  _length += 1; \
+  s = (char *) malloc(_length); \
+  CFStringGetCString(_s, s, _length, kCFStringEncodingUTF8); \
+  CFRelease(_s); \
+} G_STMT_END
+#define FREE_COM_STRING(s) free(s);
+#define CONVERT_TO_COM_STRING(s) G_STMT_START { \
+  char * _s = (char *)s; \
+  s = CFStringCreateWithCString(kCFAllocatorDefault, _s, 
kCFStringEncodingUTF8); \
+  g_free(_s); \
+} G_STMT_END
+#define WINAPI
+#else /* Linux */
+#include "linux/DeckLinkAPI.h"
+
 #define COMSTR_T const char*
 #define CONVERT_COM_STRING(s)
 #define CONVERT_TO_COM_STRING(s)
-#define FREE_COM_STRING(s)
+/* While this is a const char*, the string still has to be freed */
+#define FREE_COM_STRING(s) free(s);
 #define WINAPI
 #endif /* G_OS_WIN32 */
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/sys/kms/gstkmssink.c 
new/gst-plugins-bad-1.22.4/sys/kms/gstkmssink.c
--- old/gst-plugins-bad-1.22.3/sys/kms/gstkmssink.c     2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/sys/kms/gstkmssink.c     2023-06-20 
18:42:25.000000000 +0200
@@ -481,8 +481,8 @@
 kms_open (gchar ** driver)
 {
   static const char *drivers[] = { "i915", "radeon", "nouveau", "vmwgfx",
-    "exynos", "amdgpu", "imx-drm", "rockchip", "atmel-hlcdc", "msm",
-    "xlnx", "vc4", "meson", "sun4i-drm", "mxsfb-drm", "tegra",
+    "exynos", "amdgpu", "imx-drm", "imx-lcdif", "rockchip", "atmel-hlcdc",
+    "msm", "xlnx", "vc4", "meson", "stm", "sun4i-drm", "mxsfb-drm", "tegra",
     "xilinx_drm",               /* DEPRECATED. Replaced by xlnx */
   };
   int i, fd = -1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/sys/va/gstvah264enc.c 
new/gst-plugins-bad-1.22.4/sys/va/gstvah264enc.c
--- old/gst-plugins-bad-1.22.3/sys/va/gstvah264enc.c    2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/sys/va/gstvah264enc.c    2023-06-20 
18:42:25.000000000 +0200
@@ -3412,9 +3412,30 @@
     case PROP_CC:
       g_value_set_boolean (value, self->prop.cc);
       break;
-    case PROP_MBBRC:
-      g_value_set_enum (value, self->prop.mbbrc);
+    case PROP_MBBRC:{
+      GstVaFeature mbbrc = GST_VA_FEATURE_AUTO;
+      /* Macroblock-level rate control.
+       * 0: use default,
+       * 1: always enable,
+       * 2: always disable,
+       * other: reserved. */
+      switch (self->prop.mbbrc) {
+        case 2:
+          mbbrc = GST_VA_FEATURE_DISABLED;
+          break;
+        case 1:
+          mbbrc = GST_VA_FEATURE_ENABLED;
+          break;
+        case 0:
+          mbbrc = GST_VA_FEATURE_AUTO;
+          break;
+        default:
+          g_assert_not_reached ();
+      }
+
+      g_value_set_enum (value, mbbrc);
       break;
+    }
     case PROP_BITRATE:
       g_value_set_uint (value, self->prop.bitrate);
       break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/sys/va/gstvah265enc.c 
new/gst-plugins-bad-1.22.4/sys/va/gstvah265enc.c
--- old/gst-plugins-bad-1.22.3/sys/va/gstvah265enc.c    2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/sys/va/gstvah265enc.c    2023-06-20 
18:42:25.000000000 +0200
@@ -4874,9 +4874,30 @@
     case PROP_AUD:
       g_value_set_boolean (value, self->prop.aud);
       break;
-    case PROP_MBBRC:
-      g_value_set_enum (value, self->prop.mbbrc);
+    case PROP_MBBRC:{
+      GstVaFeature mbbrc = GST_VA_FEATURE_AUTO;
+      /* Macroblock-level rate control.
+       * 0: use default,
+       * 1: always enable,
+       * 2: always disable,
+       * other: reserved. */
+      switch (self->prop.mbbrc) {
+        case 2:
+          mbbrc = GST_VA_FEATURE_DISABLED;
+          break;
+        case 1:
+          mbbrc = GST_VA_FEATURE_ENABLED;
+          break;
+        case 0:
+          mbbrc = GST_VA_FEATURE_AUTO;
+          break;
+        default:
+          g_assert_not_reached ();
+      }
+
+      g_value_set_enum (value, mbbrc);
       break;
+    }
     case PROP_BITRATE:
       g_value_set_uint (value, self->prop.bitrate);
       break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/tests/validate/meson.build 
new/gst-plugins-bad-1.22.4/tests/validate/meson.build
--- old/gst-plugins-bad-1.22.3/tests/validate/meson.build       2023-05-19 
10:23:19.000000000 +0200
+++ new/gst-plugins-bad-1.22.4/tests/validate/meson.build       2023-06-20 
18:42:25.000000000 +0200
@@ -7,6 +7,10 @@
     {'path': 'opencv/cvtracker'},
     {'path': 'testsrcbin/caps_spec'},
     {'path': 'wpe/load_bytes_first', 'skip': not building_wpe},
+    {'path': 'vtenc/vtenc_h264', 'skip': not applemedia_found_deps},
+    {'path': 'vtenc/vtenc_h264_b_frames', 'skip': not applemedia_found_deps},
+    {'path': 'vtenc/vtenc_h265', 'skip': not applemedia_found_deps},
+    {'path': 'vtenc/vtenc_h265_b_frames', 'skip': not applemedia_found_deps},
 ]
 
 env = environment()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h264/flow-expectations/log-enc-src-expected
 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h264/flow-expectations/log-enc-src-expected
--- 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h264/flow-expectations/log-enc-src-expected
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h264/flow-expectations/log-enc-src-expected
   2023-06-20 18:42:25.000000000 +0200
@@ -0,0 +1,9 @@
+event stream-start: GstEventStreamStart, 
flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;
+event caps: video/x-h264, alignment=(string)au, chroma-site=(string)jpeg, 
codec_data=(buffer)014d000dffe1000d274d000dab40a0fd350601060201000428ee3c80, 
colorimetry=(string)bt601, framerate=(fraction)25/1, height=(int)240, 
interlace-mode=(string)progressive, level=(string)1.3, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono,
 multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, 
profile=(string)main, stream-format=(string)avc, width=(int)320;
+event segment: format=TIME, start=1000:00:00.000000000, 
offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, 
base=0:00:00.000000000, position=1000:00:00.000000000
+buffer: dts=1000:00:00.000000000, pts=1000:00:00.000000000, 
dur=0:00:00.040000000, flags=discont marker tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.040000000, pts=1000:00:00.040000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.080000000, pts=1000:00:00.080000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.120000000, pts=1000:00:00.120000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.160000000, pts=1000:00:00.160000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+event eos: (no structure)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h264.validatetest 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h264.validatetest
--- old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h264.validatetest     
1970-01-01 01:00:00.000000000 +0100
+++ new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h264.validatetest     
2023-06-20 18:42:25.000000000 +0200
@@ -0,0 +1,7 @@
+meta,
+    args = {
+        "videotestsrc num-buffers=5 ! 
video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc 
allow-frame-reordering=false ! fakesink",
+    },
+    configs = {
+       "$(validateflow), pad=enc:src, record-buffers=true",
+    }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h264_b_frames/flow-expectations/log-enc-src-expected
 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h264_b_frames/flow-expectations/log-enc-src-expected
--- 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h264_b_frames/flow-expectations/log-enc-src-expected
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h264_b_frames/flow-expectations/log-enc-src-expected
  2023-06-20 18:42:25.000000000 +0200
@@ -0,0 +1,9 @@
+event stream-start: GstEventStreamStart, 
flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;
+event caps: video/x-h264, alignment=(string)au, chroma-site=(string)jpeg, 
codec_data=(buffer)014d000dffe1000d274d000dab60a0fd350601060201000428ee3c80, 
colorimetry=(string)bt601, framerate=(fraction)25/1, height=(int)240, 
interlace-mode=(string)progressive, level=(string)1.3, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono,
 multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, 
profile=(string)main, stream-format=(string)avc, width=(int)320;
+event segment: format=TIME, start=1000:00:00.000000000, 
offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, 
base=0:00:00.000000000, position=1000:00:00.000000000
+buffer: dts=999:59:59.960000000, pts=1000:00:00.000000000, 
dur=0:00:00.040000000, flags=discont marker tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.000000000, pts=1000:00:00.080000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.040000000, pts=1000:00:00.040000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.080000000, pts=1000:00:00.160000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.120000000, pts=1000:00:00.120000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+event eos: (no structure)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h264_b_frames.validatetest
 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h264_b_frames.validatetest
--- 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h264_b_frames.validatetest
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h264_b_frames.validatetest
    2023-06-20 18:42:25.000000000 +0200
@@ -0,0 +1,7 @@
+meta,
+    args = {
+        "videotestsrc num-buffers=5 ! 
video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc 
allow-frame-reordering=true ! fakesink",
+    },
+    configs = {
+       "$(validateflow), pad=enc:src, record-buffers=true",
+    }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h265/flow-expectations/log-enc-src-expected
 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h265/flow-expectations/log-enc-src-expected
--- 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h265/flow-expectations/log-enc-src-expected
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h265/flow-expectations/log-enc-src-expected
   2023-06-20 18:42:25.000000000 +0200
@@ -0,0 +1,9 @@
+event stream-start: GstEventStreamStart, 
flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;
+event caps: video/x-h264, alignment=(string)au, chroma-site=(string)jpeg, 
codec_data=(buffer)014d000dffe1000d274d000dab40a0fd350601060201000428ee3c80, 
colorimetry=(string)bt601, framerate=(fraction)25/1, height=(int)240, 
interlace-mode=(string)progressive, level=(string)1.3, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono,
 multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, 
profile=(string)main, stream-format=(string)avc, width=(int)320;
+event segment: format=TIME, start=1000:00:00.000000000, 
offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, 
base=0:00:00.000000000, position=1000:00:00.000000000
+buffer: dts=1000:00:00.000000000, pts=1000:00:00.000000000, 
dur=0:00:00.040000000, flags=discont marker tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.040000000, pts=1000:00:00.040000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.080000000, pts=1000:00:00.080000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.120000000, pts=1000:00:00.120000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.160000000, pts=1000:00:00.160000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+event eos: (no structure)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h265.validatetest 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h265.validatetest
--- old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h265.validatetest     
1970-01-01 01:00:00.000000000 +0100
+++ new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h265.validatetest     
2023-06-20 18:42:25.000000000 +0200
@@ -0,0 +1,7 @@
+meta,
+    args = {
+        "videotestsrc num-buffers=5 ! 
video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc 
allow-frame-reordering=false ! fakesink",
+    },
+    configs = {
+       "$(validateflow), pad=enc:src, record-buffers=true",
+    }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h265_b_frames/flow-expectations/log-enc-src-expected
 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h265_b_frames/flow-expectations/log-enc-src-expected
--- 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h265_b_frames/flow-expectations/log-enc-src-expected
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h265_b_frames/flow-expectations/log-enc-src-expected
  2023-06-20 18:42:25.000000000 +0200
@@ -0,0 +1,9 @@
+event stream-start: GstEventStreamStart, 
flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;
+event caps: video/x-h264, alignment=(string)au, chroma-site=(string)jpeg, 
codec_data=(buffer)014d000dffe1000d274d000dab60a0fd350601060201000428ee3c80, 
colorimetry=(string)bt601, framerate=(fraction)25/1, height=(int)240, 
interlace-mode=(string)progressive, level=(string)1.3, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono,
 multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, 
profile=(string)main, stream-format=(string)avc, width=(int)320;
+event segment: format=TIME, start=1000:00:00.000000000, 
offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, 
base=0:00:00.000000000, position=1000:00:00.000000000
+buffer: dts=999:59:59.960000000, pts=1000:00:00.000000000, 
dur=0:00:00.040000000, flags=discont marker tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.000000000, pts=1000:00:00.080000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.040000000, pts=1000:00:00.040000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.080000000, pts=1000:00:00.160000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+buffer: dts=1000:00:00.120000000, pts=1000:00:00.120000000, 
dur=0:00:00.040000000, flags=marker delta-unit tag-memory, meta=GstCoreMediaMeta
+event eos: (no structure)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h265_b_frames.validatetest
 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h265_b_frames.validatetest
--- 
old/gst-plugins-bad-1.22.3/tests/validate/vtenc/vtenc_h265_b_frames.validatetest
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/gst-plugins-bad-1.22.4/tests/validate/vtenc/vtenc_h265_b_frames.validatetest
    2023-06-20 18:42:25.000000000 +0200
@@ -0,0 +1,7 @@
+meta,
+    args = {
+        "videotestsrc num-buffers=5 ! 
video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc 
allow-frame-reordering=true ! fakesink",
+    },
+    configs = {
+       "$(validateflow), pad=enc:src, record-buffers=true",
+    }

++++++ reduce-required-meson.patch ++++++
--- /var/tmp/diff_new_pack.6IybEp/_old  2023-07-01 23:17:31.782072719 +0200
+++ /var/tmp/diff_new_pack.6IybEp/_new  2023-07-01 23:17:31.786072744 +0200
@@ -1,10 +1,10 @@
-Index: gst-plugins-bad-1.22.3/meson.build
+Index: gst-plugins-bad-1.22.4/meson.build
 ===================================================================
---- gst-plugins-bad-1.22.3.orig/meson.build
-+++ gst-plugins-bad-1.22.3/meson.build
+--- gst-plugins-bad-1.22.4.orig/meson.build
++++ gst-plugins-bad-1.22.4/meson.build
 @@ -1,6 +1,6 @@
  project('gst-plugins-bad', 'c', 'cpp',
-   version : '1.22.3',
+   version : '1.22.4',
 -  meson_version : '>= 0.62',
 +  meson_version : '>= 0.61',
    default_options : [ 'warning_level=1',

Reply via email to