Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gstreamer-plugins-base for openSUSE:Factory checked in at 2022-12-25 15:14:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-base (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-base"
Sun Dec 25 15:14:22 2022 rev:88 rq:1045096 version:1.20.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/gstreamer-plugins-base/gstreamer-plugins-base.changes 2022-10-25 11:18:46.025971702 +0200
+++ /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1563/gstreamer-plugins-base.changes 2022-12-25 15:14:29.153248429 +0100
@@ -1,0 +2,27 @@
+Fri Dec 23 18:59:40 UTC 2022 - Bj��rn Lie
+
+- Update to version 1.20.5:
+ + audioconvert, audioresample, audiofilter: fix divide by 0 for
+ input buffer without caps
+ + cdparanoia: Ignore compiler warning coming from the cdparanoia
+ header
+ + oggdemux, parsebin: More leak fixes
+ + opengl:
+ - Fix automatic dispmanx detection for rpi4
+ - Fix usage of eglCreate/DestroyImage
+ - Fix static linking on macOS
+ + Bump core requirement in 1.20 branch to 1.20.4
+ + oggdemux: Don't leak incoming EOS event
+ + opusdec: Various channel-related fixes
+ + subparse: Fix non-closed tag handling.
+ + textrender:
+ - Don't blindly forward all events and don't blindly forward
+ all events
+ - Negotiate caps on a GAP event if none were negotiated yet
+ + timeoverlay: fix pad leak
+ + videodecoder: Only post latency message if it changed
+ + videoscale: buffer meta handling fixes (NULL-terminate array of
+ valid meta tags)
+ + videosink: Don't return unknown end-time from get_times()
+
+-------------------------------------------------------------------
Old:
----
gst-plugins-base-1.20.4.tar.xz
New:
----
gst-plugins-base-1.20.5.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-plugins-base.spec ++++++
--- /var/tmp/diff_new_pack.NuSVTy/_old 2022-12-25 15:14:29.653251259 +0100
+++ /var/tmp/diff_new_pack.NuSVTy/_new 2022-12-25 15:14:29.657251281 +0100
@@ -20,7 +20,7 @@
%define gst_branch 1.0
%define gstreamer_req_version %(echo %{version} | sed -e "s/+.*//")
Name: gstreamer-plugins-base
-Version: 1.20.4
+Version: 1.20.5
Release: 0
Summary: GStreamer Streaming-Media Framework Plug-Ins
License: GPL-2.0-or-later AND LGPL-2.1-or-later
++++++ gst-plugins-base-1.20.4.tar.xz -> gst-plugins-base-1.20.5.tar.xz ++++++
++++ 1701 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-base-1.20.4/ChangeLog new/gst-plugins-base-1.20.5/ChangeLog
--- old/gst-plugins-base-1.20.4/ChangeLog 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ChangeLog 2022-12-20 00:34:46.000000000 +0100
@@ -1,7 +1,243 @@
+=== release 1.20.5 ===
+
+2022-12-19 23:34:42 +0000 Tim-Philipp M��ller
+
+ * NEWS:
+ * RELEASE:
+ * gst-plugins-base.doap:
+ * meson.build:
+ Release 1.20.5
+
+2022-12-19 23:34:34 +0000 Tim-Philipp M��ller
+
+ * ChangeLog:
+ Update ChangeLogs for 1.20.5
+
+2022-12-19 15:22:15 +0100 Philipp Zabel
+
+ * gst/videoscale/gstvideoscale.c:
+ videoscale: fix valid_tags NULL-terminated array of strings
+ The valid_tags array of strings must be NULL-terminated,
+ as it is passed to the g_strv_contains() function.
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3604
+
+2022-11-17 15:41:35 +0100 Edward Hervey
+
+ * gst/playback/gstdecodebin2.c:
+ decodebin2: Minor debug fix for decodepad
+ decodedad might have their name changed when exposing, causing a race when
+ trying to get their name without taking a lock. Just use GST_PTR_POINTER in
+ debug statements instead
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3597
+
+2022-11-21 15:12:26 +0100 Edward Hervey
+
+ * ext/ogg/gstoggdemux.c:
+ oggdemux: Don't leak pending seek event
+ Make sure any pending seek event is released when going back down to READY.
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3578
+
+2022-11-21 15:10:35 +0100 Edward Hervey
+
+ * gst/playback/gstparsebin.c:
+ parsebin: Don't leak parsepad list on shutdown
+ Free it as it is down in other cases
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3578
+
+2022-11-30 20:48:28 +0200 Vivia Nikolaidou
+
+ * ext/opus/gstopusdec.c:
+ opusdec: Use proper guint/guint8 type conversion
+ Do not cast, that might yield wrong results.
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3576
+
+2022-11-30 20:47:11 +0200 Vivia Nikolaidou
+
+ * ext/opus/gstopusdec.c:
+ opusdec: Negotiate default to 2 channels
+ In that place, dec->n_channels can still theoretically be 0. Default to
+ 2 in that case.
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3576
+
+2022-12-11 17:36:53 +0000 Tim-Philipp M��ller
+
+ * ext/pango/gsttimeoverlay.c:
+ timeoverlay: fix pad leak
+ Spotted by Jiri Uncovsky.
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3559
+
+2022-12-07 14:49:05 +0200 Sebastian Dr��ge
+
+ * ext/pango/gsttextrender.c:
+ textrender: Negotiate caps on a GAP event if none were negotiated yet
+ Otherwise downstream wouldn't have received a segment event either and
+ wouldn't know what to do with the gap event
+ And also forward any pending segment event.
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3548
+
+2022-11-26 09:23:59 +0100 Tim-Philipp M��ller
+
+ * gst-libs/gst/audio/gstaudiofilter.c:
+ * gst/audioconvert/gstaudioconvert.c:
+ * gst/audioresample/gstaudioresample.c:
+ audioconvert, audioresample, audiofilter: fix divide by 0 for input buffer without caps
+ gst-launch-1.0 audiotestsrc ! udpsink host=127.0.0.1
+ gst-launch-1.0 udpsrc ! audioconvert ! autoaudiosink
+ would crash with a floating point exception when clipping the input
+ buffer owing to a division by zero because no caps event was received.
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3470
+
+2022-11-21 18:47:50 +0200 Sebastian Dr��ge
+
+ * ext/pango/gsttextrender.c:
+ * ext/pango/gsttextrender.h:
+ textrender: Don't pass plaintext as pango markup to Pango
+ Otherwise e.g. & in the text will cause Pango to complain about invalid
+ markup and render the text incorrectly.
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3458
+
+2022-11-21 18:43:54 +0200 Sebastian Dr��ge
+
+ * ext/pango/gsttextrender.c:
+ textrender: Don't blindly forward all events
+ Use gst_pad_event_default(), which does the right thing by default.
+ Especially it does not forward text/x-plain caps downstream.
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3458
+
+2022-11-14 07:26:25 +0100 Edward Hervey
+
+ * ext/ogg/gstoggdemux.c:
+ oggdemux: Don't leak incoming EOS event
+ If we're going to drop it ... then do drop it :)
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3412
+
+2022-11-05 07:34:27 +0100 Edward Hervey
+
+ * gst/subparse/gstsubparse.c:
+ subparse: Fix non-closed tag handling.
+ Unclear what the goal was, but we could end up reading way past the next_tag.
+ Instead just move everything from after the end tag ('>') to the next_tag.
+ Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=53040
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3351
+
+2022-10-27 15:13:36 +0300 Sebastian Dr��ge
+
+ * gst-libs/gst/app/gstappsrc.c:
+ * gst-libs/gst/audio/gstaudiodecoder.c:
+ * gst-libs/gst/audio/gstaudioencoder.c:
+ * gst-libs/gst/video/gstvideoencoder.c:
+ core/base: Only post latency messages if the latency values have actually changed
+ Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1525
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3291
+
+2022-10-27 07:21:19 +0200 Edward Hervey
+
+ * gst-libs/gst/video/gstvideodecoder.c:
+ videodecoder: Only post latency message if it changed
+ Posting latency messages causes a full and potentially expensive latency
+ recalculation of the pipeline. While subclasses should check whether the latency
+ really changed or not before calling this function, we ensure that we do not
+ post such messages if it didn't change.
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3291
+
+2022-10-06 00:00:59 +0900 Seungha Yang
+
+ * gst-libs/gst/video/gstvideosink.c:
+ videosink: Don't return unknown end-time from get_times()
+ ... in case of reverse playback. Otherwise basesink will not
+ wait for clock
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3277
+
+2022-10-21 21:50:01 +0530 Nirbheek Chauhan
+
+ * gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h:
+ * gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m:
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ gl/vulkan: Fix static linking on macOS
+ duplicate symbol '__invoke_on_main' in:
+ /Library/Frameworks/GStreamer.framework/Versions/1.0/lib/libgstvulkan-1.0.a(cocoa_gstvkwindow_cocoa.m.o)
+ /Library/Frameworks/GStreamer.framework/Versions/1.0/lib/libgstgl-1.0.a(cocoa_gstglwindow_cocoa.m.o)
+ ld: 1 duplicate symbol for architecture x86_64
+ clang: error: linker command failed with exit code 1 (use -v to see invocation)
+ Also make the same change in iOS for consistency.
+ Continuation of https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1132
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3263
+
+2022-10-14 14:59:49 +0100 Tim-Philipp M��ller
+
+ * meson.build:
+ gst-plugins-base: bump core req to 1.20.4
+ For newly-added _gst_meta_tag_memory_reference symbol.
+ https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2928#not...
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3185
+
+2022-10-04 05:39:51 +0100 Matthew Waters
+
+ * gst-libs/gst/gl/meson.build:
+ build/gl: fix automatic dispmanx detection for rpi4
+ rpi4 doesn't contain dispmanx but still contains bcm_host.pc which
+ confuses the configure detection. Add an explicit check for
+ EGL_DISPMANX_WINDOW_T to ensure that we only build with dispmanx when
+ the types are available.
+ Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/893
+ Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/952
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3246
+
+2022-07-06 21:45:24 +0300 Jordan Petridis
+
+ * ext/cdparanoia/meson.build:
+ cdparanoia: Ignore compiler warning coming from the cdparanoia header
+ When trying to build the plugin, GCC starts complaining about issues
+ with one of the cdparanoia headers and it block us from being able
+ to build the plugin with Werror.
+ The current warning in the header look like this:
+ ```
+ [1/2] Compiling C object subprojects/gst-plugins-base/ext/cdparanoia/libgstcdparanoia.so.p/gstcdparanoiasrc.c.o
+ In file included from ../subprojects/gst-plugins-base/ext/cdparanoia/gstcdparanoiasrc.h:37,
+ from ../subprojects/gst-plugins-base/ext/cdparanoia/gstcdparanoiasrc.c:31:
+ /usr/include/cdda/cdda_interface.h:164:3: warning: initialization discards ���const��� qualifier from pointer target type [-Wdiscarded-qualifiers]
+ 164 | "Success",
+ | ^~~~~~~~~
+ ...
+ /usr/include/cdda/cdda_interface.h:163:14: warning: ���strerror_tr��� defined but not used [-Wunused-variable]
+ 163 | static char *strerror_tr[]={
+ | ^~~~~~~~~~~
+ [2/2] Linking target subprojects/gst-plugins-base/ext/cdparanoia/libgstcdparanoia.so
+ ```
+ Last release of cdparanoia was in 2008, so our best bet for the
+ time is to ignore the warnings.
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3232
+
+2022-10-14 16:12:45 +0200 Edward Hervey
+
+ * tools/gst-play.c:
+ gst-play: Don't leak the stream collection
+ We are given a reference to the collection when parsing it from the
+ message. Just store it (instead of referencing it again).
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3191
+
+2022-08-22 16:33:23 -0400 Nicolas Dufresne
+
+ * gst-libs/gst/gl/egl/gsteglimage.c:
+ opengl: Fix usage of eglCreate/DestroyImage
+ The implementation was inconsistent between create and destroy. EGLImage
+ creation and destruction is requires for EGL 1.5 and up, while
+ otherwise the KHR version is only available if EGL_KHR_image_base
+ feature is set. Not doing these check may lead to getting a function
+ pointer to a stub, which is notably the case when using apitrace.
+ Fixes #1389
+ Part-of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3170
+
+2022-10-12 18:40:25 +0100 Tim-Philipp M��ller
+
+ * meson.build:
+ Back to development
+
=== release 1.20.4 ===
2022-10-12 16:39:47 +0100 Tim-Philipp M��ller
+ * ChangeLog:
* NEWS:
* RELEASE:
* gst-plugins-base.doap:
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-base-1.20.4/NEWS new/gst-plugins-base-1.20.5/NEWS
--- old/gst-plugins-base-1.20.4/NEWS 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/NEWS 2022-12-20 00:34:46.000000000 +0100
@@ -2,13 +2,13 @@
GStreamer 1.20.0 was originally released on 3 February 2022.
-The latest bug-fix release in the 1.20 series is 1.20.4 and was released
-on 12 October 2022.
+The latest bug-fix release in the 1.20 series is 1.20.5 and was released
+on 19 December 2022.
See https://gstreamer.freedesktop.org/releases/1.20/ for the latest
version of this document.
-Last updated: Wednesday 12 October 2022, 15:00 UTC (log)
+Last updated: Monday 19 December 2022, 19:00 UTC (log)
Introduction
@@ -1791,6 +1791,13 @@
Known Issues
+- GStreamer may fail to build the hotdoc documentation with the Meson
+ 0.64.0 release owing to a Meson bug. This should only affect systems
+ where hotdoc is installed, and will be fixed in Meson 0.64.1 by this
+ Meson PR in combination with this GStreamer MR. In the meantime,
+ users can pass -Ddoc=disabledor downgrade to an older Meson version
+ (< 0.64.0).
+
- nothing in particular at this point (but also see possibly breaking
changes section above)
@@ -2530,6 +2537,7 @@
chroma (Y41B, YUV9, YVU9 and IYU9)
- macOS build and packaging fixes, in particular fix finding of gio
modules on macOS for https/TLS support
+- Fix consuming of the macOS package as a framework in XCode
- Performance improvements
- Miscellaneous bug fixes, memory leak fixes, and other stability and
reliability improvements
@@ -2783,6 +2791,252 @@
- List of Merge Requests applied in 1.20.4
- List of Issues fixed in 1.20.4
+1.20.5
+
+The fifth 1.20 bug-fix release (1.20.5) was released on 19 December
+2022.
+
+This release only contains bugfixes and it should be safe to upgrade
+from 1.20.x.
+
+Highlighted bugfixes in 1.20.5
+
+- systemclock waiting fixes for certain 32-bit platforms/libcs
+- alphacombine: robustness improvements for corner case scenarios
+- avfvideosrc: Report latency when doing screen capture
+- d3d11videosink: various thread-safety and stability fixes
+- decklink: fix performance issue when HDMI signal has been lost for a
+ long time
+- flacparse: Fix handling of headers advertising 32 bits per sample
+- mpegts: Handle when iconv doesn���t support ISO 6937 (e.g.��musl libc)
+- opengl: fix automatic dispmanx detection for rpi4 and fix usage of
+ eglCreate/DestroyImage
+- opusdec: Various channel-related fixes
+- textrender: event handling fixes, esp.��for GAP event
+- subparse: Fix non-closed tag handling
+- videoscale: fix handling of unknown buffer metas
+- videosink: reverse playback handling fixes
+- qtmux: Prefill mode fixes, especially for raw audio
+- multiudpsink: allow binding to IPv6 address
+- rtspsrc: Fix usage of IPv6 connections in SETUP
+- rtspsrc: Only EOS on timeout if all streams are timed out/EOS
+- splitmuxsrc: fix playback stall if there are unlinked pads
+- v4l2: Fix SIGSEGV on state change during format changes
+- wavparse robustness fixes
+- Fix static linking on macOS (opengl, vulkan)
+- gstreamer-vaapi: fix headless build against mesa >= 22.3.0
+- GStreamer Editing Services library: Fix build with tools disabled
+- webrtc example/demo fixes
+- unit test fixes for aesdec and rtpjitterbuffer
+- Cerbero: Fix ios cross-compile with cmake on M1; some recipe updates
+ and other build fixes
+- Binary packages: pkg-config file fixes for various recipes (ffmpeg,
+ taglib, gstreamer)
+- Binary packages: Enable high bitdepth support for libvpx (VP8/VP9
+ encoding/decoding)
+- Binary packages: ship aes plugin
+- Miscellaneous bug fixes, memory leak fixes, and other stability and
+ reliability improvements
+- Performance improvements
+
+gstreamer
+
+- allocator: Copy allocator name in gst_allocator_register()
+- miniobject: support higher refcount values
+- pads: Fix non-serialized sticky event push, e.g.��instant change rate
+ events
+- padtemplate: Fix annotations
+- systemclock: Use futex_time64 syscall on x32 and other platforms
+ that always���
+- Fix build of 1.20 branch with Meson 0.64.1 for those who have hotdoc
+ installed on their system.
+- meson: fix check for pthread_setname_np()
+- -Wimplicit-function-declaration in pthread_setname_np check (missing
+ _GNU_SOURCE)
+- gst-inspect: Don���t leak list
+
+Core Elements
+
+- concat: Properly propagate EOS seqnum
+- fakesrc: avoid time overflow with datarate
+
+gst-plugins-base
+
+- audioconvert, audioresample, audiofilter: fix divide by 0 for input
+ buffer without caps
+- cdparanoia: Ignore compiler warning coming from the cdparanoia
+ header
+- oggdemux, parsebin: More leak fixes
+- opengl: fix automatic dispmanx detection for rpi4
+- opengl: Fix usage of eglCreate/DestroyImage
+- opengl: Fix static linking on macOS
+- opusdec: Various channel-related fixes
+- textrender: Negotiate caps on a GAP event if none were negotiated
+ yet
+- textrender: Don���t blindly forward all events and don���t blindly
+ forward all events
+- timeoverlay: fix pad leak
+- oggdemux: Don���t leak incoming EOS event
+- subparse: Fix non-closed tag handling.
+- videodecoder: Only post latency message if it changed
+- videoscale: buffer meta handling fixes (NULL-terminate array of
+ valid meta tags)
+- videosink: Don���t return unknown end-time from get_times()
+- Bump core requirement in 1.20 branch to 1.20.4
+
+Tools
+
+- gst-play: Don���t leak the stream collection
+
+gst-plugins-good
+
+- flacparse: Fix handling of headers advertising 32bps
+- qt5: deactivate context if fill_info fails
+- qt5: initialize GError properly in gst_qt_get_gl_wrapcontext()
+- qtdemux: check return value from gst_structure_get in PIFF box
+- qtdemux: use unsigned int types to store result of QT_UINT32
+- qtmux: Prefill mode fixes
+- oss4: Fix debug category initialization
+- multiudpsink: allow binding to IPv6 address
+- rtpjitterbuffer tests: Cast drop-messages-interval type properly
+ (fixing it on 32-bit architectures)
+- rtspsrc: fix seek event leaks
+- rtspsrc: Don���t replace 404 errors with ���no auth protocol found���
+- rtspsrc: Only EOS on timeout if all streams are timed out/EOS
+- rtspsrc: Fix usage of IPv6 connections in SETUP
+- splitmuxsrc: don���t queue data on unlinked pads
+- v4l2: Fix SIGSEGV on ���change state��� during ���format change���
+- v4l2videodec: Fix activation of internal pool
+- wavparse: Avoid occasional crash due to referencing freed buffer.
+- wavparse: Fix crash that occurs in push mode when header chunks are
+ corrupted in certain ways.
+
+gst-plugins-bad
+
+- aesdec: Fix padding removal for per-buffer-padding=FALSE
+- aesdec test failing in gst-plugins-bad
+- alphacombine: Add missing query handler for gaps
+- avfdeviceprovider: do not leak the properties
+- avfvideosrc: Report latency when doing screen capture
+- d3d11screencapturesrc: Specify PAR 1/1 to template caps
+- d3d11videosink: Fixing focus lost on desktop layout change
+- d3d11videosink: Call ShowWindow() from window thread
+- d3d11videosink: Fix deadlock when parent window is busy
+- d3d11videosink: Always clear back buffer on resize
+- decklink: reset calculation of time_mapping to fix clipping HDMI
+ video
+- directshow: Fix build error with glib 2.75 and newer
+- dvbsubenc: Forward GAP events as-is if we wouldn���t produce an end
+ packet and���
+- dvbsubenc: Write Display Definition Segment if a non-default
+ width/height is used
+- h265decoder: Do not abort when failed to prepare ref pic set
+- h264parser: Fix a typo in pred_weight_table parsing.
+- mediafoundation, d3d11: Fix memory leak and make leak tracer happy
+- mpegts: Handle when iconv doesn���t support ISO 6937 (e.g.��musl libc)
+- mpegts: Check continuity counter on section streams
+- mpegts: Revert ���mpegtspacketizer: memcmp potentially seen_before
+ data���
+- mpegtspacketizer: memcmp potentially seen_before data
+- mpegtsdemux: Always clear packetizer on DISCONT push mode
+- srt: various fixes - improve stats and error handling
+- rtmp2: Improve error messages
+- rtmp2sink: Correctly return GST_FLOW_ERROR on error
+- vulkan: Fix static linking on macOS
+- webrtcbin: also add rtcp-fb ccm fir for video mlines by default
+- webrtc/nice: fix small leak of split strings
+
+gst-plugins-ugly
+
+- No changes
+
+gst-libav
+
+- avdec_h265: Fix endless renegotiation with alternate interlacing
+- avviddec: Avoid flushing on framerate changes
+
+gst-rtsp-server
+
+- rtsp-server: Free client if no connection could be created
+
+gstreamer-vaapi
+
+- vaapi: prefix internal USE_X11 define to fix build with mesa 22.3.0
+- vaapi: libs: context: use queried value for attrib
+- gstreamer-vaapi cannot be built without X11 with recent mesa
+
+gstreamer-sharp
+
+- No changes
+
+gst-omx
+
+- No changes
+
+gst-python
+
+- No changes
+
+gst-editing-services
+
+- Fix building ges with tools disabled
+- Fix leaks and minor races in GES
+
+gst-examples:
+
+- webrtc: Fix double free in webrtc-recvonly-h264 demo
+- webrtc: Fix critical in webrtc-recvonly-h264 example
+- webrtc/signalling examples: Fix compatibility with Python 3.10
+
+Development build environment + gst-full build
+
+- No major changes
+
+Cerbero build tool and packaging changes in 1.20.5
+
+- oven: output status line at least every minute
+- Unconditionally set CMAKE_SYSTEM_NAME on Windows
+- Fix ios cross-compile with cmake on M1
+- Speed up downloads on Windows drastically
+- Fix tar usage on bsdtar and print progress while compressing
+- Actually print the sha for which the cache was not found
+
+Recipes
+
+- ffmpeg: add patch to generate the pc files properly
+- taglib: add patch to generate the pc files properly
+- fontconfig: update to 2.14.1
+- Windows: Crash on GStreamer 1.20.x x86_64 MSVC + MS-Windows due to
+ libfontconfig fonts.conf file invalid.
+- openssl: Fix compile errors on upgrades
+- moltenvk: Also ship the static library on macOS
+- gstreamer: Add some missing pkgconfig files
+- gst-plugins-good: Fix post_install failure when qt5 is enabled
+- gst-plugins-bad: Ship AES plugin
+- libvpx: Enable high bitdepth support
+- openssl: update to 1.1.1s
+- glib: Update patch to auto-detect modules on macOS
+
+Contributors to 1.20.5
+
+Aleksandr Slobodeniuk, Arun Raghavan, A. Wilcox, Bo Elmgreen, Boyuan
+Zhang, Bunio FH, C��lestin Marot, Devin Anderson, Edward Hervey, He
+Junyan, Ignacio Casal Quinteiro, Jacek Skiba, Jan Alexander Steffens
+(heftig), Jan Schmidt, Jonas Bonn, Jordan Petridis, Justin Chadwell,
+Linus Svensson, Marek Olejnik, Mathieu Duponchelle, Matthew Waters,
+Nicolas Dufresne, Nirbheek Chauhan, Patrick Griffis, Pawel Stawicki,
+Philippe Normand, Ruben Gonzalez, Sam Van Den Berge, Sebastian Dr��ge,
+Seungha Yang, St��phane Cerveau, Tim-Philipp M��ller, Vivia Nikolaidou,
+Wojciech Kapsa, Xavier Claessens,
+
+��� 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.20.5
+
+- List of Merge Requests applied in 1.20.5
+- List of Issues fixed in 1.20.5
+
Schedule for 1.22
Our next major feature release will be 1.22, and 1.21 will be the
@@ -2790,7 +3044,7 @@
development of 1.21/1.22 will happen in the git main branch.
The plan for the 1.22 development cycle is now confirmed, and we aim for
-a 1.22.0 release in December 2022.
+a 1.22.0 release in December 2022 or early January 2023.
1.22 will be backwards-compatible to the stable 1.20, 1.18, 1.16, 1.14,
1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
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-base-1.20.4/RELEASE new/gst-plugins-base-1.20.5/RELEASE
--- old/gst-plugins-base-1.20.4/RELEASE 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/RELEASE 2022-12-20 00:34:46.000000000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-base 1.20.4.
+This is GStreamer gst-plugins-base 1.20.5.
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-base-1.20.4/ext/cdparanoia/meson.build new/gst-plugins-base-1.20.5/ext/cdparanoia/meson.build
--- old/gst-plugins-base-1.20.4/ext/cdparanoia/meson.build 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ext/cdparanoia/meson.build 2022-12-20 00:34:46.000000000 +0100
@@ -29,10 +29,19 @@
endif
if cdparanoia_found
+ # The cdda/cdda_interface.h header triggers GCC 12+ warnings which
+ # then trickle down when we build the plugin with -Werror.
+ # This wouldn't be needed usually, but cdparanoia's last release
+ # was in 2008.
+ extra_args = cc.get_supported_arguments([
+ '-Wno-discarded-qualifiers',
+ '-Wno-unused-variable'
+ ])
+
gstcdparanoia = library('gstcdparanoia',
['gstcdparanoiasrc.c'],
include_directories: [configinc, libsinc],
- c_args : gst_plugins_base_args,
+ c_args : gst_plugins_base_args + extra_args,
dependencies : cdparanoia_deps + glib_deps + [audio_dep, gst_dep, gst_base_dep],
install : true,
install_dir : plugins_install_dir,
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-base-1.20.4/ext/ogg/gstoggdemux.c new/gst-plugins-base-1.20.5/ext/ogg/gstoggdemux.c
--- old/gst-plugins-base-1.20.4/ext/ogg/gstoggdemux.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ext/ogg/gstoggdemux.c 2022-12-20 00:34:46.000000000 +0100
@@ -2524,6 +2524,7 @@
GST_DEBUG_OBJECT (ogg, "Error seeking back after duration check: %d",
res);
}
+ gst_event_unref (event);
res = TRUE;
break;
} else {
@@ -2538,6 +2539,8 @@
}
if (!drop)
res = gst_ogg_demux_send_event (ogg, event);
+ else
+ gst_event_unref (event);
if (ogg->current_chain == NULL) {
GST_WARNING_OBJECT (ogg,
"EOS while trying to retrieve chain, seeking disabled");
@@ -5262,6 +5265,7 @@
gst_ogg_demux_clear_chains (ogg);
GST_OBJECT_LOCK (ogg);
ogg->running = FALSE;
+ gst_event_replace (&ogg->seek_event, NULL);
GST_OBJECT_UNLOCK (ogg);
break;
case GST_STATE_CHANGE_READY_TO_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-base-1.20.4/ext/opus/gstopusdec.c new/gst-plugins-base-1.20.5/ext/opus/gstopusdec.c
--- old/gst-plugins-base-1.20.4/ext/opus/gstopusdec.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ext/opus/gstopusdec.c 2022-12-20 00:34:46.000000000 +0100
@@ -310,7 +310,7 @@
gst_structure_fixate_field_nearest_int (s, "rate", dec->sample_rate);
gst_structure_get_int (s, "rate", &rate);
channels = dec->n_channels > 0 ? dec->n_channels : 2;
- gst_structure_fixate_field_nearest_int (s, "channels", dec->n_channels);
+ gst_structure_fixate_field_nearest_int (s, "channels", channels);
gst_structure_get_int (s, "channels", &channels);
gst_caps_unref (inter);
@@ -363,6 +363,7 @@
{
GstAudioChannelPosition pos[64];
const GstAudioChannelPosition *posn = NULL;
+ guint8 n_channels;
if (!gst_opus_header_is_id_header (buf)) {
GST_ELEMENT_ERROR (dec, STREAM, FORMAT, (NULL),
@@ -372,7 +373,7 @@
if (!gst_codec_utils_opus_parse_header (buf,
&dec->sample_rate,
- (guint8 *) & dec->n_channels,
+ &n_channels,
&dec->channel_mapping_family,
&dec->n_streams,
&dec->n_stereo_streams,
@@ -381,6 +382,7 @@
("Failed to parse Opus ID header"));
return GST_FLOW_ERROR;
}
+ dec->n_channels = n_channels;
dec->r128_gain_volume = gst_opus_dec_get_r128_volume (dec->r128_gain);
GST_INFO_OBJECT (dec,
@@ -886,13 +888,15 @@
}
} else {
const GstAudioChannelPosition *posn = NULL;
+ guint8 n_channels;
if (!gst_codec_utils_opus_parse_caps (caps, &dec->sample_rate,
- (guint8 *) & dec->n_channels, &dec->channel_mapping_family,
+ &n_channels, &dec->channel_mapping_family,
&dec->n_streams, &dec->n_stereo_streams, dec->channel_mapping)) {
ret = FALSE;
goto done;
}
+ dec->n_channels = n_channels;
if (dec->channel_mapping_family == 1 && dec->n_channels <= 8)
posn = gst_opus_channel_positions[dec->n_channels - 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-base-1.20.4/ext/pango/gsttextrender.c new/gst-plugins-base-1.20.5/ext/pango/gsttextrender.c
--- old/gst-plugins-base-1.20.4/ext/pango/gsttextrender.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ext/pango/gsttextrender.c 2022-12-20 00:34:46.000000000 +0100
@@ -531,7 +531,10 @@
/* render text */
GST_DEBUG ("rendering '%*s'", (gint) size, data);
- pango_layout_set_markup (render->layout, (gchar *) data, size);
+ if (render->have_pango_markup)
+ pango_layout_set_markup (render->layout, (gchar *) data, size);
+ else
+ pango_layout_set_text (render->layout, (gchar *) data, size);
gst_text_render_render_pangocairo (render);
gst_buffer_unmap (inbuf, &map);
@@ -630,8 +633,44 @@
}
break;
}
+ case GST_EVENT_CAPS:
+ {
+ GstCaps *caps;
+ GstStructure *structure;
+ const gchar *format;
+
+ gst_event_parse_caps (event, &caps);
+
+ structure = gst_caps_get_structure (caps, 0);
+ format = gst_structure_get_string (structure, "format");
+ render->have_pango_markup = (strcmp (format, "pango-markup") == 0);
+
+ gst_event_unref (event);
+ ret = TRUE;
+
+ break;
+ }
+ case GST_EVENT_GAP:
+ /* Negotiate caps first if we negotiated none so far as otherwise
+ * downstream wouldn't have received a segment event either and
+ * wouldn't know what to do with the gap event */
+ if (!gst_pad_has_current_caps (render->srcpad)) {
+ if (gst_text_render_renegotiate (render) != GST_FLOW_OK) {
+ gst_event_unref (event);
+ ret = FALSE;
+ break;
+ }
+ }
+
+ if (render->segment_event) {
+ gst_pad_push_event (render->srcpad, render->segment_event);
+ render->segment_event = NULL;
+ }
+
+ ret = gst_pad_event_default (pad, parent, event);
+ break;
default:
- ret = gst_pad_push_event (render->srcpad, event);
+ ret = gst_pad_event_default (pad, parent, event);
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-base-1.20.4/ext/pango/gsttextrender.h new/gst-plugins-base-1.20.5/ext/pango/gsttextrender.h
--- old/gst-plugins-base-1.20.4/ext/pango/gsttextrender.h 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ext/pango/gsttextrender.h 2022-12-20 00:34:46.000000000 +0100
@@ -93,6 +93,7 @@
gint ypad;
GstEvent *segment_event;
+ gboolean have_pango_markup;
};
struct _GstTextRenderClass {
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-base-1.20.4/ext/pango/gsttimeoverlay.c new/gst-plugins-base-1.20.5/ext/pango/gsttimeoverlay.c
--- old/gst-plugins-base-1.20.4/ext/pango/gsttimeoverlay.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/ext/pango/gsttimeoverlay.c 2022-12-20 00:34:46.000000000 +0100
@@ -331,6 +331,7 @@
video_sink = gst_element_get_static_pad (GST_ELEMENT (overlay), "video_sink");
overlay->orig_video_event = GST_PAD_EVENTFUNC (video_sink);
gst_pad_set_event_function (video_sink, gst_time_overlay_video_event);
+ gst_object_unref (video_sink);
}
static void
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-base-1.20.4/gst/audioconvert/gstaudioconvert.c new/gst-plugins-base-1.20.5/gst/audioconvert/gstaudioconvert.c
--- old/gst-plugins-base-1.20.4/gst/audioconvert/gstaudioconvert.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst/audioconvert/gstaudioconvert.c 2022-12-20 00:34:46.000000000 +0100
@@ -918,6 +918,11 @@
GstAudioConvert *this = GST_AUDIO_CONVERT (base);
if (base->segment.format == GST_FORMAT_TIME) {
+ if (!GST_AUDIO_INFO_IS_VALID (&this->in_info)) {
+ GST_WARNING_OBJECT (this, "Got buffer, but not negotiated yet!");
+ return GST_FLOW_NOT_NEGOTIATED;
+ }
+
input =
gst_audio_buffer_clip (input, &base->segment, this->in_info.rate,
this->in_info.bpf);
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-base-1.20.4/gst/audioresample/gstaudioresample.c new/gst-plugins-base-1.20.5/gst/audioresample/gstaudioresample.c
--- old/gst-plugins-base-1.20.4/gst/audioresample/gstaudioresample.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst/audioresample/gstaudioresample.c 2022-12-20 00:34:46.000000000 +0100
@@ -977,6 +977,11 @@
GstAudioResample *resample = GST_AUDIO_RESAMPLE (base);
if (base->segment.format == GST_FORMAT_TIME) {
+ if (!GST_AUDIO_INFO_IS_VALID (&resample->in)) {
+ GST_WARNING_OBJECT (resample, "Got buffer, but not negotiated yet!");
+ return GST_FLOW_NOT_NEGOTIATED;
+ }
+
input =
gst_audio_buffer_clip (input, &base->segment, resample->in.rate,
resample->in.bpf);
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-base-1.20.4/gst/playback/gstdecodebin2.c new/gst-plugins-base-1.20.5/gst/playback/gstdecodebin2.c
--- old/gst-plugins-base-1.20.4/gst/playback/gstdecodebin2.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst/playback/gstdecodebin2.c 2022-12-20 00:34:46.000000000 +0100
@@ -5012,7 +5012,7 @@
GstDecodePad *dpad = user_data;
gboolean res = TRUE;
- GST_LOG_OBJECT (pad, "%s dpad:%p", GST_EVENT_TYPE_NAME (event), dpad);
+ GST_LOG_OBJECT (pad, "event %s", GST_EVENT_TYPE_NAME (event));
if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
GST_DEBUG_OBJECT (pad, "we received EOS");
@@ -5159,8 +5159,8 @@
ret = FALSE;
GST_DEBUG_OBJECT (dpad->dbin,
- "calling autoplug-query for %s (element %s): %" GST_PTR_FORMAT,
- GST_PAD_NAME (dpad), GST_ELEMENT_NAME (delem->element), query);
+ "calling autoplug-query for %" GST_PTR_FORMAT " (element %s): %"
+ GST_PTR_FORMAT, dpad, GST_ELEMENT_NAME (delem->element), query);
g_signal_emit (G_OBJECT (dpad->dbin),
gst_decode_bin_signals[SIGNAL_AUTOPLUG_QUERY], 0, dpad, delem->element,
query, &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-base-1.20.4/gst/playback/gstparsebin.c new/gst-plugins-base-1.20.5/gst/playback/gstparsebin.c
--- old/gst-plugins-base-1.20.4/gst/playback/gstparsebin.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst/playback/gstparsebin.c 2022-12-20 00:34:46.000000000 +0100
@@ -3573,6 +3573,7 @@
/* Don't expose if we're currently shutting down */
DYN_LOCK (parsebin);
if (G_UNLIKELY (parsebin->shutdown)) {
+ g_list_free_full (endpads, (GDestroyNotify) gst_object_unref);
GST_WARNING_OBJECT (parsebin,
"Currently, shutting down, aborting exposing");
DYN_UNLOCK (parsebin);
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-base-1.20.4/gst/subparse/gstsubparse.c new/gst-plugins-base-1.20.5/gst/subparse/gstsubparse.c
--- old/gst-plugins-base-1.20.4/gst/subparse/gstsubparse.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst/subparse/gstsubparse.c 2022-12-20 00:34:46.000000000 +0100
@@ -785,9 +785,11 @@
last = g_ptr_array_index (open_tags, num_open_tags - 1);
if (num_open_tags == 0
|| g_ascii_strncasecmp (end_tag - 1, last, strlen (last))) {
- GST_LOG ("broken input, closing tag '%s' is not open", end_tag - 1);
- memmove (next_tag, end_tag + 1, strlen (end_tag) + 1);
- next_tag -= strlen (end_tag);
+ GST_LOG ("broken input, closing tag '%s' is not open", next_tag);
+ /* Move everything after the tag end, including closing \0 */
+ memmove (next_tag, end_tag + 1, strlen (end_tag));
+ cur = next_tag;
+ continue;
} else {
--num_open_tags;
g_ptr_array_remove_index (open_tags, num_open_tags);
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-base-1.20.4/gst/videoscale/gstvideoscale.c new/gst-plugins-base-1.20.5/gst/videoscale/gstvideoscale.c
--- old/gst-plugins-base-1.20.4/gst/videoscale/gstvideoscale.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst/videoscale/gstvideoscale.c 2022-12-20 00:34:46.000000000 +0100
@@ -519,7 +519,8 @@
const gchar *const valid_tags[] = { GST_META_TAG_VIDEO_STR,
GST_META_TAG_VIDEO_COLORSPACE_STR,
GST_META_TAG_VIDEO_ORIENTATION_STR,
- GST_META_TAG_VIDEO_SIZE_STR
+ GST_META_TAG_VIDEO_SIZE_STR,
+ NULL
};
tags = gst_meta_api_type_get_tags (info->api);
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-base-1.20.4/gst-libs/gst/app/gstappsrc.c new/gst-plugins-base-1.20.5/gst-libs/gst/app/gstappsrc.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/app/gstappsrc.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/app/gstappsrc.c 2022-12-20 00:34:46.000000000 +0100
@@ -183,6 +183,9 @@
guint64 min_latency;
guint64 max_latency;
+ /* Tracks whether the latency message was posted at least once */
+ gboolean posted_latency_msg;
+
gboolean emit_signals;
guint min_percent;
gboolean handle_segment_change;
@@ -1103,6 +1106,7 @@
priv->is_eos = FALSE;
priv->flushing = TRUE;
priv->started = FALSE;
+ priv->posted_latency_msg = FALSE;
gst_app_src_flush_queued (appsrc, TRUE);
g_cond_broadcast (&priv->cond);
g_mutex_unlock (&priv->mutex);
@@ -2325,6 +2329,10 @@
priv->max_latency = max;
changed = TRUE;
}
+ if (!priv->posted_latency_msg) {
+ priv->posted_latency_msg = TRUE;
+ changed = TRUE;
+ }
g_mutex_unlock (&priv->mutex);
if (changed) {
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-base-1.20.4/gst-libs/gst/audio/gstaudiodecoder.c new/gst-plugins-base-1.20.5/gst-libs/gst/audio/gstaudiodecoder.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/audio/gstaudiodecoder.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/audio/gstaudiodecoder.c 2022-12-20 00:34:46.000000000 +0100
@@ -180,6 +180,8 @@
/* MT-protected (with LOCK) */
GstClockTime min_latency;
GstClockTime max_latency;
+ /* Tracks whether the latency message was posted at least once */
+ gboolean posted_latency_msg;
GstAllocator *allocator;
GstAllocationParams params;
@@ -555,6 +557,7 @@
memset (&dec->priv->ctx, 0, sizeof (dec->priv->ctx));
gst_audio_info_init (&dec->priv->ctx.info);
+ dec->priv->ctx.posted_latency_msg = FALSE;
GST_OBJECT_UNLOCK (dec);
dec->priv->ctx.had_output_data = FALSE;
dec->priv->ctx.had_input_data = FALSE;
@@ -3391,24 +3394,43 @@
* @min: minimum latency
* @max: maximum latency
*
- * Sets decoder latency.
+ * Sets decoder latency. If the provided values changed from
+ * previously provided ones, this will also post a LATENCY message on the bus
+ * so the pipeline can reconfigure its global latency.
*/
void
gst_audio_decoder_set_latency (GstAudioDecoder * dec,
GstClockTime min, GstClockTime max)
{
+ gboolean post_message = FALSE;
+
g_return_if_fail (GST_IS_AUDIO_DECODER (dec));
g_return_if_fail (GST_CLOCK_TIME_IS_VALID (min));
g_return_if_fail (min <= max);
+ GST_DEBUG_OBJECT (dec,
+ "min_latency:%" GST_TIME_FORMAT " max_latency:%" GST_TIME_FORMAT,
+ GST_TIME_ARGS (min), GST_TIME_ARGS (max));
+
GST_OBJECT_LOCK (dec);
- dec->priv->ctx.min_latency = min;
- dec->priv->ctx.max_latency = max;
+ if (dec->priv->ctx.min_latency != min) {
+ dec->priv->ctx.min_latency = min;
+ post_message = TRUE;
+ }
+ if (dec->priv->ctx.max_latency != max) {
+ dec->priv->ctx.max_latency = max;
+ post_message = TRUE;
+ }
+ if (!dec->priv->ctx.posted_latency_msg) {
+ dec->priv->ctx.posted_latency_msg = TRUE;
+ post_message = TRUE;
+ }
GST_OBJECT_UNLOCK (dec);
/* post latency message on the bus */
- gst_element_post_message (GST_ELEMENT (dec),
- gst_message_new_latency (GST_OBJECT (dec)));
+ if (post_message)
+ gst_element_post_message (GST_ELEMENT (dec),
+ gst_message_new_latency (GST_OBJECT (dec)));
}
/**
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-base-1.20.4/gst-libs/gst/audio/gstaudioencoder.c new/gst-plugins-base-1.20.5/gst-libs/gst/audio/gstaudioencoder.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/audio/gstaudioencoder.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/audio/gstaudioencoder.c 2022-12-20 00:34:46.000000000 +0100
@@ -172,6 +172,9 @@
GstClockTime min_latency;
GstClockTime max_latency;
+ /* Tracks whether the latency message was posted at least once */
+ gboolean posted_latency_msg;
+
GList *headers;
gboolean new_headers;
@@ -487,6 +490,7 @@
memset (&enc->priv->ctx, 0, sizeof (enc->priv->ctx));
gst_audio_info_init (&enc->priv->ctx.info);
+ enc->priv->ctx.posted_latency_msg = FALSE;
GST_OBJECT_UNLOCK (enc);
if (enc->priv->upstream_tags) {
@@ -2308,27 +2312,43 @@
* @min: minimum latency
* @max: maximum latency
*
- * Sets encoder latency.
+ * Sets encoder latency. If the provided values changed from
+ * previously provided ones, this will also post a LATENCY message on the bus
+ * so the pipeline can reconfigure its global latency.
*/
void
gst_audio_encoder_set_latency (GstAudioEncoder * enc,
GstClockTime min, GstClockTime max)
{
+ gboolean post_message = FALSE;
+
g_return_if_fail (GST_IS_AUDIO_ENCODER (enc));
g_return_if_fail (GST_CLOCK_TIME_IS_VALID (min));
g_return_if_fail (min <= max);
+ GST_DEBUG_OBJECT (enc,
+ "min_latency:%" GST_TIME_FORMAT " max_latency:%" GST_TIME_FORMAT,
+ GST_TIME_ARGS (min), GST_TIME_ARGS (max));
+
GST_OBJECT_LOCK (enc);
- enc->priv->ctx.min_latency = min;
- enc->priv->ctx.max_latency = max;
+ if (enc->priv->ctx.min_latency != min) {
+ enc->priv->ctx.min_latency = min;
+ post_message = TRUE;
+ }
+ if (enc->priv->ctx.max_latency != max) {
+ enc->priv->ctx.max_latency = max;
+ post_message = TRUE;
+ }
+ if (!enc->priv->ctx.posted_latency_msg) {
+ enc->priv->ctx.posted_latency_msg = TRUE;
+ post_message = TRUE;
+ }
GST_OBJECT_UNLOCK (enc);
- GST_LOG_OBJECT (enc, "set to %" GST_TIME_FORMAT "-%" GST_TIME_FORMAT,
- GST_TIME_ARGS (min), GST_TIME_ARGS (max));
-
/* post latency message on the bus */
- gst_element_post_message (GST_ELEMENT (enc),
- gst_message_new_latency (GST_OBJECT (enc)));
+ if (post_message)
+ gst_element_post_message (GST_ELEMENT (enc),
+ gst_message_new_latency (GST_OBJECT (enc)));
}
/**
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-base-1.20.4/gst-libs/gst/audio/gstaudiofilter.c new/gst-plugins-base-1.20.5/gst-libs/gst/audio/gstaudiofilter.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/audio/gstaudiofilter.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/audio/gstaudiofilter.c 2022-12-20 00:34:46.000000000 +0100
@@ -180,6 +180,11 @@
GstAudioFilter *filter = GST_AUDIO_FILTER (btrans);
if (btrans->segment.format == GST_FORMAT_TIME) {
+ if (!GST_AUDIO_INFO_IS_VALID (&filter->info)) {
+ GST_WARNING_OBJECT (filter, "Got buffer, but not negotiated yet!");
+ return GST_FLOW_NOT_NEGOTIATED;
+ }
+
input =
gst_audio_buffer_clip (input, &btrans->segment, filter->info.rate,
filter->info.bpf);
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-base-1.20.4/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h new/gst-plugins-base-1.20.5/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h
--- old/gst-plugins-base-1.20.4/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/gl/cocoa/gstgl_cocoa_private.h 2022-12-20 00:34:46.000000000 +0100
@@ -61,7 +61,7 @@
gboolean gst_gl_window_cocoa_create_window (GstGLWindowCocoa *window_cocoa);
G_GNUC_INTERNAL
-void _invoke_on_main (GstGLWindowCB func, gpointer data, GDestroyNotify notify);
+void _gst_gl_invoke_on_main (GstGLWindowCB func, gpointer data, GDestroyNotify notify);
G_END_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-base-1.20.4/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m new/gst-plugins-base-1.20.5/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m
--- old/gst-plugins-base-1.20.4/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/gl/cocoa/gstglcontext_cocoa.m 2022-12-20 00:34:46.000000000 +0100
@@ -313,7 +313,7 @@
context_cocoa->priv->pixel_format = fmt;
context_cocoa->priv->gl_context = glContext;
- _invoke_on_main ((GstGLWindowCB) gst_gl_window_cocoa_create_window,
+ _gst_gl_invoke_on_main ((GstGLWindowCB) gst_gl_window_cocoa_create_window,
gst_object_ref (window_cocoa), (GDestroyNotify) gst_object_unref);
if (!context_cocoa->priv->gl_context) {
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-base-1.20.4/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m new/gst-plugins-base-1.20.5/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
--- old/gst-plugins-base-1.20.4/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m 2022-12-20 00:34:46.000000000 +0100
@@ -269,8 +269,8 @@
static void
gst_gl_window_cocoa_close (GstGLWindow * window)
{
- _invoke_on_main ((GstGLWindowCB) _close_window, gst_object_ref (window),
- (GDestroyNotify) gst_object_unref);
+ _gst_gl_invoke_on_main ((GstGLWindowCB) _close_window,
+ gst_object_ref (window), (GDestroyNotify) gst_object_unref);
}
static guintptr
@@ -352,8 +352,8 @@
}
if (!priv->external_view && !priv->visible)
- _invoke_on_main ((GstGLWindowCB) _show_window, gst_object_ref (window),
- (GDestroyNotify) gst_object_unref);
+ _gst_gl_invoke_on_main ((GstGLWindowCB) _show_window,
+ gst_object_ref (window), (GDestroyNotify) gst_object_unref);
}
}
@@ -585,8 +585,8 @@
render->rect.w = width;
render->rect.h = height;
- _invoke_on_main ((GstGLWindowCB) _set_render_rectangle, render,
- (GDestroyNotify) _free_set_render_rectangle);
+ _gst_gl_invoke_on_main ((GstGLWindowCB) _set_render_rectangle, render,
+ (GDestroyNotify) _free_set_render_rectangle);
return TRUE;
}
@@ -738,7 +738,7 @@
@end
void
-_invoke_on_main (GstGLWindowCB func, gpointer data, GDestroyNotify notify)
+_gst_gl_invoke_on_main (GstGLWindowCB func, gpointer data, GDestroyNotify notify)
{
if ([NSThread isMainThread]) {
func (data);
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-base-1.20.4/gst-libs/gst/gl/egl/gsteglimage.c new/gst-plugins-base-1.20.5/gst-libs/gst/gl/egl/gsteglimage.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/gl/egl/gsteglimage.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/gl/egl/gsteglimage.c 2022-12-20 00:34:46.000000000 +0100
@@ -299,10 +299,8 @@
EGLContext egl_context = EGL_NO_CONTEXT;
EGLImageKHR img = EGL_NO_IMAGE_KHR;
GstGLDisplayEGL *display_egl;
- gint plat_major, plat_minor;
guint attrib_len = 0;
- gst_gl_context_get_gl_platform_version (context, &plat_major, &plat_minor);
display_egl = gst_gl_display_egl_from_gl_display (context->display);
if (!display_egl) {
@@ -321,6 +319,9 @@
while (attribs[attrib_len++] != EGL_NONE) {
}
#ifdef EGL_VERSION_1_5
+ gint plat_major, plat_minor;
+ gst_gl_context_get_gl_platform_version (context, &plat_major, &plat_minor);
+
if (GST_GL_CHECK_GL_VERSION (plat_major, plat_minor, 1, 5)) {
EGLImageKHR (*gst_eglCreateImage) (EGLDisplay dpy, EGLContext ctx,
EGLenum target, EGLClientBuffer buffer, const EGLAttrib * attrib_list);
@@ -347,7 +348,7 @@
g_free (egl_attribs);
} else
#endif
- {
+ if (gst_gl_context_check_feature (context, "EGL_KHR_image_base")) {
EGLImageKHR (*gst_eglCreateImageKHR) (EGLDisplay dpy, EGLContext ctx,
EGLenum target, EGLClientBuffer buffer, const EGLint * attrib_list);
EGLint *egl_attribs = NULL;
@@ -356,8 +357,8 @@
gst_eglCreateImageKHR = gst_gl_context_get_proc_address (context,
"eglCreateImageKHR");
if (!gst_eglCreateImageKHR) {
- GST_WARNING_OBJECT (context, "\"eglCreateImageKHR\" not exposed by the "
- "implementation");
+ GST_ERROR_OBJECT (context, "\"eglCreateImageKHR\" not exposed by the "
+ "implementation as required by EGL_KHR_image_base");
return EGL_NO_IMAGE_KHR;
}
@@ -371,6 +372,9 @@
egl_attribs);
g_free (egl_attribs);
+ } else {
+ GST_INFO_OBJECT (context, "EGLImage creation not supported");
+ return EGL_NO_IMAGE_KHR;
}
return img;
@@ -383,16 +387,31 @@
EGLDisplay egl_display = EGL_DEFAULT_DISPLAY;
GstGLDisplayEGL *display_egl;
- gst_eglDestroyImage = gst_gl_context_get_proc_address (context,
- "eglDestroyImage");
- if (!gst_eglDestroyImage) {
+#ifdef EGL_VERSION_1_5
+ gint plat_major, plat_minor;
+ gst_gl_context_get_gl_platform_version (context, &plat_major, &plat_minor);
+
+ if (GST_GL_CHECK_GL_VERSION (plat_major, plat_minor, 1, 5)) {
+ gst_eglDestroyImage = gst_gl_context_get_proc_address (context,
+ "eglDestroyImage");
+ if (!gst_eglDestroyImage) {
+ GST_ERROR_OBJECT (context, "\"eglDestroyImage\" not exposed by the "
+ "implementation as required by EGL >= 1.5");
+ return;
+ }
+ } else
+#endif
+ if (gst_gl_context_check_feature (context, "EGL_KHR_image_base")) {
gst_eglDestroyImage = gst_gl_context_get_proc_address (context,
"eglDestroyImageKHR");
if (!gst_eglDestroyImage) {
GST_ERROR_OBJECT (context, "\"eglDestroyImage\" not exposed by the "
- "implementation");
+ "implementation as required by EGL_KHR_image_base");
return;
}
+ } else {
+ GST_ERROR_OBJECT (context, "Destruction of EGLImage not supported.");
+ return;
}
display_egl = gst_gl_display_egl_from_gl_display (context->display);
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-base-1.20.4/gst-libs/gst/gl/meson.build new/gst-plugins-base-1.20.5/gst-libs/gst/gl/meson.build
--- old/gst-plugins-base-1.20.4/gst-libs/gst/gl/meson.build 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/gl/meson.build 2022-12-20 00:34:46.000000000 +0100
@@ -689,7 +689,16 @@
endif
if need_win_dispmanx != 'no'
- if bcm_host_dep.found()
+ have_dispmanx_window_t = cc.has_type(
+ 'EGL_DISPMANX_WINDOW_T',
+ prefix: '''
+#include
+#include
+''',
+ dependencies: [gl_lib_deps, egl_dep, bcm_host_dep],
+ include_directories: gl_includes)
+
+ if have_dispmanx_window_t and bcm_host_dep.found()
if not egl_dep.found()
error('dispmanx requires the use of egl')
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-base-1.20.4/gst-libs/gst/video/gstvideodecoder.c new/gst-plugins-base-1.20.5/gst-libs/gst/video/gstvideodecoder.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/video/gstvideodecoder.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/video/gstvideodecoder.c 2022-12-20 00:34:46.000000000 +0100
@@ -446,6 +446,9 @@
gint64 min_latency;
gint64 max_latency;
+ /* Tracks whether the latency message was posted at least once */
+ gboolean posted_latency_msg;
+
/* upstream stream tags (global tags are passed through as-is) */
GstTagList *upstream_tags;
@@ -2384,6 +2387,8 @@
priv->dropped = 0;
priv->processed = 0;
+ priv->posted_latency_msg = FALSE;
+
priv->decode_frame_number = 0;
priv->base_picture_number = 0;
@@ -5073,24 +5078,41 @@
* @min_latency: minimum latency
* @max_latency: maximum latency
*
- * Lets #GstVideoDecoder sub-classes tell the baseclass what the decoder
- * latency is. Will also post a LATENCY message on the bus so the pipeline
- * can reconfigure its global latency.
+ * Lets #GstVideoDecoder sub-classes tell the baseclass what the decoder latency
+ * is. If the provided values changed from previously provided ones, this will
+ * also post a LATENCY message on the bus so the pipeline can reconfigure its
+ * global latency.
*/
void
gst_video_decoder_set_latency (GstVideoDecoder * decoder,
GstClockTime min_latency, GstClockTime max_latency)
{
+ gboolean post_message = FALSE;
g_return_if_fail (GST_CLOCK_TIME_IS_VALID (min_latency));
g_return_if_fail (max_latency >= min_latency);
+ GST_DEBUG_OBJECT (decoder,
+ "min_latency:%" GST_TIME_FORMAT " max_latency:%" GST_TIME_FORMAT,
+ GST_TIME_ARGS (min_latency), GST_TIME_ARGS (max_latency));
+
GST_OBJECT_LOCK (decoder);
- decoder->priv->min_latency = min_latency;
- decoder->priv->max_latency = max_latency;
+ if (decoder->priv->min_latency != min_latency) {
+ decoder->priv->min_latency = min_latency;
+ post_message = TRUE;
+ }
+ if (decoder->priv->max_latency != max_latency) {
+ decoder->priv->max_latency = max_latency;
+ post_message = TRUE;
+ }
+ if (!decoder->priv->posted_latency_msg) {
+ decoder->priv->posted_latency_msg = TRUE;
+ post_message = TRUE;
+ }
GST_OBJECT_UNLOCK (decoder);
- gst_element_post_message (GST_ELEMENT_CAST (decoder),
- gst_message_new_latency (GST_OBJECT_CAST (decoder)));
+ if (post_message)
+ gst_element_post_message (GST_ELEMENT_CAST (decoder),
+ gst_message_new_latency (GST_OBJECT_CAST (decoder)));
}
/**
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-base-1.20.4/gst-libs/gst/video/gstvideoencoder.c new/gst-plugins-base-1.20.5/gst-libs/gst/video/gstvideoencoder.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/video/gstvideoencoder.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/video/gstvideoencoder.c 2022-12-20 00:34:46.000000000 +0100
@@ -134,6 +134,9 @@
gint64 min_latency;
gint64 max_latency;
+ /* Tracks whether the latency message was posted at least once */
+ gboolean posted_latency_msg;
+
/* FIXME 2.0: Use a GQueue or similar, see GstVideoCodecFrame::events */
GList *current_frame_events;
@@ -524,6 +527,8 @@
priv->dropped = 0;
priv->processed = 0;
+
+ priv->posted_latency_msg = FALSE;
} else {
GList *l;
@@ -2864,22 +2869,41 @@
* @min_latency: minimum latency
* @max_latency: maximum latency
*
- * Informs baseclass of encoding latency.
+ * Informs baseclass of encoding latency. If the provided values changed from
+ * previously provided ones, this will also post a LATENCY message on the bus
+ * so the pipeline can reconfigure its global latency.
*/
void
gst_video_encoder_set_latency (GstVideoEncoder * encoder,
GstClockTime min_latency, GstClockTime max_latency)
{
+ gboolean post_message = FALSE;
+
g_return_if_fail (GST_CLOCK_TIME_IS_VALID (min_latency));
g_return_if_fail (max_latency >= min_latency);
+ GST_DEBUG_OBJECT (encoder,
+ "min_latency:%" GST_TIME_FORMAT " max_latency:%" GST_TIME_FORMAT,
+ GST_TIME_ARGS (min_latency), GST_TIME_ARGS (max_latency));
+
GST_OBJECT_LOCK (encoder);
- encoder->priv->min_latency = min_latency;
- encoder->priv->max_latency = max_latency;
+ if (encoder->priv->min_latency != min_latency) {
+ encoder->priv->min_latency = min_latency;
+ post_message = TRUE;
+ }
+ if (encoder->priv->max_latency != max_latency) {
+ encoder->priv->max_latency = max_latency;
+ post_message = TRUE;
+ }
+ if (!encoder->priv->posted_latency_msg) {
+ encoder->priv->posted_latency_msg = TRUE;
+ post_message = TRUE;
+ }
GST_OBJECT_UNLOCK (encoder);
- gst_element_post_message (GST_ELEMENT_CAST (encoder),
- gst_message_new_latency (GST_OBJECT_CAST (encoder)));
+ if (post_message)
+ gst_element_post_message (GST_ELEMENT_CAST (encoder),
+ gst_message_new_latency (GST_OBJECT_CAST (encoder)));
}
/**
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-base-1.20.4/gst-libs/gst/video/gstvideosink.c new/gst-plugins-base-1.20.5/gst-libs/gst/video/gstvideosink.c
--- old/gst-plugins-base-1.20.4/gst-libs/gst/video/gstvideosink.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-libs/gst/video/gstvideosink.c 2022-12-20 00:34:46.000000000 +0100
@@ -273,6 +273,12 @@
*end = timestamp +
gst_util_uint64_scale_int (GST_SECOND, vsink->priv->info.fps_d,
vsink->priv->info.fps_n);
+ } else if (bsink->segment.rate < 0) {
+ /* The end time will be used for clock waiting time position
+ * in case of revese playback, and unknown end time will result in
+ * never waiting for clock (as if sync=false).
+ * Returning timestamp here would be the best effort we can do */
+ *end = timestamp;
}
}
}
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-base-1.20.4/gst-plugins-base.doap new/gst-plugins-base-1.20.5/gst-plugins-base.doap
--- old/gst-plugins-base-1.20.4/gst-plugins-base.doap 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/gst-plugins-base.doap 2022-12-20 00:34:46.000000000 +0100
@@ -36,6 +36,16 @@
<release>
<Version>
+ <revision>1.20.5</revision>
+ <branch>1.20</branch>
+ <name></name>
+ <created>2022-12-19</created>
+ <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.20.5.tar.xz" />
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.20.4</revision>
<branch>1.20</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-base-1.20.4/meson.build new/gst-plugins-base-1.20.5/meson.build
--- old/gst-plugins-base-1.20.4/meson.build 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/meson.build 2022-12-20 00:34:46.000000000 +0100
@@ -1,5 +1,5 @@
project('gst-plugins-base', 'c',
- version : '1.20.4',
+ version : '1.20.5',
meson_version : '>= 0.59',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
@@ -30,11 +30,7 @@
glib_req = '>= 2.56.0'
orc_req = '>= 0.4.24'
-if gst_version_is_stable
- gst_req = '>= @0@.@1@.0'.format(gst_version_major, gst_version_minor)
-else
- gst_req = '>= ' + gst_version
-endif
+gst_req = '>= 1.20.4' # for _gst_meta_tag_memory_reference
api_version = '1.0'
soversion = 0
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-base-1.20.4/tools/gst-play.c new/gst-plugins-base-1.20.5/tools/gst-play.c
--- old/gst-plugins-base-1.20.4/tools/gst-play.c 2022-10-12 17:39:51.000000000 +0200
+++ new/gst-plugins-base-1.20.5/tools/gst-play.c 2022-12-20 00:34:46.000000000 +0100
@@ -604,8 +604,9 @@
if (collection) {
g_mutex_lock (&play->selection_lock);
- gst_object_replace ((GstObject **) & play->collection,
- (GstObject *) collection);
+ if (play->collection)
+ gst_object_unref (play->collection);
+ play->collection = collection;
g_mutex_unlock (&play->selection_lock);
}
break;