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 <[email protected]>
+
+- 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 <[email protected]>
+
+ * NEWS:
+ * RELEASE:
+ * gst-plugins-bad.doap:
+ * meson.build:
+ Release 1.22.4
+
+2023-06-13 14:25:04 +0300 Sebastian Dröge <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4754>
+
+2023-05-25 17:02:24 +0200 Jan Alexander Steffens (heftig)
<[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
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',