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-11-07 16:24:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gstreamer (Old) and /work/SRC/openSUSE:Factory/.gstreamer.new.2020 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer" Thu Nov 7 16:24:05 2024 rev:102 rq:1221742 version:1.24.9 Changes: -------- --- /work/SRC/openSUSE:Factory/gstreamer/gstreamer.changes 2024-09-25 21:51:26.611667615 +0200 +++ /work/SRC/openSUSE:Factory/.gstreamer.new.2020/gstreamer.changes 2024-11-07 16:24:11.517671176 +0100 @@ -1,0 +2,46 @@ +Tue Nov 5 09:33:25 UTC 2024 - Bjørn Lie <[email protected]> + +- Update to version 1.24.9: + + Highlighted bugfixes: + - gst-rtsp-server security fix + - GstAggregator start time selection and latency query fixes + for force-live mode + - audioconvert: fix dynamic handling of mix matrix, and accept + custom upstream event for setting one + - encodebin: fix parser selection for encoders that support + multiple codecs + - flvmux improvments for pipelines where timestamps don't start + at 0 + - glcontext: egl: Unrestrict the support base DRM formats + - kms: Add IMX-DCSS auto-detection in sink and fix stride with + planar formats in allocator + - macOS main application event loop fixes + - mpegtsdemux: Handle PTS/DTS wraparound with ignore-pcr=true + - playbin3, decodebin3, parsebin, urisourcebin: fix races, and + improve stability and stream-collection handling + - rtpmanager: fix early RTCP SR generation for sparse streams + like metadata + - qml6glsrc: Reduce capture delay + - qtdemux: fix parsing of rotation matrix with 180 degree + rotation + - rtpav1depay: added wait-for-keyframe and request-keyframe + properties + - srt: make work with newer libsrt versions and don't + re-connect on authentication failure + - v4l2 fixes and improvement + - webrtcsink, webrtcbin and whepsrc fixes + - cerbero: fix Python 3.13 compatibility, g-i with newer + setuptools, bootstrap on Arch Linux; iOS build fixes + - Ship qroverlay plugin in binary packages + - Various bug fixes, memory leak fixes, and other stability and + reliability improvements + + Gstreamer: + - aggregator: + . Fix start time selection first with force-live + . Fix live query when force-live is TRUE + - parse-launch: Make sure children are bins before recursing in + - macos: Fix race conditions in cocoa/application main event + loop + - multiqueue: Do not unref the query we get in pad->query + +------------------------------------------------------------------- Old: ---- gstreamer-1.24.8.tar.xz New: ---- gstreamer-1.24.9.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer.spec ++++++ --- /var/tmp/diff_new_pack.LxKnxH/_old 2024-11-07 16:24:12.277702718 +0100 +++ /var/tmp/diff_new_pack.LxKnxH/_new 2024-11-07 16:24:12.281702884 +0100 @@ -19,7 +19,7 @@ %define gst_branch 1.0 Name: gstreamer -Version: 1.24.8 +Version: 1.24.9 Release: 0 Summary: Streaming-Media Framework Runtime License: LGPL-2.1-or-later ++++++ gstreamer-1.24.8.tar.xz -> gstreamer-1.24.9.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.8/ChangeLog new/gstreamer-1.24.9/ChangeLog --- old/gstreamer-1.24.8/ChangeLog 2024-09-19 12:01:34.828700000 +0200 +++ new/gstreamer-1.24.9/ChangeLog 2024-10-30 21:33:43.855273500 +0100 @@ -1,3 +1,85 @@ +=== release 1.24.9 === + +2024-10-30 20:33:30 +0000 Tim-Philipp Müller <[email protected]> + + * NEWS: + * RELEASE: + * gstreamer.doap: + * meson.build: + Release 1.24.9 + +2024-10-28 10:41:08 -0300 Thibault Saunier <[email protected]> + + * plugins/elements/gstmultiqueue.c: + multiqueue: Do not unref the query we get in pad->query + We do not own any ref to queries when running them. + If we end up processing the query from the streaming thread, it means that it was + a serialized query, and the query is being waited to be processed on the sinkpad + streaming thread, thread which owns the reference. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7796> + +2024-10-25 19:12:17 +0200 Mathieu Duponchelle <[email protected]> + + * libs/gst/base/gstaggregator.c: + aggregator: fix start time selection first with force-live + When force-live is true, we don't want to wait for a first buffer + to select a start time. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1783 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7778> + +2024-10-23 16:14:45 +0200 Mathieu Duponchelle <[email protected]> + + * libs/gst/base/gstaggregator.c: + aggregator: fix live query when force-live is TRUE + When force-live is TRUE, aggregator will correctly change its state with + NO_PREROLL, but unless something upstream is live did not previously set + live to TRUE on the latency query. + Fix this by or'ing force_live into the result. + Also improve debug + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7723> + +2024-10-01 12:26:40 +0000 Corentin Damman <[email protected]> + + * gst/gstmacos.m: + macos: Fix race conditions + This commit fixes two issues: + - The event must be posted *after* calling stop, otherwise a race condition can occur and the app never stops + - isFinishedLaunching and applicationDidFinishLaunching are not always synchronized, causing sometimes + a deadlock on the g_cond_wait never catching the g_cond_signal + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7608> + +2024-09-16 08:48:47 -0400 Arun Raghavan <[email protected]> + + * gst/parse/grammar.y.in: + gstreamer: parse: Use child proxy for deferred property setting + We use that mechanism for the non-deferred path, and this makes sure we are + consistent for deferred set too. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7561> + +2024-09-15 06:39:40 -0400 Arun Raghavan <[email protected]> + + * gst/parse/grammar.y.in: + gstreamer: parse: Minor whitespace fixups + Mostly replacing some tabs with spaces. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7561> + +2024-09-13 13:55:27 -0400 Arun Raghavan <[email protected]> + + * gst/parse/grammar.y.in: + gstreamer: parse: Make sure children are bins before recursing in + A deferred set of the form parentbin::childelement::pad works in the + non-deferred property setting path, but the deferred path assumes that all + non-root non-leaf children specify bins. We already have a bin check on the + root, so let's add one for other non-leaves to avoid a critical. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3806 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7561> + +2024-09-19 12:12:53 +0200 Tim-Philipp Müller <[email protected]> + + * meson.build: + Back to development after 1.24.8 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7549> + === release 1.24.8 === 2024-09-19 12:01:21 +0200 Tim-Philipp Müller <[email protected]> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.8/NEWS new/gstreamer-1.24.9/NEWS --- old/gstreamer-1.24.8/NEWS 2024-09-19 12:01:21.000000000 +0200 +++ new/gstreamer-1.24.9/NEWS 2024-10-30 21:33:30.000000000 +0100 @@ -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.8 and was released on 19 September 2024. +The latest bug-fix release in the stable 1.24 series is 1.24.9 and was released on 30 October 2024. See https://gstreamer.freedesktop.org/releases/1.24/ for the latest version of this document. -Last updated: Thursday 19 September 2024, 00:30 UTC (log) +Last updated: Wednesday 30 October 2024, 20:00 UTC (log) ## Introduction @@ -2450,8 +2450,6 @@ - decodebin3: Fix collection identity check - encodebin: Fix pad removal - glimagesink: Fix cannot resize viewport when video size changed in caps -- v4l2bufferpool: actually queue back the empty buffer flagged LAST -- v4l2videoenc: unref buffer pool after usage properly - video: Donât overshoot QoS earliest time by a factor of 2 - meson: gst-play: link to libm @@ -2461,6 +2459,8 @@ - matroskamux: Include end padding in the block duration for Opus streams, fixing firefox compatibility - osxaudio: Avoid dangling pointer on shutdown - splitmuxsink: Override LATENCY query to pretend to downstream that weâre not live +- v4l2bufferpool: actually queue back the empty buffer flagged LAST +- v4l2videoenc: unref buffer pool after usage properly - v4l2: encoder: Add dynamic framerate support gst-plugins-bad @@ -2547,6 +2547,185 @@ - List of Merge Requests applied in 1.24.8 - List of Issues fixed in 1.24.8 +1.24.9 + +The ninth 1.24 bug-fix release (1.24.9) was released on 30 October 2024. + +This release only contains bugfixes and a security fix and it should be safe to update from 1.24.x. + +Highlighted bugfixes in 1.24.9 + +- gst-rtsp-server security fix +- GstAggregator start time selection and latency query fixes for force-live mode +- audioconvert: fix dynamic handling of mix matrix, and accept custom upstream event for setting one +- encodebin: fix parser selection for encoders that support multiple codecs +- flvmux improvments for pipelines where timestamps donât start at 0 +- glcontext: egl: Unrestrict the support base DRM formats +- kms: Add IMX-DCSS auto-detection in sink and fix stride with planar formats in allocator +- macOS main application event loop fixes +- mpegtsdemux: Handle PTS/DTS wraparound with ignore-pcr=true +- playbin3, decodebin3, parsebin, urisourcebin: fix races, and improve stability and stream-collection handling +- rtpmanager: fix early RTCP SR generation for sparse streams like metadata +- qml6glsrc: Reduce capture delay +- qtdemux: fix parsing of rotation matrix with 180 degree rotation +- rtpav1depay: added wait-for-keyframe and request-keyframe properties +- srt: make work with newer libsrt versions and donât re-connect on authentication failure +- v4l2 fixes and improvement +- webrtcsink, webrtcbin and whepsrc fixes +- cerbero: fix Python 3.13 compatibility, g-i with newer setuptools, bootstrap on Arch Linux; iOS build fixes +- Ship qroverlay plugin in binary packages - Various bug fixes, memory leak fixes, and other stability and reliability + improvements +- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements + +gstreamer + +- aggregator: fix start time selection first with force-live +- aggregator: fix live query when force-live is TRUE +- parse-launch: Make sure children are bins before recursing in +- macos: Fix race conditions in cocoa/application main event loop +- multiqueue: Do not unref the query we get in pad->query + +gst-plugins-base + +- audioconvert: fix dynamic handling of mix matrix, accept custom upstream event for setting one +- playback: Fix a variety of decodebin3/parsebin/urisourcebin races +- playbin3: prevent crashing trying to play a corrupted mp4 file (WARNING : HIGH PITCHED CORRUPTED SOUND) +- urisourcebin: Ensure all stream-start are handled +- urisourcebin: Allow more cases for posting stream-collection +- decodebin3: Make update/posting of collection messages atomic +- decodebin3: send selected stream message as long as not all the tracks canât select decoders +- urisourcebin/parsebin: Improve collection creation and handling +- encodebasebin: Miscellaneous fixes +- allocators: drmdumb: Fix bpp value for P010 +- gldownload: use gst_gl_sync_meta_wait_cpu() +- Revert âmeson: Fix invalid include flag in uninstalled gl pc fileâ +- gl: Fix configure error when libdrm is a subproject +- glcontext: egl: Unrestrict the support base DRM formats +- exiftag: Check the result of gst_date_time_new_local_time(), fixes criticals with malformed EXIF tags + +gst-plugins-good + +- flvmux: Use first running time on the initial header instead of 0 +- rtpmanager: skip RTPSources which are not ready in the RTCP generation +- rtppassthroughpay: Fix reading clock-rate and payload type from caps +- qml6glsrc: Reduce capture delay +- qtdemux: fix parsing of matrix with 180 rotation +- qtdemux: Check fourcc of a second CEA608 atom instead of assuming itâs cdt2 +- qtdemux: Skip zero-sized boxes instead of stopping to look at further boxes +- twcc: Handle wrapping of reference time +- v4l2object: append non colorimetry structure to probed caps +- v4l2: Various fixes and improvement + +gst-plugins-bad + +- avfdeviceprovider: Fix leak from the GstCaps +- codecparsers: add debug categories to bitwriters +- codectimestamper: Fix gint wraparound in pts_compare_func +- dvxa: Explicitly use cpp_std=c++11 +- GstPlay: message parsing and documentation improvements +- h26xbitwriter: false have_space if aligning fails on aud +- kmsallocator: fix stride with planar formats +- kmssink: Add IMX-DCSS auto-detection +- mpegtsdemux: Handle PTS/DTS wraparound with ignore-pcr=true +- rtmp2sink: Initialize base_ts / last_ts with the actual first observed timestamp +- scenechange: fix memory leak +- srtsink: Register SRT listen callback before binding socket +- srt: Donât attempt to reconnect on authentication failures +- tests: va: fix vapostproc test for DMABuf +- tests: lc3: Allocate the same size for the buffer and the data +- va: Fix libdrm include, plus meson and wrap changes +- vaav1enc: Do not enable palette mode by default +- vp8decoder: Fix resolution change handling +- vtdec: add support for level 6 6.1 and 6.2 +- wayland: Add NV15 support +- webrtcbin: Clean up bin elements when datachannel is removed + +gst-plugins-ugly + +- No changes + +GStreamer Rust plugins + +- Build: turn lto off for dev profile for faster dev builds +- fmp4 hls_live example: Donât set header-update-mode=update, no need to update the header in live mode +- gtk4paintablesink: Donât check for a GL context when filtering dmabuf caps +- livesync: Log latency query results when handling latency query too +- onvifmetadatapay: Set output caps earlier, so upstream can send gap events earlier +- rtpav1depay: Add wait-for-keyframe and request-keyframe properties +- spotify: tweak dependencies +- transcriberbin: fix panic during gst-inspect-1.0 -u +- webrtcsink: fix segment format mismatch with remote offer +- webrtcsink: fix assertions when finalizing +- webrtcsink: Fix typo in âturn-serversâ property description +- whepsrc: Fix incorrect default caps + +gst-libav + +- avviddec: Unlock video decoder stream lock temporarily while finishing frames + +gst-rtsp-server + +- rtsp-server: Remove pointless assertions that can happen if client provides invalid rates (security fix) + +gstreamer-vaapi + +- No changes + +gstreamer-sharp + +- No changes + +gst-omx + +- No changes + +gst-python + +- No changes + +gst-editing-services + +- ges: Fix name of GESFrameCompositionMeta API type (which caused gobject-introspection failures at build time) + +gst-devtools, gst-validate + gst-integration-testsuites + +- validate: Ignore flaky dash playbin3 issue +- validate: Blacklist more netsim tests + +gst-examples + +- No changes + +Development build environment + +- No changes + +Cerbero build tool and packaging changes in 1.24.9 + +- Fix Python 3.13 compatibility +- gobject-introspection: Import patch to build against newer setuptools +- Switch from wget to curl on Fedora 40 and newer +- bootstrap: Add missing dependencies on Arch Linux +- harfbuzz: Add CXXFLAGS to fix broken build on iOS +- openssl.recipe: Stop using non-existent domain in primary tarball url +- gst-plugins-bad: ship qroverlay plugin + +Contributors to 1.24.9 + +Andoni Morales Alastruey, Arun Raghavan, Benjamin Gaignard, Corentin Damman, Dave Lucia, Edward Hervey, Elliot Chen, eri, +Francisco Javier Velázquez-GarcÃa, Guillaume Desmottes, He Junyan, Hugues Fruchet, Jakub Adam, James Cowgill, Jan Alexander +Steffens (heftig), Jan Schmidt, Johan Sternerup, Jordan Petridis, L. E. Segovia, Mathieu Duponchelle, Nick Steel, Nicolas +Dufresne, Nirbheek Chauhan, Ognyan Tonchev, Olivier Crête, Peter Stensson, Philippe Normand, Piotr BrzeziÅski, Sanchayan Maity, +Sebastian Dröge, Shengqi Yu, Stéphane Cerveau, Théo Maillart, Thibault Saunier, Tim-Philipp Müller, VÃctor Manuel Jáquez Leal, +Weijian Pan, 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.24.9 + +- List of Merge Requests applied in 1.24.9 +- List of Issues fixed in 1.24.9 + 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.8/RELEASE new/gstreamer-1.24.9/RELEASE --- old/gstreamer-1.24.8/RELEASE 2024-09-19 12:01:21.000000000 +0200 +++ new/gstreamer-1.24.9/RELEASE 2024-10-30 21:33:30.000000000 +0100 @@ -1,4 +1,4 @@ -This is GStreamer core 1.24.8. +This is GStreamer core 1.24.9. 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.8/gst/gstmacos.m new/gstreamer-1.24.9/gst/gstmacos.m --- old/gstreamer-1.24.8/gst/gstmacos.m 2024-09-19 12:01:21.000000000 +0200 +++ new/gstreamer-1.24.9/gst/gstmacos.m 2024-10-30 21:33:30.000000000 +0100 @@ -11,11 +11,13 @@ gboolean is_simple; GMutex nsapp_mutex; GCond nsapp_cond; + gboolean nsapp_running; }; @interface GstCocoaApplicationDelegate : NSObject <NSApplicationDelegate> @property (assign) GMutex *nsapp_mutex; @property (assign) GCond *nsapp_cond; +@property (assign) gboolean *nsapp_running; @end @implementation GstCocoaApplicationDelegate @@ -23,6 +25,7 @@ - (void)applicationDidFinishLaunching:(NSNotification *)notification { g_mutex_lock (self.nsapp_mutex); + *self.nsapp_running = TRUE; g_cond_signal (self.nsapp_cond); g_mutex_unlock (self.nsapp_mutex); } @@ -35,7 +38,7 @@ /* Only proceed once NSApp is running, otherwise we could * attempt to call [NSApp: stop] before it's even started. */ g_mutex_lock (&args->nsapp_mutex); - while (![[NSRunningApplication currentApplication] isFinishedLaunching]) { + while (!args->nsapp_running) { g_cond_wait (&args->nsapp_cond, &args->nsapp_mutex); } g_mutex_unlock (&args->nsapp_mutex); @@ -55,11 +58,11 @@ windowNumber: 0 context: nil subtype: NSEventSubtypeApplicationActivated - data1: 0 + data1: 0 data2: 0]; - [NSApp postEvent:event atStart:YES]; [NSApp stop:nil]; + [NSApp postEvent:event atStart:YES]; return ret; } @@ -73,11 +76,13 @@ g_mutex_init (&args.nsapp_mutex); g_cond_init (&args.nsapp_cond); + args.nsapp_running = FALSE; [NSApplication sharedApplication]; delegate = [[GstCocoaApplicationDelegate alloc] init]; delegate.nsapp_mutex = &args.nsapp_mutex; delegate.nsapp_cond = &args.nsapp_cond; + delegate.nsapp_running = &args.nsapp_running; [NSApp setDelegate:delegate]; /* This lets us show an icon in the dock and correctly focus opened windows */ @@ -102,11 +107,11 @@ * @argv: (array length=argc): an array of arguments to be passed to the main function * @user_data: (nullable): user data to be passed to the main function * - * Starts an NSApplication on the main thread before calling - * the provided main() function on a secondary thread. - * - * This ensures that GStreamer can correctly perform actions - * such as creating a GL window, which require a Cocoa main loop + * Starts an NSApplication on the main thread before calling + * the provided main() function on a secondary thread. + * + * This ensures that GStreamer can correctly perform actions + * such as creating a GL window, which require a Cocoa main loop * to be running on the main thread. * * Do not call this function more than once - especially while @@ -144,7 +149,7 @@ * * Since: 1.22 */ -int +int gst_macos_main_simple (GstMainFuncSimple main_func, gpointer user_data) { ThreadArgs args; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.8/gst/parse/grammar.y.in new/gstreamer-1.24.9/gst/parse/grammar.y.in --- old/gstreamer-1.24.8/gst/parse/grammar.y.in 2024-09-19 12:01:21.000000000 +0200 +++ new/gstreamer-1.24.9/gst/parse/grammar.y.in 2024-10-30 21:33:30.000000000 +0100 @@ -345,46 +345,50 @@ g_free(set); } -static void gst_parse_new_child(GstChildProxy *child_proxy, GObject *object, +static void gst_parse_new_child (GstChildProxy *child_proxy, GObject *object, const gchar * name, gpointer data); -static void gst_parse_add_delayed_set (GstElement *element, gchar *name, gchar *value_str) +static void gst_parse_add_delayed_set (GstChildProxy *proxy, gchar *name, gchar *value_str) { DelayedSet *data = g_new0 (DelayedSet, 1); + gchar **names, **current; + GObject *parent, *child; - GST_CAT_LOG_OBJECT (GST_CAT_PIPELINE, element, "delaying property set %s to %s", + GST_CAT_LOG_OBJECT (GST_CAT_PIPELINE, proxy, "delaying property set %s to %s", name, value_str); - data->name = g_strdup(name); - data->value_str = g_strdup(value_str); - data->signal_id = g_signal_connect_data(element, "child-added", + data->name = g_strdup (name); + data->value_str = g_strdup (value_str); + data->signal_id = g_signal_connect_data (proxy, "child-added", G_CALLBACK (gst_parse_new_child), data, (GClosureNotify) gst_parse_free_delayed_set, (GConnectFlags) 0); - /* FIXME: we would need to listen on all intermediate bins too */ - if (GST_IS_BIN (element)) { - gchar **names, **current; - GstElement *parent, *child; + current = names = g_strsplit (name, "::", -1); + parent = gst_child_proxy_get_child_by_name (GST_CHILD_PROXY (proxy), current[0]); + current++; + + while (parent && current[0]) { + if (!GST_IS_CHILD_PROXY (parent)) { + GST_INFO ("Not recursing into non-proxy child %p", parent); + break; + } + + child = gst_child_proxy_get_child_by_name (GST_CHILD_PROXY (parent), current[0]); + if (!child && current[1]) { + char *sub_name = g_strjoinv ("::", ¤t[0]); - current = names = g_strsplit (name, "::", -1); - parent = gst_bin_get_by_name (GST_BIN_CAST (element), current[0]); + gst_parse_add_delayed_set (GST_CHILD_PROXY (parent), sub_name, value_str); + g_free (sub_name); + } + + gst_object_unref (parent); + parent = child; current++; - while (parent && current[0]) { - child = gst_bin_get_by_name (GST_BIN (parent), current[0]); - if (!child && current[1]) { - char *sub_name = g_strjoinv ("::", ¤t[0]); - - gst_parse_add_delayed_set(parent, sub_name, value_str); - g_free (sub_name); - } - gst_object_unref (parent); - parent = child; - current++; - } - if (parent) - gst_object_unref (parent); - g_strfreev (names); } + + if (parent) + gst_object_unref (parent); + g_strfreev (names); } static gboolean @@ -472,14 +476,14 @@ /* Cases 1,2: The child just added corresponds to this delayed set */ if ((strlen (set->name) > (len+2)) && !strncmp (set->name, name, len) - && !strncmp (&set->name[len], "::", 2)) { + && !strncmp (&set->name[len], "::", 2)) { gchar *children = NULL; gchar *prop = NULL; GObject *child = NULL; if (!gst_parse_separate_prop_from_children (set->name, &children, &prop)) { - /* Malformed property name, ignore */ - return; + /* Malformed property name, ignore */ + return; } child = gst_child_proxy_get_child_by_name_recurse (child_proxy, children); @@ -488,14 +492,14 @@ /* Case 1: A child in the hierarchy does not exist yet, add a new delayed set */ if (NULL == child) { - gst_parse_add_delayed_set (GST_ELEMENT (child_proxy), set->name, set->value_str); + gst_parse_add_delayed_set (child_proxy, set->name, set->value_str); } /* Case 2: The target child exists already but there's no such property */ else { - gst_object_unref (child); - GST_ELEMENT_WARNING(GST_ELEMENT (child_proxy), PARSE, NO_SUCH_PROPERTY, - (_("No such property.")), (_("no property \"%s\" in element \"%s\""), - set->name, GST_ELEMENT_NAME(child_proxy))); + gst_object_unref (child); + GST_ELEMENT_WARNING(GST_ELEMENT (child_proxy), PARSE, NO_SUCH_PROPERTY, + (_("No such property.")), (_("no property \"%s\" in element \"%s\""), + set->name, GST_ELEMENT_NAME(child_proxy))); } } /* Case 3: The child just added does not correspond to this delayed set, just ignore @@ -590,13 +594,13 @@ not_a_preset: SET_ERROR (graph->error, GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY, _("Element \"%s\" is not a GstPreset"), - GST_ELEMENT_NAME (element)); + GST_ELEMENT_NAME (element)); goto out; error: SET_ERROR (graph->error, GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY, _("could not set preset \"%s\" in element \"%s\""), - value, GST_ELEMENT_NAME (element)); + value, GST_ELEMENT_NAME (element)); goto out; } @@ -626,7 +630,7 @@ GstElement *ret = NULL; if (!factory) { - SET_ERROR (graph->error, GST_PARSE_ERROR_NO_SUCH_ELEMENT, _("no element \"%s\""), data->factory_name); + SET_ERROR (graph->error, GST_PARSE_ERROR_NO_SUCH_ELEMENT, _("no element \"%s\""), data->factory_name); return NULL; } @@ -701,8 +705,8 @@ gchar *children = NULL; gchar *property = NULL; if (!gst_parse_separate_prop_from_children (pp->name, &children, &property)) { - /* malformed childproxy path, skip */ - continue; + /* malformed childproxy path, skip */ + continue; } target = gst_child_proxy_get_child_by_name_recurse (GST_CHILD_PROXY (ret), children); @@ -710,13 +714,13 @@ g_free (property); if (target == NULL) { - gst_parse_add_delayed_set (ret, pp->name, pp->value); + gst_parse_add_delayed_set (GST_CHILD_PROXY (ret), pp->name, pp->value); } else { - gst_object_unref (target); - SET_ERROR (graph->error, GST_PARSE_ERROR_NO_SUCH_PROPERTY, \ - _("no property \"%s\" in element \"%s\""), pp->name, \ - GST_ELEMENT_NAME (ret)); - goto done; + gst_object_unref (target); + SET_ERROR (graph->error, GST_PARSE_ERROR_NO_SUCH_PROPERTY, \ + _("no property \"%s\" in element \"%s\""), pp->name, \ + GST_ELEMENT_NAME (ret)); + goto done; } } else { GValue v = { 0, }; @@ -816,9 +820,9 @@ the child was found, we fail since the property doesn't exist. */ if (!gst_parse_child_proxy_find_child (GST_CHILD_PROXY (element), value)) { - gst_parse_add_delayed_set (element, value, pos); + gst_parse_add_delayed_set (GST_CHILD_PROXY (element), value, pos); } else { - goto error; + goto error; } } } else { @@ -852,7 +856,7 @@ error: SET_ERROR (graph->error, GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY, _("could not set property \"%s\" in element \"%s\" to \"%s\""), - value, GST_ELEMENT_NAME (element), pos); + value, GST_ELEMENT_NAME (element), pos); goto out; } @@ -927,7 +931,7 @@ GST_CAT_INFO (GST_CAT_PIPELINE, "trying delayed linking %s " PRETTY_PAD_NAME_FMT " to " PRETTY_PAD_NAME_FMT, - link->all_pads ? "all pads" : "one pad", + link->all_pads ? "all pads" : "one pad", PRETTY_PAD_NAME_ARGS (src, link->src_pad), PRETTY_PAD_NAME_ARGS (link->sink, link->sink_pad)); @@ -937,8 +941,8 @@ * unlocking states */ GST_CAT_DEBUG (GST_CAT_PIPELINE, "delayed linking %s " PRETTY_PAD_NAME_FMT " to " PRETTY_PAD_NAME_FMT " worked", - link->all_pads ? "all pads" : "one pad", - PRETTY_PAD_NAME_ARGS (src, link->src_pad), + link->all_pads ? "all pads" : "one pad", + PRETTY_PAD_NAME_ARGS (src, link->src_pad), PRETTY_PAD_NAME_ARGS (link->sink, link->sink_pad)); /* releases 'link' */ if (!link->all_pads) { @@ -977,9 +981,9 @@ data->sink = sink; data->sink_pad = g_strdup (sink_pad); if (caps) { - data->caps = gst_caps_copy (caps); + data->caps = gst_caps_copy (caps); } else { - data->caps = NULL; + data->caps = NULL; } data->pad_added_signal_id = g_signal_connect_data (src, "pad-added", G_CALLBACK (gst_parse_found_pad), data, @@ -1081,7 +1085,7 @@ if (gst_parse_perform_delayed_link (src, srcs ? (const gchar *) srcs->data : NULL, sink, sinks ? (const gchar *) sinks->data : NULL, link->caps, - link->all_pads) || link->all_pads) { + link->all_pads) || link->all_pads) { goto success; } else { goto error; @@ -1101,8 +1105,8 @@ } else { if (gst_parse_perform_delayed_link (src, src_pad, sink, sink_pad, - link->caps, link->all_pads)) { - continue; + link->caps, link->all_pads)) { + continue; } else { goto error; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.8/gstreamer.doap new/gstreamer-1.24.9/gstreamer.doap --- old/gstreamer-1.24.8/gstreamer.doap 2024-09-19 12:01:21.000000000 +0200 +++ new/gstreamer-1.24.9/gstreamer.doap 2024-10-30 21:33:30.000000000 +0100 @@ -40,6 +40,16 @@ <release> <Version> + <revision>1.24.9</revision> + <branch>1.24</branch> + <name></name> + <created>2024-10-30</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.24.9.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.24.8</revision> <branch>1.24</branch> <name></name> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.8/libs/gst/base/gstaggregator.c new/gstreamer-1.24.9/libs/gst/base/gstaggregator.c --- old/gstreamer-1.24.8/libs/gst/base/gstaggregator.c 2024-09-19 12:01:21.000000000 +0200 +++ new/gstreamer-1.24.9/libs/gst/base/gstaggregator.c 2024-10-30 21:33:30.000000000 +0100 @@ -866,6 +866,25 @@ return FALSE; } + if (self->priv->force_live && self->priv->first_buffer + && self->priv->start_time_selection == + GST_AGGREGATOR_START_TIME_SELECTION_FIRST) { + GstClockTime start_time; + GstAggregatorPad *srcpad = GST_AGGREGATOR_PAD (self->srcpad); + start_time = gst_element_get_current_running_time (GST_ELEMENT (self)); + + if (GST_CLOCK_TIME_IS_VALID (start_time)) { + if (srcpad->segment.position == -1) + srcpad->segment.position = start_time; + else + srcpad->segment.position = MIN (start_time, srcpad->segment.position); + + GST_DEBUG_OBJECT (self, "Selecting start time %" GST_TIME_FORMAT, + GST_TIME_ARGS (start_time)); + self->priv->first_buffer = FALSE; + } + } + start = gst_aggregator_get_next_time (self); /* If we're not live, or if we use the running time @@ -2271,9 +2290,11 @@ static gboolean gst_aggregator_query_latency_unlocked (GstAggregator * self, GstQuery * query) { - gboolean query_ret, live; + gboolean query_ret, upstream_live; GstClockTime our_latency, min, max; + GST_TRACE_OBJECT (self, "querying latency"); + /* Temporarily release the lock to do the query. */ SRC_UNLOCK (self); query_ret = gst_pad_query_default (self->srcpad, GST_OBJECT (self), query); @@ -2284,7 +2305,12 @@ return FALSE; } - gst_query_parse_latency (query, &live, &min, &max); + gst_query_parse_latency (query, &upstream_live, &min, &max); + + GST_LOG_OBJECT (self, + "queried upstream latency, live: %s min: %" GST_TIME_FORMAT " max: %" + GST_TIME_FORMAT, upstream_live ? "true" : "false", GST_TIME_ARGS (min), + GST_TIME_ARGS (max)); if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (min))) { GST_ERROR_OBJECT (self, "Invalid minimum latency %" GST_TIME_FORMAT @@ -2314,7 +2340,7 @@ our_latency = self->priv->latency; - self->priv->peer_latency_live = live; + self->priv->peer_latency_live = upstream_live; self->priv->peer_latency_min = min; self->priv->peer_latency_max = max; self->priv->has_peer_latency = TRUE; @@ -2331,9 +2357,10 @@ SRC_BROADCAST (self); GST_DEBUG_OBJECT (self, "configured latency live:%s min:%" G_GINT64_FORMAT - " max:%" G_GINT64_FORMAT, live ? "true" : "false", min, max); + " max:%" G_GINT64_FORMAT, + is_live_unlocked (self) ? "true" : "false", min, max); - gst_query_set_latency (query, live, min, max); + gst_query_set_latency (query, is_live_unlocked (self), min, max); return query_ret; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.8/meson.build new/gstreamer-1.24.9/meson.build --- old/gstreamer-1.24.8/meson.build 2024-09-19 12:01:21.000000000 +0200 +++ new/gstreamer-1.24.9/meson.build 2024-10-30 21:33:30.000000000 +0100 @@ -1,5 +1,5 @@ project('gstreamer', 'c', - version : '1.24.8', + version : '1.24.9', 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.8/plugins/elements/gstmultiqueue.c new/gstreamer-1.24.9/plugins/elements/gstmultiqueue.c --- old/gstreamer-1.24.8/plugins/elements/gstmultiqueue.c 2024-09-19 12:01:21.000000000 +0200 +++ new/gstreamer-1.24.9/plugins/elements/gstmultiqueue.c 2024-10-30 21:33:30.000000000 +0100 @@ -2078,7 +2078,6 @@ if (G_UNLIKELY (*allow_drop)) { GST_DEBUG_ID (sq->debug_id, "Dropping EOS query %p", query); - gst_query_unref (query); res = FALSE; } else { res = gst_pad_peer_query (srcpad, query); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.8/po/gstreamer-1.0.pot new/gstreamer-1.24.9/po/gstreamer-1.0.pot --- old/gstreamer-1.24.8/po/gstreamer-1.0.pot 2024-09-19 12:01:34.524667300 +0200 +++ new/gstreamer-1.24.9/po/gstreamer-1.0.pot 2024-10-30 21:33:43.523270600 +0100 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gstreamer-1.24.8\n" +"Project-Id-Version: gstreamer-1.24.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-19 12:01+0200\n" +"POT-Creation-Date: 2024-10-30 20:33+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <[email protected]>\n" @@ -1070,105 +1070,105 @@ msgid "link has no sink [source=%s@%p]" msgstr "" -#: gst/parse/grammar.y.in:497 +#: gst/parse/grammar.y.in:501 msgid "No such property." msgstr "" -#: gst/parse/grammar.y.in:497 gst/parse/grammar.y.in:683 -#: gst/parse/grammar.y.in:717 gst/parse/grammar.y.in:831 +#: gst/parse/grammar.y.in:501 gst/parse/grammar.y.in:687 +#: gst/parse/grammar.y.in:721 gst/parse/grammar.y.in:835 #, c-format msgid "no property \"%s\" in element \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:592 +#: gst/parse/grammar.y.in:596 #, c-format msgid "Element \"%s\" is not a GstPreset" msgstr "" -#: gst/parse/grammar.y.in:598 +#: gst/parse/grammar.y.in:602 #, c-format msgid "could not set preset \"%s\" in element \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:629 +#: gst/parse/grammar.y.in:633 #, c-format msgid "no element \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:672 gst/parse/grammar.y.in:854 +#: gst/parse/grammar.y.in:676 gst/parse/grammar.y.in:858 #, c-format msgid "could not set property \"%s\" in element \"%s\" to \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:726 +#: gst/parse/grammar.y.in:730 #, c-format msgid "could not set property \"%s\" in child of element \"%s\" to \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:915 +#: gst/parse/grammar.y.in:919 msgid "Delayed linking failed." msgstr "" -#: gst/parse/grammar.y.in:1128 gst/parse/grammar.y.in:1133 +#: gst/parse/grammar.y.in:1132 gst/parse/grammar.y.in:1137 #, c-format msgid "could not link %s to %s, %s can't handle caps %s" msgstr "" -#: gst/parse/grammar.y.in:1138 +#: gst/parse/grammar.y.in:1142 #, c-format msgid "could not link %s to %s, neither element can handle caps %s" msgstr "" -#: gst/parse/grammar.y.in:1142 +#: gst/parse/grammar.y.in:1146 #, c-format msgid "could not link %s to %s with caps %s" msgstr "" -#: gst/parse/grammar.y.in:1148 +#: gst/parse/grammar.y.in:1152 #, c-format msgid "could not link %s to %s" msgstr "" -#: gst/parse/grammar.y.in:1302 +#: gst/parse/grammar.y.in:1306 #, c-format msgid "unexpected reference \"%s\" - ignoring" msgstr "" -#: gst/parse/grammar.y.in:1308 +#: gst/parse/grammar.y.in:1312 #, c-format msgid "unexpected pad-reference \"%s\" - ignoring" msgstr "" -#: gst/parse/grammar.y.in:1342 gst/parse/grammar.y.in:1353 +#: gst/parse/grammar.y.in:1346 gst/parse/grammar.y.in:1357 #, c-format msgid "could not parse caps \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:1381 +#: gst/parse/grammar.y.in:1385 #, c-format msgid "no sink element for URI \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:1400 +#: gst/parse/grammar.y.in:1404 #, c-format msgid "no source element for URI \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:1490 +#: gst/parse/grammar.y.in:1494 msgid "syntax error" msgstr "" -#: gst/parse/grammar.y.in:1513 +#: gst/parse/grammar.y.in:1517 #, c-format msgid "specified empty bin \"%s\", not allowed" msgstr "" -#: gst/parse/grammar.y.in:1523 +#: gst/parse/grammar.y.in:1527 #, c-format msgid "no bin \"%s\", unpacking elements" msgstr "" -#: gst/parse/grammar.y.in:1554 +#: gst/parse/grammar.y.in:1558 msgid "empty pipeline not allowed" msgstr "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.24.8/po/gstreamer.pot new/gstreamer-1.24.9/po/gstreamer.pot --- old/gstreamer-1.24.8/po/gstreamer.pot 2024-09-19 12:01:34.524667300 +0200 +++ new/gstreamer-1.24.9/po/gstreamer.pot 2024-10-30 21:33:43.523270600 +0100 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gstreamer-1.24.8\n" +"Project-Id-Version: gstreamer-1.24.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-19 12:01+0200\n" +"POT-Creation-Date: 2024-10-30 20:33+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <[email protected]>\n" @@ -1070,105 +1070,105 @@ msgid "link has no sink [source=%s@%p]" msgstr "" -#: gst/parse/grammar.y.in:497 +#: gst/parse/grammar.y.in:501 msgid "No such property." msgstr "" -#: gst/parse/grammar.y.in:497 gst/parse/grammar.y.in:683 -#: gst/parse/grammar.y.in:717 gst/parse/grammar.y.in:831 +#: gst/parse/grammar.y.in:501 gst/parse/grammar.y.in:687 +#: gst/parse/grammar.y.in:721 gst/parse/grammar.y.in:835 #, c-format msgid "no property \"%s\" in element \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:592 +#: gst/parse/grammar.y.in:596 #, c-format msgid "Element \"%s\" is not a GstPreset" msgstr "" -#: gst/parse/grammar.y.in:598 +#: gst/parse/grammar.y.in:602 #, c-format msgid "could not set preset \"%s\" in element \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:629 +#: gst/parse/grammar.y.in:633 #, c-format msgid "no element \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:672 gst/parse/grammar.y.in:854 +#: gst/parse/grammar.y.in:676 gst/parse/grammar.y.in:858 #, c-format msgid "could not set property \"%s\" in element \"%s\" to \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:726 +#: gst/parse/grammar.y.in:730 #, c-format msgid "could not set property \"%s\" in child of element \"%s\" to \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:915 +#: gst/parse/grammar.y.in:919 msgid "Delayed linking failed." msgstr "" -#: gst/parse/grammar.y.in:1128 gst/parse/grammar.y.in:1133 +#: gst/parse/grammar.y.in:1132 gst/parse/grammar.y.in:1137 #, c-format msgid "could not link %s to %s, %s can't handle caps %s" msgstr "" -#: gst/parse/grammar.y.in:1138 +#: gst/parse/grammar.y.in:1142 #, c-format msgid "could not link %s to %s, neither element can handle caps %s" msgstr "" -#: gst/parse/grammar.y.in:1142 +#: gst/parse/grammar.y.in:1146 #, c-format msgid "could not link %s to %s with caps %s" msgstr "" -#: gst/parse/grammar.y.in:1148 +#: gst/parse/grammar.y.in:1152 #, c-format msgid "could not link %s to %s" msgstr "" -#: gst/parse/grammar.y.in:1302 +#: gst/parse/grammar.y.in:1306 #, c-format msgid "unexpected reference \"%s\" - ignoring" msgstr "" -#: gst/parse/grammar.y.in:1308 +#: gst/parse/grammar.y.in:1312 #, c-format msgid "unexpected pad-reference \"%s\" - ignoring" msgstr "" -#: gst/parse/grammar.y.in:1342 gst/parse/grammar.y.in:1353 +#: gst/parse/grammar.y.in:1346 gst/parse/grammar.y.in:1357 #, c-format msgid "could not parse caps \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:1381 +#: gst/parse/grammar.y.in:1385 #, c-format msgid "no sink element for URI \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:1400 +#: gst/parse/grammar.y.in:1404 #, c-format msgid "no source element for URI \"%s\"" msgstr "" -#: gst/parse/grammar.y.in:1490 +#: gst/parse/grammar.y.in:1494 msgid "syntax error" msgstr "" -#: gst/parse/grammar.y.in:1513 +#: gst/parse/grammar.y.in:1517 #, c-format msgid "specified empty bin \"%s\", not allowed" msgstr "" -#: gst/parse/grammar.y.in:1523 +#: gst/parse/grammar.y.in:1527 #, c-format msgid "no bin \"%s\", unpacking elements" msgstr "" -#: gst/parse/grammar.y.in:1554 +#: gst/parse/grammar.y.in:1558 msgid "empty pipeline not allowed" msgstr ""
