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 2023-05-28 19:21:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-base (Old) and /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1533 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-base" Sun May 28 19:21:29 2023 rev:92 rq:1089222 version:1.22.3 Changes: -------- --- /work/SRC/openSUSE:Factory/gstreamer-plugins-base/gstreamer-plugins-base.changes 2023-04-15 22:32:11.957209817 +0200 +++ /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1533/gstreamer-plugins-base.changes 2023-05-28 19:21:37.936529931 +0200 @@ -1,0 +2,17 @@ +Wed May 24 14:25:12 UTC 2023 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 1.22.3: + + allocators: Fix fdmem unit test with recent GLib versions. + + audiotestsrc: Initialize all samples in wave=ticks mode. + + decodebin3: + - Handle input streams without CAPS or TIME segment such as + e.g. udpsrc or pushfilesrc. + - Fix regression handling streams without caps. + - Fix random hang when remove failing stream. + + uridecodebin3: Ensure atomic urisourcebin state change. + + glvideoflip: fix leaked caps. + + glcontext_wgl: fix missing unref. + + playsink: Fix volume leak. +- Rebase reduce-required-meson.patch. + +------------------------------------------------------------------- Old: ---- gst-plugins-base-1.22.2.tar.xz New: ---- gst-plugins-base-1.22.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer-plugins-base.spec ++++++ --- /var/tmp/diff_new_pack.pf7oMz/_old 2023-05-28 19:21:38.420532812 +0200 +++ /var/tmp/diff_new_pack.pf7oMz/_new 2023-05-28 19:21:38.424532836 +0200 @@ -20,7 +20,7 @@ %define gst_branch 1.0 %define gstreamer_req_version %(echo %{version} | sed -e "s/+.*//") Name: gstreamer-plugins-base -Version: 1.22.2 +Version: 1.22.3 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.22.2.tar.xz -> gst-plugins-base-1.22.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/ChangeLog new/gst-plugins-base-1.22.3/ChangeLog --- old/gst-plugins-base-1.22.2/ChangeLog 2023-04-11 18:30:16.716505300 +0200 +++ new/gst-plugins-base-1.22.3/ChangeLog 2023-05-19 10:24:07.850514400 +0200 @@ -1,3 +1,113 @@ +=== release 1.22.3 === + +2023-05-19 09:23:19 +0100 Tim-Philipp Müller <t...@centricular.com> + + * NEWS: + * README.md: + * RELEASE: + * gst-plugins-base.doap: + * meson.build: + Release 1.22.3 + +2023-05-17 21:43:21 +1000 Matthew Waters <matt...@centricular.com> + + * gst-libs/gst/gl/meson.build: + Revert "meson: Install viv-fb GL headers, needed by i.MX" + Missing pkg-config files and gir files as is required from any public + facing GL API for bindings reasons. + This reverts commit c95b7b8e7aa80276c0604dd3dd03eeda634f42b9. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4657> + +2023-05-10 16:34:16 +0800 Haihua Hu <jared...@nxp.com> + + * gst/playback/gstdecodebin3.c: + decodebin3: fix random hang when remove failing stream + When reconfigure_output_stream entry missing decoder path, + requested_selection should been update with what is really + active/selected immdiately with SELECTION_LOCK hold. So + use an optional message return from reconfigure_output_stream + and post it after release SELECTION_LOCK. This can make sure + other thread call to check_slot_reconfiguration will got + a correct requested_selection. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4656> + +2023-03-07 11:40:42 +0100 Edward Hervey <edw...@centricular.com> + + * gst/playback/gsturidecodebin3.c: + uridecodebin3: Ensure atomic urisourcebin state change + When dynamically adding and synchronizing the state of urisourcebin, we need to + ensure that no-one else attempts to change the state in case of failures + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1803 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4620> + +2023-03-09 00:25:51 +0530 Nirbheek Chauhan <nirbh...@centricular.com> + + * gst-libs/gst/gl/meson.build: + meson: Install viv-fb GL headers, needed by i.MX + Needed by qmlglsink at build time to allocate a viv-fb display. + Without this, the GL fastpath doesn't work, and performance is really + bad. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4618> + +2023-04-26 12:20:25 +0200 Edward Hervey <edw...@centricular.com> + + * gst/playback/gstdecodebin3.c: + decodebin3: Handle streams without CAPS or TIME segment + decodebin3 will do its best to figure out whether a parsebin is required to + process the incoming stream. + The problem is that for push-based stream it could happen that the stream would + not provide any caps, resulting in nothing being linked internally. + Furthermore, there is the possibility that a stream *with* caps would not be + using a TIME segment, which is required for multiqueue to properly work. + In order to fix those two issues, we force the usage of parsebin on push-based + streams: + * When the pad is linked, if upstream can't provide any caps + * When we get a non-TIME segment + Fixes #2521 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4499> + +2023-04-22 11:42:36 +0300 Sebastian Dröge <sebast...@centricular.com> + + * gst/audiotestsrc/gstaudiotestsrc.c: + audiotestsrc: Initialize all samples in wave=ticks mode + Previously samples were only initialized in 2 out of 3 cases. + Probably fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/337 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4476> + +2023-04-20 10:03:27 +0200 Patricia Muscalu <patri...@axis.com> + + * gst/playback/gstplaysink.c: + playsink: Fix volume leak + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4463> + +2023-04-10 16:06:19 +0200 Jan Alexander Steffens (heftig) <hef...@archlinux.org> + + * tests/check/libs/allocators.c: + tests: allocators: Fix fdmem test with recent GLib + The test failed with recent GLib, where `g_close` emits a critical + warning on EBADF. Remove the `g_close` check from `test_fdmem` and add + another version that tests `GST_FD_MEMORY_FLAG_DONT_CLOSE`. + We will depend on the Valgrind test run to warn us about leaked FDs. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2480 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4422> + +2023-04-06 08:54:30 +0200 Matthias Fuchs <matthias1.fu...@zeiss.com> + + * ext/gl/gstglvideoflip.c: + glvideoflip: fix leaked caps + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4420> + +2023-04-05 13:20:19 +0200 Matthias Fuchs <matthias1.fu...@zeiss.com> + + * gst-libs/gst/gl/wgl/gstglcontext_wgl.c: + glcontext_wgl: fix missing unref + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4419> + +2023-04-12 00:31:17 +0100 Tim-Philipp Müller <t...@centricular.com> + + * meson.build: + Back to development + === release 1.22.2 === 2023-04-11 17:29:28 +0100 Tim-Philipp Müller <t...@centricular.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/NEWS new/gst-plugins-base-1.22.3/NEWS --- old/gst-plugins-base-1.22.2/NEWS 2023-04-11 18:29:28.000000000 +0200 +++ new/gst-plugins-base-1.22.3/NEWS 2023-05-19 10:23:19.000000000 +0200 @@ -2,13 +2,13 @@ GStreamer 1.22.0 was originally released on 23 January 2023. -The latest bug-fix release in the stable 1.22 series is 1.22.2 and was -released on 11 April 2023. +The latest bug-fix release in the stable 1.22 series is 1.22.3 and was +released on 19 May 2023. See https://gstreamer.freedesktop.org/releases/1.22/ for the latest version of this document. -Last updated: Tuesday 11 April 2023, 16:45 UTC (log) +Last updated: Friday 19 May 2023, 01:00 UTC (log) Introduction @@ -1648,6 +1648,189 @@ - List of Merge Requests applied in 1.22.2 - List of Issues fixed in 1.22.2 +1.22.3 + +The third 1.22 bug-fix release (1.22.3) was released on 19 May 2023. + +This release only contains bugfixes and it should be safe to update from +1.22.x. + +Highlighted bugfixes in 1.22.3 + +- avdec: fix occasional video decoder deadlock on seeking with FFmpeg + 6.0 +- decodebin3: fix regression handling input streams without CAPS or + TIME segment such as e.g. udpsrc or `pushfilesrc +- bluez: a2dpsink: fix Bluetooth SIG Certification test failures +- osxvideosink: fix deadlock upon closing output window +- qtdemux: fix edit list handling regression and AV1 codec box parsing +- qtmux: fix extraction of CEA608 closed caption data from S334-1A + packets +- rtspsrc: Fix handling of * control path +- splitmux: timestamp handling improvements +- v4l2videodec: Rework dynamic resolution change handling (needed for + IMX6 mainline codec) +- videoflip: fix regression with automatically rotating video based on + tags +- d3d11: many d3d11videosink and d3d11compositor fixes +- webrtc, rtp: numerous data race fixes and stability fixes +- various bug fixes, memory leak fixes, and other stability and + reliability improvements + +gstreamer + +- tracing: Initialize tracing infrastructure even if the debug system + is not compiled in +- parse-launch: fix missing unref of looked-up child element +- gstutils: Add category and object to most logging messages + +gst-plugins-base + +- allocators: Fix fdmem unit test with recent GLib versions +- audiotestsrc: Initialize all samples in wave=ticks mode +- decodebin3: Handle input streams without CAPS or TIME segment such + as e.g. udpsrc or pushfilesrc +- decodebin3: fix regression handling streams without caps +- decodebin3: fix random hang when remove failing stream +- uridecodebin3: Ensure atomic urisourcebin state change +- glvideoflip: fix leaked caps +- glcontext_wgl: fix missing unref +- playsink: Fix volume leak + +gst-plugins-good + +- adaptivedemux2: fix critical when using an unsupported URI +- dashdemux2: mpdclient: fix divide by 0 if segment has no duration +- imagesequencesrc: Properly set default location +- multifile: error out if no filename was set +- osxvideosink: fix deadlock upon closing output window +- rtpmanager: rtpsession: data race leading to critical warnings +- rtpmanager: rtpsession: race conditions leading to critical warnings +- rtspsrc: Fix handling of * control path +- splitmuxsink: Catch invalid DTS to avoid running into problems later +- splitmuxsrc: Make PTS contiguous by preference +- qtdemux: emit no-more-pads after pruning old pads +- Revert âqtdemux: fix conditions for end of segment in reverse + playbackâ to fix edit list regression +- qtdemux: Fix av1C parsing +- qtmux: Fix extraction of CEA608 data from S334-1A packets +- qtwindow: unref caps in destructor +- v4l2: device provider: Fix GMainLoop leak +- v4l2: videodec: Rework dynamic resolution change handling +- v4l2: videodec: Prefer acquired caps over anything downstream +- videoflip: fix setting of method property at construction time +- videoflip 1.22.2 not rotating video when extracting frames + +gst-plugins-bad + +- a2dpsink: Fails many tests in Bluetooth SIG Certification +- avdtputil: Use int instead of int range for fixed bitpool values +- ccconverter: reintroduce frame count reset on cycle completion +- ccconverter: integer overflow & crashing +- codectimestamper: remove PC file generation from pluginâs own + meson.build +- cudamemory: Fix for semi planar YUV memory size decision +- d3d11compositor: Reconfigure resource only when output caps is + changed +- d3d11compositor: Skip zero alpha input +- d3d11convert: Fix for runtime property update +- d3d11memory: Donât clear wrapped texture memory +- d3d11videosink: Fix for ignored initial render rectangle +- d3d11videosink: fix race condition in window unprepare +- d3d11videosink: Enhancement for initial window size decision +- d3d11videosink: Donât clear prepared buffer on unlock_stop() +- dashdemux: mpdclient: fix divide by 0 if segment has no duration +- dtlstransport: Keep strong ref of dtls encoder/decoder +- GstPlay: avoid getting property of playbin2 if subtitle_sid is null +- GstPlay: fix critical log when using playbin3 +- h264decoder: Drop nonexisting picture silently without error +- dtmf: element classification improvements +- mfvideoenc: Allow only even resolution numbers +- sctpenc: Fix potential shutdown deadlock +- srtpdec: fix âsrtp-keyâ check +- tests: disable dtls test if openssl is not present +- tsdemux: Set number of channels to 2 for dual mono Opus +- va: Various fixes for defects found with MSVC +- wasapi2: Allows process loopback capture on Windows 10 +- webrtcdatachannel: Bind to parent webrtcbin using a weak reference +- webrtcbin: Fix potential deadlock when closing before any data was + sent +- webrtc: Plug leaks of resolved ICE addresses +- webrtc: do not tear down data channel before data is flushed + +gst-plugins-ugly + +- mpegpsdemux: Rework gap sending + +gst-libav + +- avviddec: Temporarily unlock stream lock while flushing buffers +- Random freeze and deadlock in ffmpegviddec flush and get_buffer + while seeking + +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: base-xml-formatter: Donât pass non-GObject pointers to + GST_DEBUG_OBJECT + +gst-validate + gst-integration-testsuites + +- No changes + +gst-examples + +- No changes + +Development build environment + +- No changes + +Cerbero build tool and packaging changes in 1.22.3 + +- glib: Ship Windows process spawning helpers +- recipes: add recipe for libltc for timecodestamper element +- Add support for RHEL9 and Rocky Linux + +Contributors to 1.22.3 + +Aleksandr Slobodeniuk, Antonio Kevo, Arun Raghavan, Carlos Rafael Giani, +Daniel Moberg, Edward Hervey, Elliot Chen, François Laignel, Guillaume +Desmottes, Haihua Hu, Jan Alexander Steffens (heftig), Jan Beich, Jan +Schmidt, Johan Sternerup, John King, Jordan Petridis, Juan Navarro, Lily +Foster, Martin Nordholts, Mathieu Duponchelle, Matthew Waters, Matthias +Fuchs, Michael Olbrich, Mihail Ivanchev, Nick Steel, Nicolas Dufresne, +Nirbheek Chauhan, Patricia Muscalu, Philippe Normand, Piotr BrzeziÅski, +Sanchayan Maity, Sebastian Dröge, Seungha Yang, Stéphane Cerveau, +Thibault Saunier, Tim-Philipp Müller, Xabier Rodriguez Calvar, + +⦠and many others who have contributed bug reports, translations, sent +suggestions or helped testing. Thank you all! + +List of merge requests and issues fixed in 1.22.3 + +- List of Merge Requests applied in 1.22.3 +- List of Issues fixed in 1.22.3 + Schedule for 1.24 Our next major feature release will be 1.24, and 1.23 will be the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/README.md new/gst-plugins-base-1.22.3/README.md --- old/gst-plugins-base-1.22.2/README.md 2023-04-11 18:29:28.000000000 +0200 +++ new/gst-plugins-base-1.22.3/README.md 2023-05-19 10:23:19.000000000 +0200 @@ -1,4 +1,4 @@ -GStreamer 1.20.x stable series +GStreamer 1.22.x stable series WHAT IT IS ---------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/RELEASE new/gst-plugins-base-1.22.3/RELEASE --- old/gst-plugins-base-1.22.2/RELEASE 2023-04-11 18:29:28.000000000 +0200 +++ new/gst-plugins-base-1.22.3/RELEASE 2023-05-19 10:23:19.000000000 +0200 @@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-base 1.22.2. +This is GStreamer gst-plugins-base 1.22.3. 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/gst-plugins-base-1.22.2/ext/gl/gstglvideoflip.c new/gst-plugins-base-1.22.3/ext/gl/gstglvideoflip.c --- old/gst-plugins-base-1.22.2/ext/gl/gstglvideoflip.c 2023-04-11 18:29:28.000000000 +0200 +++ new/gst-plugins-base-1.22.3/ext/gl/gstglvideoflip.c 2023-05-19 10:23:19.000000000 +0200 @@ -345,10 +345,13 @@ gst_caps_append (output_caps, gst_caps_ref (templ)); GST_OBJECT_UNLOCK (vf); - g_object_set (vf->input_capsfilter, "caps", gst_caps_ref (caps), NULL); + g_object_set (vf->input_capsfilter, "caps", caps, NULL); g_object_set (vf->output_capsfilter, "caps", output_caps, NULL); g_object_set (vf->transformation, "rotation-z", rot_z, "scale-x", scale_x, "scale-y", scale_y, NULL); + + gst_caps_unref (output_caps); + GST_OBJECT_LOCK (vf); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/gst/audiotestsrc/gstaudiotestsrc.c new/gst-plugins-base-1.22.3/gst/audiotestsrc/gstaudiotestsrc.c --- old/gst-plugins-base-1.22.2/gst/audiotestsrc/gstaudiotestsrc.c 2023-04-11 18:29:28.000000000 +0200 +++ new/gst-plugins-base-1.22.3/gst/audiotestsrc/gstaudiotestsrc.c 2023-05-19 10:23:19.000000000 +0200 @@ -953,6 +953,10 @@ src->accumulator = 0; \ src->tick_counter++; \ volscale = calc_scaled_tick_volume (src, scale); \ + for (c = 0; c < channels; ++c) { \ + *ptr = 0; \ + ptr += channel_step; \ + } \ } else if (samplemod < num_nonzero_samples) { \ gdouble ramp; \ if (num_ramp_samples > 0) { \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/gst/playback/gstdecodebin3.c new/gst-plugins-base-1.22.3/gst/playback/gstdecodebin3.c --- old/gst-plugins-base-1.22.2/gst/playback/gstdecodebin3.c 2023-04-11 18:29:28.000000000 +0200 +++ new/gst-plugins-base-1.22.3/gst/playback/gstdecodebin3.c 2023-05-19 10:23:19.000000000 +0200 @@ -497,7 +497,7 @@ static gboolean set_input_group_id (DecodebinInput * input, guint32 * group_id); static gboolean reconfigure_output_stream (DecodebinOutputStream * output, - MultiQueueSlot * slot); + MultiQueueSlot * slot, GstMessage ** msg); static void free_output_stream (GstDecodebin3 * dbin, DecodebinOutputStream * output); static DecodebinOutputStream *create_output_stream (GstDecodebin3 * dbin, @@ -912,6 +912,7 @@ GstDecodebin3 *dbin = (GstDecodebin3 *) parent; GstQuery *query; gboolean pull_mode = FALSE; + gboolean has_caps = TRUE; GstPadLinkReturn res = GST_PAD_LINK_OK; DecodebinInput *input = g_object_get_data (G_OBJECT (pad), "decodebin.input"); @@ -928,12 +929,26 @@ GST_DEBUG_OBJECT (dbin, "Upstream can do pull-based : %d", pull_mode); - /* If upstream *can* do pull-based, we always use a parsebin. If not, we will - * delay that decision to a later stage (caps/stream/collection event - * processing) to figure out if one is really needed or whether an identity - * element will be enough */ + if (!pull_mode) { + /* If push-based, query if it will provide some caps */ + query = gst_query_new_caps (NULL); + if (gst_pad_query (peer, query)) { + GstCaps *rescaps = NULL; + gst_query_parse_caps_result (query, &rescaps); + if (!rescaps || gst_caps_is_any (rescaps) || gst_caps_is_empty (rescaps)) { + GST_DEBUG_OBJECT (dbin, "Upstream can't provide caps"); + has_caps = FALSE; + } + } + gst_query_unref (query); + } + + /* If upstream *can* do pull-based OR it doesn't have any caps, we always use + * a parsebin. If not, we will delay that decision to a later stage + * (caps/stream/collection event processing) to figure out if one is really + * needed or whether an identity element will be enough */ INPUT_LOCK (dbin); - if (pull_mode) { + if (pull_mode || !has_caps) { if (!ensure_input_parsebin (dbin, input)) res = GST_PAD_LINK_REFUSED; else if (input->identity) { @@ -1410,6 +1425,21 @@ } break; } + case GST_EVENT_SEGMENT: + { + const GstSegment *segment = NULL; + gst_event_parse_segment (event, &segment); + + /* All data reaching multiqueue must be in time format. If it's not, we + * need to use a parsebin on the incoming stream. + */ + if (segment && segment->format != GST_FORMAT_TIME && !input->parsebin) { + GST_DEBUG_OBJECT (sinkpad, + "Got a non-time segment, forcing parsebin handling"); + ensure_input_parsebin (dbin, input); + } + break; + } default: break; } @@ -2298,6 +2328,7 @@ check_slot_reconfiguration (GstDecodebin3 * dbin, MultiQueueSlot * slot) { DecodebinOutputStream *output; + GstMessage *msg = NULL; SELECTION_LOCK (dbin); output = get_output_for_slot (slot); @@ -2306,7 +2337,7 @@ return; } - if (!reconfigure_output_stream (output, slot)) { + if (!reconfigure_output_stream (output, slot, &msg)) { GST_DEBUG_OBJECT (dbin, "Removing failing stream from selection: %s ", gst_stream_get_stream_id (slot->active_stream)); slot->dbin->requested_selection = @@ -2314,12 +2345,14 @@ gst_stream_get_stream_id (slot->active_stream)); dbin->selection_updated = TRUE; SELECTION_UNLOCK (dbin); + if (msg) + gst_element_post_message ((GstElement *) slot->dbin, msg); reassign_slot (dbin, slot); } else { - GstMessage *msg = is_selection_done (dbin); + GstMessage *selection_msg = is_selection_done (dbin); SELECTION_UNLOCK (dbin); - if (msg) - gst_element_post_message ((GstElement *) slot->dbin, msg); + if (selection_msg) + gst_element_post_message ((GstElement *) slot->dbin, selection_msg); } } @@ -2713,7 +2746,7 @@ * associated GstStreams should be disabled */ static gboolean reconfigure_output_stream (DecodebinOutputStream * output, - MultiQueueSlot * slot) + MultiQueueSlot * slot, GstMessage ** msg) { GstDecodebin3 *dbin = output->dbin; GstCaps *new_caps = (GstCaps *) gst_stream_get_caps (slot->active_stream); @@ -2821,14 +2854,11 @@ if (output->decoder == NULL) { GstCaps *caps; - SELECTION_UNLOCK (dbin); /* FIXME : Should we be smarter if there's a missing decoder ? * Should we deactivate that stream ? */ caps = gst_stream_get_caps (slot->active_stream); - gst_element_post_message (GST_ELEMENT_CAST (dbin), - gst_missing_decoder_message_new (GST_ELEMENT_CAST (dbin), caps)); + *msg = gst_missing_decoder_message_new (GST_ELEMENT_CAST (dbin), caps); gst_caps_unref (caps); - SELECTION_LOCK (dbin); ret = FALSE; goto cleanup; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/gst/playback/gstplaysink.c new/gst-plugins-base-1.22.3/gst/playback/gstplaysink.c --- old/gst-plugins-base-1.22.2/gst/playback/gstplaysink.c 2023-04-11 18:29:28.000000000 +0200 +++ new/gst-plugins-base-1.22.3/gst/playback/gstplaysink.c 2023-05-19 10:23:19.000000000 +0200 @@ -4998,9 +4998,8 @@ /* fall through */ case GST_STATE_CHANGE_READY_TO_NULL: GST_PLAY_SINK_LOCK (playsink); - if (playsink->audiochain && playsink->audiochain->sink_volume) { - /* remove our links to the volume elements when they were - * provided by a sink */ + if (playsink->audiochain) { + /* remove our links to the volume elements */ disconnect_audio_chain (playsink->audiochain, playsink); if (playsink->audiochain->volume) gst_object_unref (playsink->audiochain->volume); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/gst/playback/gsturidecodebin3.c new/gst-plugins-base-1.22.3/gst/playback/gsturidecodebin3.c --- old/gst-plugins-base-1.22.2/gst/playback/gsturidecodebin3.c 2023-04-11 18:29:28.000000000 +0200 +++ new/gst-plugins-base-1.22.3/gst/playback/gsturidecodebin3.c 2023-05-19 10:23:19.000000000 +0200 @@ -370,7 +370,7 @@ static GstSourceHandler *new_source_handler (GstURIDecodeBin3 * uridecodebin, GstPlayItem * item, gboolean is_main); static void free_source_handler (GstURIDecodeBin3 * uridecodebin, - GstSourceHandler * item); + GstSourceHandler * item, gboolean lock_state); static void free_source_item (GstURIDecodeBin3 * uridecodebin, GstSourceItem * item); @@ -976,14 +976,21 @@ if (handler->is_main_source && handler->play_item->sub_item && !handler->play_item->sub_item->handler) { GstStateChangeReturn ret; + + /* The state lock is taken to ensure we can atomically change the + * urisourcebin back to NULL in case of failures */ + GST_STATE_LOCK (uridecodebin); handler->play_item->sub_item->handler = new_source_handler (uridecodebin, handler->play_item, FALSE); ret = activate_source_item (handler->play_item->sub_item); if (ret == GST_STATE_CHANGE_FAILURE) { - free_source_handler (uridecodebin, handler->play_item->sub_item->handler); + free_source_handler (uridecodebin, handler->play_item->sub_item->handler, + FALSE); handler->play_item->sub_item->handler = NULL; + GST_STATE_UNLOCK (uridecodebin); goto sub_item_activation_failed; } + GST_STATE_UNLOCK (uridecodebin); } return; @@ -1631,14 +1638,17 @@ } } +/* lock_state: TRUE if the STATE LOCK should be taken. Set to FALSE if the + * caller already has taken it */ static void free_source_handler (GstURIDecodeBin3 * uridecodebin, - GstSourceHandler * handler) + GstSourceHandler * handler, gboolean lock_state) { GST_LOG_OBJECT (uridecodebin, "source handler %p", handler); if (handler->active) { GList *iter; - GST_STATE_LOCK (uridecodebin); + if (lock_state) + GST_STATE_LOCK (uridecodebin); GST_LOG_OBJECT (uridecodebin, "Removing %" GST_PTR_FORMAT, handler->urisourcebin); for (iter = handler->sourcepads; iter; iter = iter->next) { @@ -1648,7 +1658,8 @@ } gst_element_set_state (handler->urisourcebin, GST_STATE_NULL); gst_bin_remove ((GstBin *) uridecodebin, handler->urisourcebin); - GST_STATE_UNLOCK (uridecodebin); + if (lock_state) + GST_STATE_UNLOCK (uridecodebin); g_list_free (handler->sourcepads); } if (handler->pending_buffering_msg) @@ -1672,7 +1683,7 @@ { GST_LOG_OBJECT (uridecodebin, "source item %p", item); if (item->handler) - free_source_handler (uridecodebin, item->handler); + free_source_handler (uridecodebin, item->handler, TRUE); g_free (item->uri); g_slice_free (GstSourceItem, item); } @@ -1899,12 +1910,16 @@ /* Create missing handlers */ if (item->main_item->handler == NULL) { + /* The state lock is taken to ensure we can atomically change the + * urisourcebin back to NULL in case of failures */ + GST_STATE_LOCK (dec); item->main_item->handler = new_source_handler (dec, item, TRUE); ret = activate_source_item (item->main_item); if (ret == GST_STATE_CHANGE_FAILURE) { - free_source_handler (dec, item->main_item->handler); + free_source_handler (dec, item->main_item->handler, FALSE); item->main_item->handler = NULL; } + GST_STATE_UNLOCK (dec); } return ret; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/gst-libs/gst/gl/wgl/gstglcontext_wgl.c new/gst-plugins-base-1.22.3/gst-libs/gst/gl/wgl/gstglcontext_wgl.c --- old/gst-plugins-base-1.22.2/gst-libs/gst/gl/wgl/gstglcontext_wgl.c 2023-04-11 18:29:28.000000000 +0200 +++ new/gst-plugins-base-1.22.3/gst-libs/gst/gl/wgl/gstglcontext_wgl.c 2023-05-19 10:23:19.000000000 +0200 @@ -528,5 +528,7 @@ pixfmt = GetPixelFormat (hdc); + gst_object_unref (window); + return pixel_format_to_structure (hdc, pixfmt); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/gst-plugins-base.doap new/gst-plugins-base-1.22.3/gst-plugins-base.doap --- old/gst-plugins-base-1.22.2/gst-plugins-base.doap 2023-04-11 18:29:28.000000000 +0200 +++ new/gst-plugins-base-1.22.3/gst-plugins-base.doap 2023-05-19 10:23:19.000000000 +0200 @@ -36,6 +36,16 @@ <release> <Version> + <revision>1.22.3</revision> + <branch>1.22</branch> + <name></name> + <created>2023-05-19</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.22.3.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.22.2</revision> <branch>1.22</branch> <name></name> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/meson.build new/gst-plugins-base-1.22.3/meson.build --- old/gst-plugins-base-1.22.2/meson.build 2023-04-11 18:29:28.000000000 +0200 +++ new/gst-plugins-base-1.22.3/meson.build 2023-05-19 10:23:19.000000000 +0200 @@ -1,5 +1,5 @@ project('gst-plugins-base', 'c', - version : '1.22.2', + version : '1.22.3', meson_version : '>= 0.62', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/po/gst-plugins-base-1.0.pot new/gst-plugins-base-1.22.3/po/gst-plugins-base-1.0.pot --- old/gst-plugins-base-1.22.2/po/gst-plugins-base-1.0.pot 2023-04-11 18:30:16.468501300 +0200 +++ new/gst-plugins-base-1.22.3/po/gst-plugins-base-1.0.pot 2023-05-19 10:24:07.610512000 +0200 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-base-1.22.2\n" +"Project-Id-Version: gst-plugins-base-1.22.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-04-11 17:30+0100\n" +"POT-Creation-Date: 2023-05-19 09:24+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" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/po/gst-plugins-base.pot new/gst-plugins-base-1.22.3/po/gst-plugins-base.pot --- old/gst-plugins-base-1.22.2/po/gst-plugins-base.pot 2023-04-11 18:30:16.468501300 +0200 +++ new/gst-plugins-base-1.22.3/po/gst-plugins-base.pot 2023-05-19 10:24:07.610512000 +0200 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-base-1.22.2\n" +"Project-Id-Version: gst-plugins-base-1.22.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-04-11 17:30+0100\n" +"POT-Creation-Date: 2023-05-19 09:24+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" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gst-plugins-base-1.22.2/tests/check/libs/allocators.c new/gst-plugins-base-1.22.3/tests/check/libs/allocators.c --- old/gst-plugins-base-1.22.2/tests/check/libs/allocators.c 2023-04-11 18:29:28.000000000 +0200 +++ new/gst-plugins-base-1.22.3/tests/check/libs/allocators.c 2023-05-19 10:23:19.000000000 +0200 @@ -95,7 +95,43 @@ gst_memory_unmap (mem, &info); gst_memory_unref (mem); - fail_unless (g_close (fd, NULL) == 0); + gst_object_unref (alloc); +} + +GST_END_TEST; + +GST_START_TEST (test_fdmem_dont_close) +{ + GstAllocator *alloc; + GstMemory *mem; + GstMapInfo info; + GError *error = NULL; + int fd; + const char *data = "0123456789"; + + fd = g_file_open_tmp (NULL, NULL, &error); + fail_if (error); + fail_unless (write (fd, data, 10) == 10); + + alloc = gst_fd_allocator_new (); + fail_unless (alloc); + mem = gst_fd_allocator_alloc (alloc, fd, 10, + GST_FD_MEMORY_FLAG_KEEP_MAPPED | GST_FD_MEMORY_FLAG_DONT_CLOSE); + + fail_unless (gst_memory_map (mem, &info, GST_MAP_READ)); + fail_unless (info.data[5] == '5'); + gst_memory_unmap (mem, &info); + + fail_unless (gst_memory_map (mem, &info, GST_MAP_WRITE)); + info.data[5] = 'X'; + gst_memory_unmap (mem, &info); + + fail_unless (gst_memory_map (mem, &info, GST_MAP_READ)); + fail_unless (info.data[5] == 'X'); + gst_memory_unmap (mem, &info); + + gst_memory_unref (mem); + fail_unless (g_close (fd, NULL)); gst_object_unref (alloc); } @@ -110,6 +146,7 @@ suite_add_tcase (s, tc_chain); tcase_add_test (tc_chain, test_dmabuf); tcase_add_test (tc_chain, test_fdmem); + tcase_add_test (tc_chain, test_fdmem_dont_close); return s; } ++++++ reduce-required-meson.patch ++++++ --- /var/tmp/diff_new_pack.pf7oMz/_old 2023-05-28 19:21:39.132537049 +0200 +++ /var/tmp/diff_new_pack.pf7oMz/_new 2023-05-28 19:21:39.136537073 +0200 @@ -1,10 +1,10 @@ -Index: gst-plugins-base-1.22.2/meson.build +Index: gst-plugins-base-1.22.3/meson.build =================================================================== ---- gst-plugins-base-1.22.2.orig/meson.build -+++ gst-plugins-base-1.22.2/meson.build +--- gst-plugins-base-1.22.3.orig/meson.build ++++ gst-plugins-base-1.22.3/meson.build @@ -1,6 +1,6 @@ project('gst-plugins-base', 'c', - version : '1.22.2', + version : '1.22.3', - meson_version : '>= 0.62', + meson_version : '>= 0.61', default_options : [ 'warning_level=1',