Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gstreamer for openSUSE:Factory checked in at 2024-08-02 17:25:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gstreamer (Old) and /work/SRC/openSUSE:Factory/.gstreamer.new.7232 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer" Fri Aug 2 17:25:52 2024 rev:99 rq:1190769 version:1.24.6 Changes: -------- --- /work/SRC/openSUSE:Factory/gstreamer/gstreamer.changes 2024-07-02 18:16:02.666529264 +0200 +++ /work/SRC/openSUSE:Factory/.gstreamer.new.7232/gstreamer.changes 2024-08-02 17:26:00.870031503 +0200 @@ -1,0 +2,32 @@ +Wed Jul 31 13:40:55 UTC 2024 - Dominique Leuenberger <dims...@opensuse.org> + +- Update to version 1.24.6: + + Highlighted bugfixes: + - Fix compatibility with FFmpeg 7.0. + - qmlglsink: Fix failure to display content on recent Android + devices. + - adaptivedemux: Fix handling of closed caption streams. + - cuda: Fix runtime compiler loading with old CUDA tookit. + - decodebin3 stream selection handling fixes. + - d3d11compositor, d3d12compositor: Fix transparent background + mode with YUV output. + - d3d12converter: Make gamma remap work as intended. + - h264decoder: Update output frame duration for interlaced + video when second field frame is discarded. + - macOS audio device provider now listens to audio devices + being added/removed at runtime. + - Rust plugins: audioloudnorm, s3hlssink, gtk4paintablesink, + livesync and webrtcsink fixes. + - videoaggregator: preserve features in non-alpha caps for + subclasses with non-system memory sink caps. + - vtenc: Fix redistribute latency spam. + - v4l2: fixes for complex video formats. + - va: Fix strides when importing DMABUFs, dmabuf handle leaks, + and blocklist unmaintained Intel i965 driver for encoding. + - waylandsink: Fix surface cropping for rotated streams. + - webrtcdsp: Enable multi_channel processing to fix handling of + stereo streams. + - Various bug fixes, memory leak fixes, and other stability and + reliability improvements. + +------------------------------------------------------------------- Old: ---- gstreamer-1.24.5.tar.xz New: ---- gstreamer-1.24.6.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer.spec ++++++ --- /var/tmp/diff_new_pack.weYBMS/_old 2024-08-02 17:26:01.354051462 +0200 +++ /var/tmp/diff_new_pack.weYBMS/_new 2024-08-02 17:26:01.358051627 +0200 @@ -19,7 +19,7 @@ %define gst_branch 1.0 Name: gstreamer -Version: 1.24.5 +Version: 1.24.6 Release: 0 Summary: Streaming-Media Framework Runtime License: LGPL-2.1-or-later ++++++ gstreamer-1.24.5.tar.xz -> gstreamer-1.24.6.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/ChangeLog new/gstreamer-1.24.6/ChangeLog --- old/gstreamer-1.24.5/ChangeLog 2024-06-20 13:54:31.896203000 +0200 +++ new/gstreamer-1.24.6/ChangeLog 2024-07-29 17:41:49.923712500 +0200 @@ -1,3 +1,98 @@ +=== release 1.24.6 === + +2024-07-29 16:41:37 +0100 Tim-Philipp Müller <t...@centricular.com> + + * NEWS: + * RELEASE: + * gstreamer.doap: + * meson.build: + Release 1.24.6 + +2024-07-03 09:05:06 +0200 Guillaume Desmottes <guillaume.desmot...@onestream.live> + + * plugins/elements/gstdownloadbuffer.c: + downloadbuffer: send EOS in push mode + gst_download_buffer_read_buffer() returns FLOW_EOS but it was not + handled in the 'out_flushing' goto block which uses srcresult, + so EOS was not sent downstream. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7140> + +2024-07-03 09:16:47 +0200 Guillaume Desmottes <guillaume.desmot...@onestream.live> + + * plugins/elements/gstdownloadbuffer.c: + downloadbuffer: initialize upstream_size when activated in push mode + Push mode flow relies on upstream_size but it was not initialized when + activated as it is when activated in pull mode. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7140> + +2024-07-03 09:13:27 +0200 Guillaume Desmottes <guillaume.desmot...@onestream.live> + + * plugins/elements/gstdownloadbuffer.c: + downloadbuffer: init upstream_size to -1 + Code in check_upstream_size() is checking for -1 to check if + upstream_size has been set or not. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7140> + +2024-07-03 09:03:59 +0200 Guillaume Desmottes <guillaume.desmot...@onestream.live> + + * plugins/elements/gstdownloadbuffer.c: + downloadbuffer: properly log when receiving events + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7140> + +2024-07-02 15:56:12 +0100 Tim-Philipp Müller <t...@centricular.com> + + * gst/gstinfo.c: + info: remove unused valgrind header include + Follow-up to commit a2cbf75523cdf8a4df1baa7007d86ef455972245. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7129> + +2024-07-01 09:24:28 +0200 Edward Hervey <edw...@centricular.com> + + * tests/validate/gst-tester.c: + gstreamer/gst-tester: Don't leak thread + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7123> + +2024-06-29 17:12:12 +0200 Edward Hervey <edw...@centricular.com> + + * tools/gst-inspect.c: + gst-inspect: Fix leak of plugin/feature + Reordering changes the initial list head + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7123> + +2024-06-20 15:13:27 +0300 Sebastian Dröge <sebast...@centricular.com> + + * plugins/elements/gstmultiqueue.c: + * plugins/elements/gstqueue.c: + * plugins/elements/gstqueue2.c: + queue, queue2, multiqueue: Timestamps of gap events must be valid + This is checked in gst_event_new_gap() so doesn't have to be checked again here, + but simply can be asserted with a g_return_if_fail(). + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7075> + +2024-06-20 15:10:07 +0300 Sebastian Dröge <sebast...@centricular.com> + + * plugins/elements/gstmultiqueue.c: + * plugins/elements/gstqueue.c: + * plugins/elements/gstqueue2.c: + queue: queue2: multiqueue: Don't work with segment.position if buffers have no timestamps + If the first buffers have no timestamp then the sink position would be + initialized to 0. The source pad might output this buffer, which would then + initialize the source position to 0 too. + Afterwards two buffers with a valid but huge timestamp might arrive before any + of them are output on the source pad. The first one would set the sink position + to a huge value, the second one would notice that the difference between the + huge value and 0 is certainly larger than max-size-time and consider the queue + as full. + Instead, simply don't update the times from buffers without timestamps and + assume whatever was set before is still valid, i.e. the buffer has the same + timestamp as the previous one. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7075> + +2024-06-20 13:02:19 +0100 Tim-Philipp Müller <t...@centricular.com> + + * meson.build: + Back to development after 1.24.5 + === release 1.24.5 === 2024-06-20 12:54:15 +0100 Tim-Philipp Müller <t...@centricular.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/NEWS new/gstreamer-1.24.6/NEWS --- old/gstreamer-1.24.5/NEWS 2024-06-20 13:54:15.000000000 +0200 +++ new/gstreamer-1.24.6/NEWS 2024-07-29 17:41:37.000000000 +0200 @@ -2,11 +2,11 @@ GStreamer 1.24.0 was originally released on 4 March 2024. -The latest bug-fix release in the stable 1.24 series is 1.24.5 and was released on 20 June 2024. +The latest bug-fix release in the stable 1.24 series is 1.24.6 and was released on 29 July 2024. See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document. -Last updated: Wednesday 20 June 2024, 22:35 UTC (log) +Last updated: Monday 29 July 2024, 14:30 UTC (log) ## Introduction @@ -2114,13 +2114,13 @@ Cerbero build tool and packaging changes in 1.24.5 -- No changes +- osxrelocator: Fix RPATHs in deeply nested libraries Contributors to 1.24.5 Angelo Verlain, Chris Del Guercio, Corentin Damman, Edward Hervey, Francisco Javier Velázquez-GarcÃa, He Junyan, Jakub Adam, -Jakub VanÄk, Khem Raj, Martin Nordholts, Mathieu Duponchelle, Nirbheek Chauhan, Piotr BrzeziÅski, Samuel Thibault, Sebastian -Dröge, Sergey Krivohatskiy, Seungha Yang, Tim-Philipp Müller, Zach van Rijn, +Jakub VanÄk, Khem Raj, L. E. Segovia, Martin Nordholts, Mathieu Duponchelle, Nirbheek Chauhan, Piotr BrzeziÅski, Samuel +Thibault, Sebastian Dröge, Sergey Krivohatskiy, Seungha Yang, Tim-Philipp Müller, Zach van Rijn, ⦠and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! @@ -2129,6 +2129,166 @@ - List of Merge Requests applied in 1.24.5 - List of Issues fixed in 1.24.5 +1.24.6 + +The sixth 1.24 bug-fix release (1.24.6) was released on 29 July 2024. + +This release only contains bugfixes and it should be safe to update from 1.24.x. + +Highlighted bugfixes in 1.24.6 + +- Fix compatibility with FFmpeg 7.0 +- qmlglsink: Fix failure to display content on recent Android devices +- adaptivedemux: Fix handling of closed caption streams +- cuda: Fix runtime compiler loading with old CUDA tookit +- decodebin3 stream selection handling fixes +- d3d11compositor, d3d12compositor: Fix transparent background mode with YUV output +- d3d12converter: Make gamma remap work as intended +- h264decoder: Update output frame duration for interlaced video when second field frame is discarded +- macOS audio device provider now listens to audio devices being added/removed at runtime +- Rust plugins: audioloudnorm, s3hlssink, gtk4paintablesink, livesync and webrtcsink fixes +- videoaggregator: preserve features in non-alpha caps for subclasses with non-system memory sink caps +- vtenc: Fix redistribute latency spam +- v4l2: fixes for complex video formats +- va: Fix strides when importing DMABUFs, dmabuf handle leaks, and blocklist unmaintained Intel i965 driver for encoding +- waylandsink: Fix surface cropping for rotated streams +- webrtcdsp: Enable multi_channel processing to fix handling of stereo streams +- Various bug fixes, memory leak fixes, and other stability and reliability improvements + +gstreamer + +- downloadbuffer: fix push mode +- queue: queue2: multiqueue: Donât work with segment.position if buffers have no timestamps +- gst-inspect-1.0: Fix leak of plugin/feature + +gst-plugins-base + +- decodebin3: Fix detection of selection done +- glvideomixer: Fix critical when setting start-time-selection +- parsebin: accept-caps handling for elements with unusual sink pad names +- subparse: Donât use jit for regular expressions when running in valgrind +- subparse: put valgrind header availability define into config.h for subparse +- videoaggregator: preserve features in non-alpha caps +- videoscale: correct classification error +- meson: Fix invalid include flag in uninstalled gl pc file +- Fix various memory leaks + +gst-plugins-good + +- adaptivedemux: Fix handling closed caption streams +- qml/glsink: also support GLES2 needing shader âprecisionâ directives +- v4l2object: use v4l2 reported width for padded_width when complex video formats +- v4l2: meson: fix SIZEOF_OFF_T when cross-compiling with Meson >= 1.3.0 + +gst-plugins-bad + +- svtav1enc: Fix segfault when flushing +- avfdeviceprovider: Fix debug category initialization +- osxaudiodeviceprovider: Listen for audio devices being added/removed +- avtp: Fixed Linux/Alpine 3.20 build +- cuda: Fix runtime compiler loading with old CUDA tookit +- d3d11compositor, d3d12compositor: Fix transparent background mode with YUV output +- d3d11converter: Fix runtime compiled shader code +- d3d12converter: Make gamma remap work as intended +- h264decoder: Update output frame duration when second field frame is discarded +- isac: Work around upstream having no shared library support for MSVC +- lc3: remove bitstream comparison in the tests +- qroverlay: redraw overlay when caps changes +- qsv: Fix critical warnings +- rtmp2: guard against calling gst_amf_node_get_type() with NULL +- srtsrc: fix case fallthrough of authentication param +- va: Blocklist unmaintained i965 driver for encoding +- va: Fix strides when importing DMABUFs +- va: Fix dmabuf handle leaks +- vadisplay: fix minor version check +- vkh265dec: Fix H.264 ref in logs +- vulkan: fix wrong stages or access in barriers +- vtenc: Fix redistribute latency spam +- waylandsink: Fix surface cropping for rotated streams +- webrtcdsp: Enable multi_channel processing + +gst-plugins-ugly + +- asfdemux: Be more lenient towards malformed header, fixes playback of files written by VLC + +GStreamer Rust plugins + +- audioloudnorm: Fix limiter buffer index wraparound off-by-one for the last buffer +- aws: s3hlssink: Do not call abort before finishing uploads +- gtk4paintablesink: Support RGBx formats in SW paths +- gtk4paintablesink: default to force-aspect-ratio=false for Paintable +- livesync: Use the actual output buffer duration of gap filler buffers +- livesync: Allow queueing up to latency buffers, also sync on the first buffer and add sync property +- webrtcsink: fix property types for rav1enc AV1 encoder + +gst-libav + +- Fix compatibility with ffmpeg 7 +- avauddec: Fix crash on stop() +- avmux: Fix crash when muxer doesnât get codecid + +gst-rtsp-server + +- No changes + +gstreamer-vaapi + +- No changes + +gstreamer-sharp + +- No changes + +gst-omx + +- No changes + +gst-python + +- No changes + +gst-editing-services + +- ges: Various leak fixes + +gst-devtools, gst-validate + gst-integration-testsuites + +- validate: Remove G_REGEX_OPTIMIZE usage, helps avoid valgrind issues + +gst-examples + +- No changes + +Development build environment + +- libgudev wrap: add fallback uri +- liblc3 wrap: update to v1.1.1 + +Cerbero build tool and packaging changes in 1.24.6 + +- meson: Backport fix for Glib including a GCC-only flag in the pkg-config file +- libsoup: Workaround build error with GCC 14 +- libltc: Fix Windows build +- webrtc-audio-processing: Fix MinGW build +- libvpx: Also build a shared lib on macOS +- glib: Fix Windows build +- osxrelocator: Fix framework entrypoints being unable to load dylibs +- gobject-introspection, recipe: Fix more fallout from the Meson dylib ID fixes +- cargo-c.recipe: Ensure that we can change the id and rpath + +Contributors to 1.24.6 + +Chris Spoelstra, Edward Hervey, François Laignel, Guillaume Desmottes, Jakub Adam, Jan Schmidt, Jordan Petridis, L. E. Segovia, +Loïc Yhuel, Matthew Waters, Nirbheek Chauhan, Piotr BrzeziÅski, Robert Mader, Ruben Gonzalez, Sanchayan Maity, Sebastian Dröge, +Sebastian Gross, Seungha Yang, Shengqi Yu, Taruntej Kanakamalla, Tim-Philipp Müller, tomaszmi, VÃctor Manuel Jáquez Leal, + +⦠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.24.6 + +- List of Merge Requests applied in 1.24.6 +- List of Issues fixed in 1.24.6 + Schedule for 1.26 Our next major feature release will be 1.26, and 1.25 will be the unstable development version leading up to the stable 1.26 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/RELEASE new/gstreamer-1.24.6/RELEASE --- old/gstreamer-1.24.5/RELEASE 2024-06-20 13:54:15.000000000 +0200 +++ new/gstreamer-1.24.6/RELEASE 2024-07-29 17:41:37.000000000 +0200 @@ -1,4 +1,4 @@ -This is GStreamer core 1.24.5. +This is GStreamer core 1.24.6. 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' old/gstreamer-1.24.5/gst/gstinfo.c new/gstreamer-1.24.6/gst/gstinfo.c --- old/gstreamer-1.24.5/gst/gstinfo.c 2024-06-20 13:54:15.000000000 +0200 +++ new/gstreamer-1.24.6/gst/gstinfo.c 2024-07-29 17:41:37.000000000 +0200 @@ -106,9 +106,6 @@ #include "gstvalue.h" #include "gstcapsfeatures.h" -#ifdef HAVE_VALGRIND_VALGRIND_H -# include <valgrind/valgrind.h> -#endif #endif /* GST_DISABLE_GST_DEBUG */ #include <glib/gprintf.h> /* g_sprintf */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/gstreamer.doap new/gstreamer-1.24.6/gstreamer.doap --- old/gstreamer-1.24.5/gstreamer.doap 2024-06-20 13:54:15.000000000 +0200 +++ new/gstreamer-1.24.6/gstreamer.doap 2024-07-29 17:41:37.000000000 +0200 @@ -40,6 +40,16 @@ <release> <Version> + <revision>1.24.6</revision> + <branch>1.24</branch> + <name></name> + <created>2024-07-29</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.24.6.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.24.5</revision> <branch>1.24</branch> <name></name> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/meson.build new/gstreamer-1.24.6/meson.build --- old/gstreamer-1.24.5/meson.build 2024-06-20 13:54:15.000000000 +0200 +++ new/gstreamer-1.24.6/meson.build 2024-07-29 17:41:37.000000000 +0200 @@ -1,5 +1,5 @@ project('gstreamer', 'c', - version : '1.24.5', + version : '1.24.6', meson_version : '>= 1.1', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/plugins/elements/gstdownloadbuffer.c new/gstreamer-1.24.6/plugins/elements/gstdownloadbuffer.c --- old/gstreamer-1.24.5/plugins/elements/gstdownloadbuffer.c 2024-06-20 13:54:15.000000000 +0200 +++ new/gstreamer-1.24.6/plugins/elements/gstdownloadbuffer.c 2024-07-29 17:41:37.000000000 +0200 @@ -1007,6 +1007,8 @@ dlbuf = GST_DOWNLOAD_BUFFER (parent); + GST_DEBUG_OBJECT (dlbuf, "%" GST_PTR_FORMAT, event); + switch (GST_EVENT_TYPE (event)) { case GST_EVENT_FLUSH_START: { @@ -1323,8 +1325,10 @@ GST_DOWNLOAD_BUFFER_MUTEX_LOCK_CHECK (dlbuf, dlbuf->srcresult, out_flushing); ret = gst_download_buffer_read_buffer (dlbuf, -1, -1, &buffer); - if (ret != GST_FLOW_OK) + if (ret != GST_FLOW_OK) { + dlbuf->srcresult = ret; goto out_flushing; + } if (dlbuf->stream_start_event != NULL) { gst_pad_push_event (dlbuf->srcpad, dlbuf->stream_start_event); @@ -1384,10 +1388,7 @@ gboolean res = TRUE; GstDownloadBuffer *dlbuf = GST_DOWNLOAD_BUFFER (parent); -#ifndef GST_DISABLE_GST_DEBUG - GST_DEBUG_OBJECT (dlbuf, "got event %p (%s)", - event, GST_EVENT_TYPE_NAME (event)); -#endif + GST_DEBUG_OBJECT (dlbuf, "%" GST_PTR_FORMAT, event); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_FLUSH_START: @@ -1731,6 +1732,7 @@ dlbuf->srcresult = GST_FLOW_OK; dlbuf->sinkresult = GST_FLOW_OK; dlbuf->unexpected = FALSE; + dlbuf->upstream_size = -1; result = gst_pad_start_task (pad, (GstTaskFunction) gst_download_buffer_loop, pad, NULL); @@ -1770,7 +1772,7 @@ dlbuf->srcresult = GST_FLOW_OK; dlbuf->sinkresult = GST_FLOW_OK; dlbuf->unexpected = FALSE; - dlbuf->upstream_size = 0; + dlbuf->upstream_size = -1; GST_DOWNLOAD_BUFFER_MUTEX_UNLOCK (dlbuf); } else { GST_DOWNLOAD_BUFFER_MUTEX_LOCK (dlbuf); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/plugins/elements/gstmultiqueue.c new/gstreamer-1.24.6/plugins/elements/gstmultiqueue.c --- old/gstreamer-1.24.5/plugins/elements/gstmultiqueue.c 2024-06-20 13:54:15.000000000 +0200 +++ new/gstreamer-1.24.6/plugins/elements/gstmultiqueue.c 2024-07-29 17:41:37.000000000 +0200 @@ -1836,10 +1836,15 @@ GST_MULTI_QUEUE_MUTEX_LOCK (mq); - /* if no timestamp is set, assume it's continuous with the previous - * time */ - if (timestamp == GST_CLOCK_TIME_NONE) - timestamp = segment->position; + /* if no timestamp is set, assume it didn't change compared to the previous + * buffer and simply return here. Non-time limits might have still changed + * and a buffering message might have to be posted */ + if (timestamp == GST_CLOCK_TIME_NONE) { + update_buffering (mq, sq); + GST_MULTI_QUEUE_MUTEX_UNLOCK (mq); + gst_multi_queue_post_buffering (mq); + return; + } if (is_sink && !GST_CLOCK_STIME_IS_VALID (sq->sink_start_time)) { sq->sink_start_time = my_segment_to_running_time (segment, timestamp); @@ -1875,36 +1880,36 @@ GstClockTime duration; gboolean is_sink = segment == &sq->sink_segment; - GST_MULTI_QUEUE_MUTEX_LOCK (mq); - gst_event_parse_gap (event, ×tamp, &duration); - if (GST_CLOCK_TIME_IS_VALID (timestamp)) { - if (is_sink && !GST_CLOCK_STIME_IS_VALID (sq->sink_start_time)) { - sq->sink_start_time = my_segment_to_running_time (segment, timestamp); - GST_DEBUG_ID (sq->debug_id, "Start time updated to %" GST_STIME_FORMAT, - GST_STIME_ARGS (sq->sink_start_time)); - } - - if (GST_CLOCK_TIME_IS_VALID (duration)) { - timestamp += duration; - } - - GST_DEBUG_ID (sq->debug_id, - "%s position updated to %" GST_TIME_FORMAT, - is_sink ? "sink" : "src", GST_TIME_ARGS (timestamp)); - - segment->position = timestamp; - - if (is_sink) - sq->sink_tainted = TRUE; - else - sq->src_tainted = TRUE; + g_return_if_fail (GST_CLOCK_TIME_IS_VALID (timestamp)); + + GST_MULTI_QUEUE_MUTEX_LOCK (mq); + + if (is_sink && !GST_CLOCK_STIME_IS_VALID (sq->sink_start_time)) { + sq->sink_start_time = my_segment_to_running_time (segment, timestamp); + GST_DEBUG_ID (sq->debug_id, "Start time updated to %" GST_STIME_FORMAT, + GST_STIME_ARGS (sq->sink_start_time)); + } - /* calc diff with other end */ - update_time_level (mq, sq); + if (GST_CLOCK_TIME_IS_VALID (duration)) { + timestamp += duration; } + GST_DEBUG_ID (sq->debug_id, + "%s position updated to %" GST_TIME_FORMAT, + is_sink ? "sink" : "src", GST_TIME_ARGS (timestamp)); + + segment->position = timestamp; + + if (is_sink) + sq->sink_tainted = TRUE; + else + sq->src_tainted = TRUE; + + /* calc diff with other end */ + update_time_level (mq, sq); + GST_MULTI_QUEUE_MUTEX_UNLOCK (mq); gst_multi_queue_post_buffering (mq); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/plugins/elements/gstqueue.c new/gstreamer-1.24.6/plugins/elements/gstqueue.c --- old/gstreamer-1.24.5/plugins/elements/gstqueue.c 2024-06-20 13:54:15.000000000 +0200 +++ new/gstreamer-1.24.6/plugins/elements/gstqueue.c 2024-07-29 17:41:37.000000000 +0200 @@ -608,27 +608,27 @@ gst_event_parse_gap (event, ×tamp, &duration); - if (GST_CLOCK_TIME_IS_VALID (timestamp)) { - if (is_sink && !GST_CLOCK_STIME_IS_VALID (queue->sink_start_time)) { - queue->sink_start_time = my_segment_to_running_time (segment, timestamp); - GST_DEBUG_OBJECT (queue, "Start time updated to %" GST_STIME_FORMAT, - GST_STIME_ARGS (queue->sink_start_time)); - } - - if (GST_CLOCK_TIME_IS_VALID (duration)) { - timestamp += duration; - } - - segment->position = timestamp; - - if (is_sink) - queue->sink_tainted = TRUE; - else - queue->src_tainted = TRUE; + g_return_if_fail (GST_CLOCK_TIME_IS_VALID (timestamp)); - /* calc diff with other end */ - update_time_level (queue); + if (is_sink && !GST_CLOCK_STIME_IS_VALID (queue->sink_start_time)) { + queue->sink_start_time = my_segment_to_running_time (segment, timestamp); + GST_DEBUG_OBJECT (queue, "Start time updated to %" GST_STIME_FORMAT, + GST_STIME_ARGS (queue->sink_start_time)); } + + if (GST_CLOCK_TIME_IS_VALID (duration)) { + timestamp += duration; + } + + segment->position = timestamp; + + if (is_sink) + queue->sink_tainted = TRUE; + else + queue->src_tainted = TRUE; + + /* calc diff with other end */ + update_time_level (queue); } @@ -642,10 +642,10 @@ timestamp = GST_BUFFER_DTS_OR_PTS (buffer); duration = GST_BUFFER_DURATION (buffer); - /* if no timestamp is set, assume it's continuous with the previous - * time */ + /* if no timestamp is set, assume it didn't change compared to the previous + * buffer and simply return here */ if (timestamp == GST_CLOCK_TIME_NONE) - timestamp = segment->position; + return; if (is_sink && !GST_CLOCK_STIME_IS_VALID (queue->sink_start_time) && GST_CLOCK_TIME_IS_VALID (timestamp)) { @@ -696,7 +696,8 @@ data->timestamp = btime; } - if (GST_BUFFER_DURATION_IS_VALID (*buf)) + if (GST_BUFFER_DURATION_IS_VALID (*buf) + && GST_CLOCK_TIME_IS_VALID (data->timestamp)) data->timestamp += GST_BUFFER_DURATION (*buf); GST_TRACE ("ts now %" GST_TIME_FORMAT, GST_TIME_ARGS (data->timestamp)); @@ -713,11 +714,15 @@ data.first_timestamp = GST_CLOCK_TIME_NONE; - /* if no timestamp is set, assume it's continuous with the previous time */ - data.timestamp = segment->position; + /* if no timestamp is set, assume it didn't change compared to the previous + * buffer and simply return here without updating */ + data.timestamp = GST_CLOCK_TIME_NONE; gst_buffer_list_foreach (buffer_list, buffer_list_apply_time, &data); + if (!GST_CLOCK_TIME_IS_VALID (data.timestamp)) + return; + if (is_sink && !GST_CLOCK_STIME_IS_VALID (queue->sink_start_time) && GST_CLOCK_TIME_IS_VALID (data.first_timestamp)) { queue->sink_start_time = my_segment_to_running_time (segment, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/plugins/elements/gstqueue2.c new/gstreamer-1.24.6/plugins/elements/gstqueue2.c --- old/gstreamer-1.24.5/plugins/elements/gstqueue2.c 2024-06-20 13:54:15.000000000 +0200 +++ new/gstreamer-1.24.6/plugins/elements/gstqueue2.c 2024-07-29 17:41:37.000000000 +0200 @@ -832,28 +832,28 @@ gst_event_parse_gap (event, ×tamp, &duration); - if (GST_CLOCK_TIME_IS_VALID (timestamp)) { - if (is_sink && !GST_CLOCK_TIME_IS_VALID (queue->sink_start_time)) { - queue->sink_start_time = gst_segment_to_running_time (segment, - GST_FORMAT_TIME, timestamp); - GST_DEBUG_OBJECT (queue, "Start time updated to %" GST_TIME_FORMAT, - GST_TIME_ARGS (queue->sink_start_time)); - } + g_return_if_fail (GST_CLOCK_TIME_IS_VALID (timestamp)); - if (GST_CLOCK_TIME_IS_VALID (duration)) { - timestamp += duration; - } + if (is_sink && !GST_CLOCK_TIME_IS_VALID (queue->sink_start_time)) { + queue->sink_start_time = gst_segment_to_running_time (segment, + GST_FORMAT_TIME, timestamp); + GST_DEBUG_OBJECT (queue, "Start time updated to %" GST_TIME_FORMAT, + GST_TIME_ARGS (queue->sink_start_time)); + } - segment->position = timestamp; + if (GST_CLOCK_TIME_IS_VALID (duration)) { + timestamp += duration; + } - if (is_sink) - queue->sink_tainted = TRUE; - else - queue->src_tainted = TRUE; + segment->position = timestamp; - /* calc diff with other end */ - update_time_level (queue); - } + if (is_sink) + queue->sink_tainted = TRUE; + else + queue->src_tainted = TRUE; + + /* calc diff with other end */ + update_time_level (queue); } static void @@ -896,6 +896,12 @@ GstClockTime duration, timestamp; timestamp = GST_BUFFER_DTS_OR_PTS (buffer); + + /* if no timestamp is set, assume it didn't change compared to the previous + * buffer and simply return here */ + if (timestamp == GST_CLOCK_TIME_NONE) + return; + duration = GST_BUFFER_DURATION (buffer); /* If we have no duration, pick one from the bitrate if we can */ @@ -919,11 +925,6 @@ } } - /* if no timestamp is set, assume it's continuous with the previous - * time */ - if (timestamp == GST_CLOCK_TIME_NONE) - timestamp = segment->position; - if (is_sink && !GST_CLOCK_TIME_IS_VALID (queue->sink_start_time) && GST_CLOCK_TIME_IS_VALID (timestamp)) { queue->sink_start_time = gst_segment_to_running_time (segment, @@ -978,16 +979,16 @@ *timestamp = btime; } - if (GST_BUFFER_DURATION_IS_VALID (*buf)) + if (GST_BUFFER_DURATION_IS_VALID (*buf) + && GST_CLOCK_TIME_IS_VALID (*timestamp)) { *timestamp += GST_BUFFER_DURATION (*buf); - else if (bld->bitrate != 0) { + } else if (bld->bitrate != 0 && GST_CLOCK_TIME_IS_VALID (*timestamp)) { guint64 size = gst_buffer_get_size (*buf); /* If we have no duration, pick one from the bitrate if we can */ *timestamp += gst_util_uint64_scale (bld->bitrate, 8 * GST_SECOND, size); } - GST_TRACE ("ts now %" GST_TIME_FORMAT, GST_TIME_ARGS (*timestamp)); return TRUE; } @@ -1001,8 +1002,9 @@ bld.first_timestamp = GST_CLOCK_TIME_NONE; - /* if no timestamp is set, assume it's continuous with the previous time */ - bld.timestamp = segment->position; + /* if no timestamp is set, assume it didn't change compared to the previous + * buffer and simply return here without updating */ + bld.timestamp = GST_CLOCK_TIME_NONE; bld.bitrate = 0; if (queue->use_tags_bitrate) { @@ -1017,6 +1019,9 @@ gst_buffer_list_foreach (buffer_list, buffer_list_apply_time, &bld); + if (!GST_CLOCK_TIME_IS_VALID (bld.timestamp)) + return; + if (is_sink && !GST_CLOCK_TIME_IS_VALID (queue->sink_start_time) && GST_CLOCK_TIME_IS_VALID (bld.first_timestamp)) { queue->sink_start_time = gst_segment_to_running_time (segment, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/po/gstreamer-1.0.pot new/gstreamer-1.24.6/po/gstreamer-1.0.pot --- old/gstreamer-1.24.5/po/gstreamer-1.0.pot 2024-06-20 13:54:31.576200500 +0200 +++ new/gstreamer-1.24.6/po/gstreamer-1.0.pot 2024-07-29 17:41:49.615709800 +0200 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gstreamer-1.24.5\n" +"Project-Id-Version: gstreamer-1.24.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-20 12:54+0100\n" +"POT-Creation-Date: 2024-07-29 16:41+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <l...@li.org>\n" @@ -1193,7 +1193,7 @@ msgstr "" #: libs/gst/base/gstbasesrc.c:2776 plugins/elements/gstdownloadbuffer.c:850 -#: plugins/elements/gstdownloadbuffer.c:1275 +#: plugins/elements/gstdownloadbuffer.c:1277 msgid "Failed to map buffer." msgstr "" @@ -1215,22 +1215,22 @@ msgid "Filter caps change behaviour" msgstr "" -#: plugins/elements/gstdownloadbuffer.c:935 plugins/elements/gstqueue2.c:1842 +#: plugins/elements/gstdownloadbuffer.c:935 plugins/elements/gstqueue2.c:1847 msgid "No Temp directory specified." msgstr "" -#: plugins/elements/gstdownloadbuffer.c:941 plugins/elements/gstqueue2.c:1848 +#: plugins/elements/gstdownloadbuffer.c:941 plugins/elements/gstqueue2.c:1853 #, c-format msgid "Could not create temp file \"%s\"." msgstr "" #: plugins/elements/gstdownloadbuffer.c:949 plugins/elements/gstfilesrc.c:590 -#: plugins/elements/gstqueue2.c:1856 +#: plugins/elements/gstqueue2.c:1861 #, c-format msgid "Could not open file \"%s\" for reading." msgstr "" -#: plugins/elements/gstdownloadbuffer.c:1284 plugins/elements/gstqueue2.c:2270 +#: plugins/elements/gstdownloadbuffer.c:1286 plugins/elements/gstqueue2.c:2275 msgid "Error while writing to download file." msgstr "" @@ -1360,7 +1360,7 @@ msgid "Blacklisted files:" msgstr "" -#: tools/gst-inspect.c:1288 tools/gst-inspect.c:1425 +#: tools/gst-inspect.c:1288 tools/gst-inspect.c:1427 #, c-format msgid "%sTotal count%s: %s" msgstr "" @@ -1372,36 +1372,36 @@ msgstr[0] "" msgstr[1] "" -#: tools/gst-inspect.c:1427 +#: tools/gst-inspect.c:1429 #, c-format msgid "%d plugin" msgid_plural "%d plugins" msgstr[0] "" msgstr[1] "" -#: tools/gst-inspect.c:1430 +#: tools/gst-inspect.c:1432 #, c-format msgid "%d blacklist entry" msgid_plural "%d blacklist entries" msgstr[0] "" msgstr[1] "" -#: tools/gst-inspect.c:1435 +#: tools/gst-inspect.c:1437 #, c-format msgid "%d feature" msgid_plural "%d features" msgstr[0] "" msgstr[1] "" -#: tools/gst-inspect.c:2186 +#: tools/gst-inspect.c:2188 msgid "Print all elements" msgstr "" -#: tools/gst-inspect.c:2188 +#: tools/gst-inspect.c:2190 msgid "Print list of blacklisted files" msgstr "" -#: tools/gst-inspect.c:2190 +#: tools/gst-inspect.c:2192 msgid "" "Print a machine-parsable list of features the specified plugin or all " "plugins provide.\n" @@ -1409,46 +1409,46 @@ "automatic plugin installation mechanisms" msgstr "" -#: tools/gst-inspect.c:2195 +#: tools/gst-inspect.c:2197 msgid "List the plugin contents" msgstr "" -#: tools/gst-inspect.c:2197 +#: tools/gst-inspect.c:2199 msgid "" "A slashes ('/') separated list of types of elements (also known as klass) to " "list. (unordered)" msgstr "" -#: tools/gst-inspect.c:2200 +#: tools/gst-inspect.c:2202 msgid "Check if the specified element or plugin exists" msgstr "" -#: tools/gst-inspect.c:2203 +#: tools/gst-inspect.c:2205 msgid "" "When checking if an element or plugin exists, also check that its version is " "at least the version specified" msgstr "" -#: tools/gst-inspect.c:2207 +#: tools/gst-inspect.c:2209 msgid "Print supported URI schemes, with the elements that implement them" msgstr "" -#: tools/gst-inspect.c:2212 +#: tools/gst-inspect.c:2214 msgid "" "Disable colors in output. You can also achieve the same by setting " "'GST_INSPECT_NO_COLORS' environment variable to any value." msgstr "" -#: tools/gst-inspect.c:2220 +#: tools/gst-inspect.c:2222 msgid "Color output, even when not sending to a tty." msgstr "" -#: tools/gst-inspect.c:2394 +#: tools/gst-inspect.c:2396 #, c-format msgid "Could not load plugin file: %s\n" msgstr "" -#: tools/gst-inspect.c:2400 +#: tools/gst-inspect.c:2402 #, c-format msgid "No such element or plugin '%s'\n" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/po/gstreamer.pot new/gstreamer-1.24.6/po/gstreamer.pot --- old/gstreamer-1.24.5/po/gstreamer.pot 2024-06-20 13:54:31.576200500 +0200 +++ new/gstreamer-1.24.6/po/gstreamer.pot 2024-07-29 17:41:49.615709800 +0200 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gstreamer-1.24.5\n" +"Project-Id-Version: gstreamer-1.24.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-20 12:54+0100\n" +"POT-Creation-Date: 2024-07-29 16:41+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <l...@li.org>\n" @@ -1193,7 +1193,7 @@ msgstr "" #: libs/gst/base/gstbasesrc.c:2776 plugins/elements/gstdownloadbuffer.c:850 -#: plugins/elements/gstdownloadbuffer.c:1275 +#: plugins/elements/gstdownloadbuffer.c:1277 msgid "Failed to map buffer." msgstr "" @@ -1215,22 +1215,22 @@ msgid "Filter caps change behaviour" msgstr "" -#: plugins/elements/gstdownloadbuffer.c:935 plugins/elements/gstqueue2.c:1842 +#: plugins/elements/gstdownloadbuffer.c:935 plugins/elements/gstqueue2.c:1847 msgid "No Temp directory specified." msgstr "" -#: plugins/elements/gstdownloadbuffer.c:941 plugins/elements/gstqueue2.c:1848 +#: plugins/elements/gstdownloadbuffer.c:941 plugins/elements/gstqueue2.c:1853 #, c-format msgid "Could not create temp file \"%s\"." msgstr "" #: plugins/elements/gstdownloadbuffer.c:949 plugins/elements/gstfilesrc.c:590 -#: plugins/elements/gstqueue2.c:1856 +#: plugins/elements/gstqueue2.c:1861 #, c-format msgid "Could not open file \"%s\" for reading." msgstr "" -#: plugins/elements/gstdownloadbuffer.c:1284 plugins/elements/gstqueue2.c:2270 +#: plugins/elements/gstdownloadbuffer.c:1286 plugins/elements/gstqueue2.c:2275 msgid "Error while writing to download file." msgstr "" @@ -1360,7 +1360,7 @@ msgid "Blacklisted files:" msgstr "" -#: tools/gst-inspect.c:1288 tools/gst-inspect.c:1425 +#: tools/gst-inspect.c:1288 tools/gst-inspect.c:1427 #, c-format msgid "%sTotal count%s: %s" msgstr "" @@ -1372,36 +1372,36 @@ msgstr[0] "" msgstr[1] "" -#: tools/gst-inspect.c:1427 +#: tools/gst-inspect.c:1429 #, c-format msgid "%d plugin" msgid_plural "%d plugins" msgstr[0] "" msgstr[1] "" -#: tools/gst-inspect.c:1430 +#: tools/gst-inspect.c:1432 #, c-format msgid "%d blacklist entry" msgid_plural "%d blacklist entries" msgstr[0] "" msgstr[1] "" -#: tools/gst-inspect.c:1435 +#: tools/gst-inspect.c:1437 #, c-format msgid "%d feature" msgid_plural "%d features" msgstr[0] "" msgstr[1] "" -#: tools/gst-inspect.c:2186 +#: tools/gst-inspect.c:2188 msgid "Print all elements" msgstr "" -#: tools/gst-inspect.c:2188 +#: tools/gst-inspect.c:2190 msgid "Print list of blacklisted files" msgstr "" -#: tools/gst-inspect.c:2190 +#: tools/gst-inspect.c:2192 msgid "" "Print a machine-parsable list of features the specified plugin or all " "plugins provide.\n" @@ -1409,46 +1409,46 @@ "automatic plugin installation mechanisms" msgstr "" -#: tools/gst-inspect.c:2195 +#: tools/gst-inspect.c:2197 msgid "List the plugin contents" msgstr "" -#: tools/gst-inspect.c:2197 +#: tools/gst-inspect.c:2199 msgid "" "A slashes ('/') separated list of types of elements (also known as klass) to " "list. (unordered)" msgstr "" -#: tools/gst-inspect.c:2200 +#: tools/gst-inspect.c:2202 msgid "Check if the specified element or plugin exists" msgstr "" -#: tools/gst-inspect.c:2203 +#: tools/gst-inspect.c:2205 msgid "" "When checking if an element or plugin exists, also check that its version is " "at least the version specified" msgstr "" -#: tools/gst-inspect.c:2207 +#: tools/gst-inspect.c:2209 msgid "Print supported URI schemes, with the elements that implement them" msgstr "" -#: tools/gst-inspect.c:2212 +#: tools/gst-inspect.c:2214 msgid "" "Disable colors in output. You can also achieve the same by setting " "'GST_INSPECT_NO_COLORS' environment variable to any value." msgstr "" -#: tools/gst-inspect.c:2220 +#: tools/gst-inspect.c:2222 msgid "Color output, even when not sending to a tty." msgstr "" -#: tools/gst-inspect.c:2394 +#: tools/gst-inspect.c:2396 #, c-format msgid "Could not load plugin file: %s\n" msgstr "" -#: tools/gst-inspect.c:2400 +#: tools/gst-inspect.c:2402 #, c-format msgid "No such element or plugin '%s'\n" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/tests/validate/gst-tester.c new/gstreamer-1.24.6/tests/validate/gst-tester.c --- old/gstreamer-1.24.5/tests/validate/gst-tester.c 2024-06-20 13:54:15.000000000 +0200 +++ new/gstreamer-1.24.6/tests/validate/gst-tester.c 2024-07-29 17:41:37.000000000 +0200 @@ -156,6 +156,7 @@ GError *err = NULL; gchar *filename; gboolean is_tty = isatty (STDOUT_FILENO); + GThread *thread; if (argc < 2) { g_print ("1..0\nnot ok # Missing <testfile> argument\n"); @@ -210,9 +211,10 @@ /* Running the subprocess in it own thread so that we can properly catch * interuptions in the main thread main loop */ - g_thread_new ("gst-tester-thread", (GThreadFunc) _run_app, &app); + thread = g_thread_new ("gst-tester-thread", (GThreadFunc) _run_app, &app); g_main_loop_run (app.ml); g_main_loop_unref (app.ml); + g_thread_join (thread); g_strfreev (args); return app.exitcode; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.5/tools/gst-inspect.c new/gstreamer-1.24.6/tools/gst-inspect.c --- old/gstreamer-1.24.5/tools/gst-inspect.c 2024-06-20 13:54:15.000000000 +0200 +++ new/gstreamer-1.24.6/tools/gst-inspect.c 2024-07-29 17:41:37.000000000 +0200 @@ -1322,7 +1322,8 @@ orig_plugins = plugins = gst_registry_get_plugin_list (gst_registry_get ()); if (sort_output == SORT_TYPE_NAME) - plugins = g_list_sort (plugins, gst_plugin_name_compare_func); + orig_plugins = plugins = + g_list_sort (plugins, gst_plugin_name_compare_func); while (plugins) { GList *features, *orig_features; GstPlugin *plugin; @@ -1340,7 +1341,8 @@ gst_registry_get_feature_list_by_plugin (gst_registry_get (), gst_plugin_get_name (plugin)); if (sort_output == SORT_TYPE_NAME) - features = g_list_sort (features, gst_plugin_feature_name_compare_func); + orig_features = features = + g_list_sort (features, gst_plugin_feature_name_compare_func); while (features) { GstPluginFeature *feature;