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 <[email protected]>
+
+- 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 <[email protected]>
+
+ * NEWS:
+ * README.md:
+ * RELEASE:
+ * gst-plugins-base.doap:
+ * meson.build:
+ Release 1.22.3
+
+2023-05-17 21:43:21 +1000 Matthew Waters <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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)
<[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * 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 <[email protected]>
+
+ * meson.build:
+ Back to development
+
=== release 1.22.2 ===
2023-04-11 17:29:28 +0100 Tim-Philipp Müller <[email protected]>
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 <[email protected]>\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 <[email protected]>\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',