Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gstreamer-plugins-bad for
openSUSE:Factory checked in at 2023-07-27 16:50:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-bad (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-plugins-bad.new.32662 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-bad"
Thu Jul 27 16:50:26 2023 rev:148 rq:1100821 version:1.22.5
Changes:
--------
---
/work/SRC/openSUSE:Factory/gstreamer-plugins-bad/gstreamer-plugins-bad.changes
2023-07-01 23:17:29.126056798 +0200
+++
/work/SRC/openSUSE:Factory/.gstreamer-plugins-bad.new.32662/gstreamer-plugins-bad.changes
2023-07-27 16:50:44.269790309 +0200
@@ -1,0 +2,12 @@
+Tue Jul 25 11:09:02 UTC 2023 - Bjørn Lie <[email protected]>
+
+- Update to version 1.22.5:
+ + d3d11bufferpool: Fix heavy CPU usage in case of fixed-size pool
+ + jpegparser: jpegdecoder: Don't pollute bus and comply with spec
+ + plugins: fix compiler warnings with GLib >= 2.76
+ + webrtcbin: Prevent critical warning when creating an additional
+ data channel
+ + webrtcstats: Properly report IceCandidate type
+- Rebase reduce-required-meson.patch.
+
+-------------------------------------------------------------------
Old:
----
gst-plugins-bad-1.22.4.tar.xz
New:
----
gst-plugins-bad-1.22.5.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-plugins-bad.spec ++++++
--- /var/tmp/diff_new_pack.1GyRag/_old 2023-07-27 16:50:44.901793879 +0200
+++ /var/tmp/diff_new_pack.1GyRag/_new 2023-07-27 16:50:44.905793902 +0200
@@ -71,7 +71,7 @@
%endif
Name: gstreamer-plugins-bad
-Version: 1.22.4
+Version: 1.22.5
Release: 0
Summary: GStreamer Streaming-Media Framework Plug-Ins
License: LGPL-2.1-or-later
++++++ gst-plugins-bad-1.22.4.tar.xz -> gst-plugins-bad-1.22.5.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.22.4/ChangeLog
new/gst-plugins-bad-1.22.5/ChangeLog
--- old/gst-plugins-bad-1.22.4/ChangeLog 2023-06-20 18:48:28.867239500
+0200
+++ new/gst-plugins-bad-1.22.5/ChangeLog 2023-07-20 16:26:15.236034400
+0200
@@ -1,3 +1,103 @@
+=== release 1.22.5 ===
+
+2023-07-20 15:22:48 +0100 Tim-Philipp Müller <[email protected]>
+
+ * NEWS:
+ * RELEASE:
+ * gst-plugins-bad.doap:
+ * meson.build:
+ Release 1.22.5
+
+2023-02-19 10:41:51 +0100 VÃctor Manuel Jáquez Leal <[email protected]>
+
+ * gst/jpegformat/gstjpegparse.c:
+ jpegparse: Warn only malformed data in APP data.
+ It's only malformed data in APP when its length is less than 6 chars,
+ because it should have at least an id string. Otherwise, if the id
string
+ is not handled, no warning is raised, only a debug message noticing
it.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5053>
+
+2023-02-15 19:02:35 +0100 VÃctor Manuel Jáquez Leal <[email protected]>
+
+ * gst/jpegformat/gstjpegparse.c:
+ jpegparse: Parse AVI1 tag in app0.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5053>
+
+2023-02-12 16:11:34 +0800 He Junyan <[email protected]>
+
+ * sys/va/gstjpegdecoder.c:
+ va: jpegdecoder: Do not check SOS state when parsing DRI marker.
+ According to spec, the JPEG_MARKER_DRI(Restart interval definition)
+ marker can come before the SOS marker. So we should not check the SOS
+ state when parsing the DRI marker.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5053>
+
+2023-07-11 21:41:46 +0200 Carlos Rafael Giani <[email protected]>
+
+ * meson.build:
+ gl: Take into account viv-fb vs. viv_fb naming in meson scripts
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4959>
+
+2023-05-16 21:24:44 +1000 Matthew Waters <[email protected]>
+
+ * meson.build:
+ gl: provide a pkg-config/gir file for the viv-fb backend
+ Required to be able to generate coherent bindings for window system
+ specific APIs due to limitations in gobject-introspection.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4959>
+
+2023-03-26 16:40:28 +0100 Tim-Philipp Müller <[email protected]>
+
+ * ext/teletextdec/gstteletextdec.c:
+ * sys/winks/gstksvideodevice.c:
+ * sys/winks/kshelpers.c:
+ * tools/gst-app-maker:
+ taglist, plugins: fix compiler warnings with GLib >= 2.76
+ Fix compiler warnings about not using the return value when
+ freeing the GString segment with g_string_free(.., FALSE):
+ ignoring return value of âg_string_free_and_stealâ declared with
attribute âwarn_unused_resultâ
+ which we get with newer GLib versions. These were all harmless.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5015>
+
+2023-06-27 05:09:49 +0900 Seungha Yang <[email protected]>
+
+ * gst-libs/gst/d3d11/gstd3d11bufferpool.cpp:
+ * tests/check/libs/d3d11memory.c:
+ * tests/check/meson.build:
+ d3d11bufferpool: Fix heavy CPU usage in case of fixed-size pool
+ There's no reason to release GstMemory manually at all.
+ If we do release GstMemory, corresponding GstBuffer will be
+ discarded by GstBufferPool baseclass because the size is changed
+ to zero.
+ Actual cause of heavy CPU usage in case of fixed-size pool
+ (i.e., decoder output buffer pool) and if we remove GstMemory from
+ GstBuffer is that GstBufferPool baseclass is doing busy wait in
acquire_buffer()
+ for some reason. That needs to be investigated though, discarding
+ and re-alloc every GstBuffer is not ideal already.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4943>
+
+2023-07-10 12:03:25 +0100 Philippe Normand <[email protected]>
+
+ * ext/webrtc/gstwebrtcbin.c:
+ * tests/check/elements/webrtcbin.c:
+ webrtcbin: Prevent critical warning when creating an additional data
channel
+ The max_channels value wasn't clamped to 65534 in all situations.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5012>
+
+2023-06-30 18:30:46 +0100 Philippe Normand <[email protected]>
+
+ * ext/webrtc/gstwebrtcstats.c:
+ webrtcstats: Properly report IceCandidate type
+ strcmp returns a positive value if s1 is greater than s2, while we
actually
+ needed to check equality here.
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4957>
+
+2023-06-20 19:10:38 +0100 Tim-Philipp Müller <[email protected]>
+
+ * meson.build:
+ Back to development
+ Part-of:
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4907>
+
=== release 1.22.4 ===
2023-06-20 17:42:25 +0100 Tim-Philipp Müller <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.22.4/NEWS
new/gst-plugins-bad-1.22.5/NEWS
--- old/gst-plugins-bad-1.22.4/NEWS 2023-06-20 18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/NEWS 2023-07-20 16:22:48.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.4 and was
-released on 20 June 2023.
+The latest bug-fix release in the stable 1.22 series is 1.22.5 and was
+released on 20 July 2023.
See https://gstreamer.freedesktop.org/releases/1.22/ for the latest
version of this document.
-Last updated: Tuesday 20 June 2023, 16:30 UTC (log)
+Last updated: Thursday 20 July 2023, 12:00 UTC (log)
Introduction
@@ -2008,6 +2008,187 @@
- List of Merge Requests applied in 1.22.4
- List of Issues fixed in 1.22.4
+1.22.5
+
+The fifth 1.22 bug-fix release (1.22.5) was released on 20 July 2023.
+
+This release only contains bugfixes and security fixes and it should be
+safe to update from 1.22.x.
+
+Highlighted bugfixes in 1.22.5
+
+- Security fixes for the RealMedia demuxer
+- vaapi decoders, postproc: Disable DMAbuf from caps negotiation to
+ fix garbled video in some cases
+- decodebin3, playbin3, parsebin fixes, especially for stream
+ reconfiguration
+- hlsdemux2: fix early seeking; donât pass referer when updating
+ playlists; webvtt fixes
+- gtk: Fix critical caused by pointer movement when stream is getting
+ ready
+- qt6: Set sampler filtering method, fixes bad quality with qml6glsink
+ and gstqt6d3d11
+- v4l2src: handle resolution change when buffers are copied
+- videoflip: update orientation tag in auto mode
+- video timecode: Add support for framerates lower than 1fps and
+ accept 119.88 (120/1.001) fps
+- webrtcsink: fixes for x264enc and NVIDIA encoders
+- cerbero: Pull ninja from system if possible, avoid spurious
+ bootstrap of cmake
+- packages: Recipe updates for ffmpeg, libsoup, orc
+- various bug fixes, memory leak fixes, and other stability and
+ reliability improvements
+
+gstreamer
+
+- taglist, plugins: fix compiler warnings with GLib >= 2.76
+- tracerutils: allow casting parameter types
+- inputselector: fix playing variable is never set
+
+gst-plugins-base
+
+- appsink: add missing make_writable call
+- audioaggregator: Do not post message before being constructed
+- decodebin3: Prevent a critical warning when reassigning output slots
+- decodebin3: Fix slot input linking when the associated stream has
+ changed
+- decodebin3: Remove spurious input locking during parsebin
+ reconfiguration
+- urisourcebin: Set source element to READY before querying it
+- gl/viv-fb: meson build updates
+- plugins: fix compiler warnings with GLib >= 2.76
+- subtitleoverlay: fix mutex error if sink caps is not video
+- video: timecode: Add support for framerates lower than 1fps
+- video: accept timecode of 119.88 (120/1.001) FPS
+- video: cannot attach time code meta when frame rate is 119.88
+ (120000/1001)
+- videodecoder: fix copying buffer metas
+
+gst-plugins-good
+
+- adaptivedemux2: Fix early seeking
+- hlsdemux2: Ensure processed webvtt ends with empty new line
+- hlsdemux2: Donât set a referer when updating playlists
+- matroska: demux: Strip signal byte when encrypted
+- rtspsrc: Fix crash when is-live=false
+- gtk: Fix critical caused by pointer movement when stream is getting
+ ready
+- qt6: Set sampler filtering method, fixes bad quality with qml6glsink
+ and gstqt6d3d11
+- qtdemux: opus: set entry as sampled
+- v4l2src: handle resolution change when buffers are copied
+- v4l2videodec: Fix handling of initial gaps
+- v4l2videodec: correctly register v4l2mpeg2dec
+- v4l2videoenc: replace custom QUERY_CAPS handling with getcaps
+ callback
+- videoflip: update orientation tag in auto mode
+- videoflip: fix critical when tag list is not writable
+
+gst-plugins-bad
+
+- d3d11bufferpool: Fix heavy CPU usage in case of fixed-size pool
+- jpegparser: jpegdecoder: Donât pollute bus and comply with spec
+- plugins: fix compiler warnings with GLib >= 2.76
+- webrtcbin: Prevent critical warning when creating an additional data
+ channel
+- webrtcstats: Properly report IceCandidate type
+
+gst-plugins-ugly
+
+- rmdemux: add some integer overflow checks
+
+gst-plugins-rs
+
+- fallbackswitch: Change the threshold for trailing buffers
+- fallbackswitch: Fix pad health calculation and notifies
+- fmp4mux: Fix draining in chunk mode if keyframes are too late
+- livesync: Wait for the end timestamp of the previous buffer before
+ looking at queue
+- livesync: Improve EOS handling
+- togglerecord: Clip segment before calculating timestamp/duration
+- togglerecord: Error out if main stream buffer has no valid running
+ time
+- webrtcsink: fix pipeline when input caps contain max-framerate
+- webrtcsink: Configure only 4 threads for x264enc
+- webrtcsink: Translate force-keyunit events to force-IDR action
+ signal for NVIDIA encoders
+- webrtcsink: Set config-interval=-1 and aggregate-mode=zero-latency
+ on rtph264pay and rtph265pay
+- webrtcsink: Set VP8/VP9 payloader based on payloader element factory
+ name
+- webrtcink: Use correct property types for nvvideoconvert
+- webrtc/signalling: fix race condition in message ordering
+- videofx: Minimize dependencies of the image crate
+
+gst-libav
+
+- No changes
+
+gst-rtsp-server
+
+- No changes
+
+gstreamer-vaapi
+
+- vaapidecode,vaapipostproc: Disable DMAbuf from caps negotiation.
+
+gstreamer-sharp
+
+- No changes
+
+gst-omx
+
+- No changes
+
+gst-python
+
+- No changes
+
+gst-editing-services
+
+- ges: some fixes for 32-bit systems
+- ges, nle: Avoid setting state or sending query when constructing
+ objects
+
+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.5
+
+- Pull ninja from system if possible, avoid spurious bootstrap of
+ cmake
+- ffmpeg: update to 5.0.3
+- libsoup: update to 2.74.3
+- orc: update to 0.4.34
+
+Contributors to 1.22.5
+
+Andoni Morales Alastruey, Bastien Nocera, Carlos Rafael Giani, David
+Craven, Doug Nazar, Edward Hervey, François Laignel, Guillaume
+Desmottes, He Junyan, Hou Qi, Jan Alexander Steffens (heftig), Jan
+Schmidt, Maksym Khomenko, Mathieu Duponchelle, Matthew Waters, Michael
+Olbrich, Michael Tretter, Nicolas Dufresne, Nirbheek Chauhan, Philippe
+Normand, Ruslan Khamidullin, Sebastian Dröge, Seungha Yang, Théo
+Maillart, Thibault Saunier, Tim-Philipp Müller, VÃctor Manuel Jáquez
+Leal, Vivia Nikolaidou, Yatin Maan,
+
+⦠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.5
+
+- List of Merge Requests applied in 1.22.5
+- List of Issues fixed in 1.22.5
+
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-bad-1.22.4/RELEASE
new/gst-plugins-bad-1.22.5/RELEASE
--- old/gst-plugins-bad-1.22.4/RELEASE 2023-06-20 18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/RELEASE 2023-07-20 16:22:48.000000000 +0200
@@ -1,4 +1,4 @@
-This is GStreamer gst-plugins-bad 1.22.4.
+This is GStreamer gst-plugins-bad 1.22.5.
The GStreamer team is thrilled to announce a new major feature release
of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.22.4/ext/teletextdec/gstteletextdec.c
new/gst-plugins-bad-1.22.5/ext/teletextdec/gstteletextdec.c
--- old/gst-plugins-bad-1.22.4/ext/teletextdec/gstteletextdec.c 2023-06-20
18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/ext/teletextdec/gstteletextdec.c 2023-07-20
16:22:48.000000000 +0200
@@ -874,9 +874,8 @@
if (!g_strcmp0 (subs->str, ""))
g_string_append (subs, "\n");
- text = subs->str;
size = subs->len + 1;
- g_string_free (subs, FALSE);
+ text = g_string_free (subs, FALSE);
g_strfreev (lines);
} else {
size = page->columns * page->rows;
@@ -935,6 +934,7 @@
gchar **lines;
GString *subs;
guint start, stop, k;
+ gsize len;
gint i, j;
colors = (gchar **) g_malloc (sizeof (gchar *) * (rows + 1));
@@ -965,11 +965,11 @@
}
/* Allocate new buffer */
- *buf = gst_buffer_new_wrapped (subs->str, subs->len + 1);
+ len = subs->len + 1;
+ *buf = gst_buffer_new_wrapped (g_string_free (subs, FALSE), len);
g_strfreev (lines);
g_strfreev (colors);
- g_string_free (subs, FALSE);
return GST_FLOW_OK;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.22.4/ext/webrtc/gstwebrtcbin.c
new/gst-plugins-bad-1.22.5/ext/webrtc/gstwebrtcbin.c
--- old/gst-plugins-bad-1.22.4/ext/webrtc/gstwebrtcbin.c 2023-06-20
18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/ext/webrtc/gstwebrtcbin.c 2023-07-20
16:22:48.000000000 +0200
@@ -7110,6 +7110,10 @@
g_object_get (webrtc->priv->sctp_transport, "max-channels", &max_channels,
NULL);
+ if (max_channels <= 0) {
+ max_channels = 65534;
+ }
+
g_return_val_if_fail (id <= max_channels, NULL);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.22.4/ext/webrtc/gstwebrtcstats.c
new/gst-plugins-bad-1.22.5/ext/webrtc/gstwebrtcstats.c
--- old/gst-plugins-bad-1.22.4/ext/webrtc/gstwebrtcstats.c 2023-06-20
18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/ext/webrtc/gstwebrtcstats.c 2023-07-20
16:22:48.000000000 +0200
@@ -581,9 +581,9 @@
can->stream_id, can->ipaddr, can->port);
stats = gst_structure_new_empty (id);
- if (strcmp (candidate_tag, "local")) {
+ if (g_str_equal (candidate_tag, "local")) {
type = GST_WEBRTC_STATS_LOCAL_CANDIDATE;
- } else if (strcmp (candidate_tag, "remote")) {
+ } else if (g_str_equal (candidate_tag, "remote")) {
type = GST_WEBRTC_STATS_REMOTE_CANDIDATE;
} else {
GST_WARNING_OBJECT (webrtc, "Invalid ice candidate tag: %s",
candidate_tag);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.22.4/gst/jpegformat/gstjpegparse.c
new/gst-plugins-bad-1.22.5/gst/jpegformat/gstjpegparse.c
--- old/gst-plugins-bad-1.22.4/gst/jpegformat/gstjpegparse.c 2023-06-20
18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/gst/jpegformat/gstjpegparse.c 2023-07-20
16:22:48.000000000 +0200
@@ -50,6 +50,7 @@
* + APP3 -- meta (same as exif)
* + APP12 -- Photoshop Save for Web: Ducky / Picture info
* + APP13 -- Adobe IRB
+ * + check for interlaced mjpeg
*/
#ifdef HAVE_CONFIG_H
@@ -367,7 +368,7 @@
guint16 xd, yd;
guint8 unit, xt, yt;
- if (seg->size < 14) /* length of interesting data in APP0 */
+ if (seg->size < 6) /* less than 6 means no id string */
return FALSE;
gst_byte_reader_init (&reader, seg->data + seg->offset, seg->size);
@@ -436,7 +437,21 @@
return TRUE;
}
- return FALSE;
+ /* https://exiftool.org/TagNames/JPEG.html#AVI1 */
+ if (g_strcmp0 (id_str, "AVI1") == 0) {
+ /* polarity */
+ if (!gst_byte_reader_get_uint8 (&reader, &unit))
+ return FALSE;
+
+ /* TODO: update caps for interlaced MJPEG */
+ GST_DEBUG_OBJECT (parse, "MJPEG interleaved field: %d", unit);
+
+ return TRUE;
+ }
+
+ GST_DEBUG_OBJECT (parse, "Unhandled app0: %s", id_str);
+
+ return TRUE;
}
/* *INDENT-OFF* */
@@ -460,6 +475,9 @@
const guint8 *data;
gint i;
+ if (seg->size < 6) /* less than 6 means no id string */
+ return FALSE;
+
gst_byte_reader_init (&reader, seg->data + seg->offset, seg->size);
gst_byte_reader_skip_unchecked (&reader, 2);
@@ -497,12 +515,15 @@
gst_tag_list_unref (tags);
} else {
GST_INFO_OBJECT (parse, "failed to parse %s: %s", id_str, data);
+ return FALSE;
}
}
return TRUE;
}
+ GST_DEBUG_OBJECT (parse, "Unhandled app1: %s", id_str);
+
return TRUE;
}
@@ -513,7 +534,7 @@
const gchar *id_str;
guint8 transform;
- if (seg->size < 12) /* length of interesting data in APP14 */
+ if (seg->size < 6) /* less than 6 means no id string */
return FALSE;
gst_byte_reader_init (&reader, seg->data + seg->offset, seg->size);
@@ -522,8 +543,10 @@
if (!gst_byte_reader_get_string_utf8 (&reader, &id_str))
return FALSE;
- if (!g_str_has_prefix (id_str, "Adobe"))
- return FALSE;
+ if (!g_str_has_prefix (id_str, "Adobe")) {
+ GST_DEBUG_OBJECT (parse, "Unhandled app14: %s", id_str);
+ return TRUE;
+ }
/* skip version and flags */
if (!gst_byte_reader_skip (&reader, 6))
@@ -568,13 +591,13 @@
return FALSE;
comment = get_utf8_from_data (data, size);
+ if (!comment)
+ return FALSE;
- if (comment) {
- GST_INFO_OBJECT (parse, "comment found: %s", comment);
- gst_tag_list_add (get_tag_list (parse), GST_TAG_MERGE_REPLACE,
- GST_TAG_COMMENT, comment, NULL);
- g_free (comment);
- }
+ GST_INFO_OBJECT (parse, "comment found: %s", comment);
+ gst_tag_list_add (get_tag_list (parse), GST_TAG_MERGE_REPLACE,
+ GST_TAG_COMMENT, comment, NULL);
+ g_free (comment);
return TRUE;
}
@@ -773,25 +796,25 @@
case GST_JPEG_MARKER_COM:
if (!gst_jpeg_parse_com (parse, &seg)) {
GST_ELEMENT_WARNING (parse, STREAM, FORMAT,
- ("Failed to parse com segment"), (NULL));
+ ("Failed to parse com segment"), ("Invalid data"));
}
break;
case GST_JPEG_MARKER_APP0:
if (!gst_jpeg_parse_app0 (parse, &seg)) {
GST_ELEMENT_WARNING (parse, STREAM, FORMAT,
- ("Failed to parse app0 segment"), (NULL));
+ ("Failed to parse app0 segment"), ("Invalid data"));
}
break;
case GST_JPEG_MARKER_APP1:
if (!gst_jpeg_parse_app1 (parse, &seg)) {
GST_ELEMENT_WARNING (parse, STREAM, FORMAT,
- ("Failed to parse app1 segment"), (NULL));
+ ("Failed to parse app1 segment"), ("Invalid data"));
}
break;
case GST_JPEG_MARKER_APP14:
if (!gst_jpeg_parse_app14 (parse, &seg)) {
GST_ELEMENT_WARNING (parse, STREAM, FORMAT,
- ("Failed to parse app14 segment"), (NULL));
+ ("Failed to parse app14 segment"), ("Invalid data"));
}
break;
case GST_JPEG_MARKER_DHT:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.22.4/gst-libs/gst/d3d11/gstd3d11bufferpool.cpp
new/gst-plugins-bad-1.22.5/gst-libs/gst/d3d11/gstd3d11bufferpool.cpp
--- old/gst-plugins-bad-1.22.4/gst-libs/gst/d3d11/gstd3d11bufferpool.cpp
2023-06-20 18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/gst-libs/gst/d3d11/gstd3d11bufferpool.cpp
2023-07-20 16:22:48.000000000 +0200
@@ -50,7 +50,6 @@
GstD3D11Allocator *alloc[GST_VIDEO_MAX_PLANES];
GstD3D11AllocationParams *d3d11_params;
- gboolean texture_array_pool;
gint stride[GST_VIDEO_MAX_PLANES];
gsize offset[GST_VIDEO_MAX_PLANES];
@@ -66,10 +65,6 @@
GstStructure * config);
static GstFlowReturn gst_d3d11_buffer_pool_alloc_buffer (GstBufferPool * pool,
GstBuffer ** buffer, GstBufferPoolAcquireParams * params);
-static GstFlowReturn gst_d3d11_buffer_pool_acquire_buffer (GstBufferPool *
pool,
- GstBuffer ** buffer, GstBufferPoolAcquireParams * params);
-static void gst_d3d11_buffer_pool_reset_buffer (GstBufferPool * pool,
- GstBuffer * buffer);
static gboolean gst_d3d11_buffer_pool_start (GstBufferPool * pool);
static gboolean gst_d3d11_buffer_pool_stop (GstBufferPool * pool);
@@ -84,8 +79,6 @@
bufferpool_class->get_options = gst_d3d11_buffer_pool_get_options;
bufferpool_class->set_config = gst_d3d11_buffer_pool_set_config;
bufferpool_class->alloc_buffer = gst_d3d11_buffer_pool_alloc_buffer;
- bufferpool_class->acquire_buffer = gst_d3d11_buffer_pool_acquire_buffer;
- bufferpool_class->reset_buffer = gst_d3d11_buffer_pool_reset_buffer;
bufferpool_class->start = gst_d3d11_buffer_pool_start;
bufferpool_class->stop = gst_d3d11_buffer_pool_stop;
@@ -244,10 +237,6 @@
max_buffers, max_array_size);
max_buffers = max_array_size;
}
-
- priv->texture_array_pool = TRUE;
- } else {
- priv->texture_array_pool = FALSE;
}
offset = 0;
@@ -370,17 +359,10 @@
GstFlowReturn ret = GST_FLOW_OK;
buf = gst_buffer_new ();
- /* In case of texture-array, we are releasing memory objects in
- * the GstBufferPool::reset_buffer() so that GstD3D11Memory objects can be
- * returned to the GstD3D11PoolAllocator. So, underlying GstD3D11Memory
- * will be filled in the later GstBufferPool::acquire_buffer() call.
- * Don't fill memory here for non-texture-array therefore */
- if (!priv->texture_array_pool) {
- ret = gst_d3d11_buffer_pool_fill_buffer (self, buf);
- if (ret != GST_FLOW_OK) {
- gst_buffer_unref (buf);
- return ret;
- }
+ ret = gst_d3d11_buffer_pool_fill_buffer (self, buf);
+ if (ret != GST_FLOW_OK) {
+ gst_buffer_unref (buf);
+ return ret;
}
gst_buffer_add_video_meta_full (buf, GST_VIDEO_FRAME_FLAG_NONE,
@@ -393,48 +375,6 @@
return GST_FLOW_OK;
}
-static GstFlowReturn
-gst_d3d11_buffer_pool_acquire_buffer (GstBufferPool * pool,
- GstBuffer ** buffer, GstBufferPoolAcquireParams * params)
-{
- GstD3D11BufferPool *self = GST_D3D11_BUFFER_POOL (pool);
- GstD3D11BufferPoolPrivate *priv = self->priv;
- GstFlowReturn ret;
-
- ret = GST_BUFFER_POOL_CLASS (parent_class)->acquire_buffer (pool,
- buffer, params);
-
- if (ret != GST_FLOW_OK)
- return ret;
-
- /* Don't need special handling for non-texture-array case */
- if (!priv->texture_array_pool)
- return ret;
-
- /* Baseclass will hold empty buffer in this case, fill GstMemory */
- g_assert (gst_buffer_n_memory (*buffer) == 0);
-
- return gst_d3d11_buffer_pool_fill_buffer (self, *buffer);
-}
-
-static void
-gst_d3d11_buffer_pool_reset_buffer (GstBufferPool * pool, GstBuffer * buffer)
-{
- GstD3D11BufferPool *self = GST_D3D11_BUFFER_POOL (pool);
- GstD3D11BufferPoolPrivate *priv = self->priv;
-
- /* If we are using texture array, we should return GstD3D11Memory to
- * to the GstD3D11PoolAllocator, so that the allocator can wake up
- * if it's waiting for available memory object */
- if (priv->texture_array_pool) {
- GST_LOG_OBJECT (self, "Returning memory to allocator");
- gst_buffer_remove_all_memory (buffer);
- }
-
- GST_BUFFER_POOL_CLASS (parent_class)->reset_buffer (pool, buffer);
- GST_BUFFER_FLAGS (buffer) = 0;
-}
-
static gboolean
gst_d3d11_buffer_pool_start (GstBufferPool * pool)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.22.4/gst-plugins-bad.doap
new/gst-plugins-bad-1.22.5/gst-plugins-bad.doap
--- old/gst-plugins-bad-1.22.4/gst-plugins-bad.doap 2023-06-20
18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/gst-plugins-bad.doap 2023-07-20
16:22:48.000000000 +0200
@@ -35,6 +35,16 @@
<release>
<Version>
+ <revision>1.22.5</revision>
+ <branch>1.22</branch>
+ <name></name>
+ <created>2023-07-20</created>
+ <file-release
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.22.5.tar.xz"
/>
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.22.4</revision>
<branch>1.22</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.22.4/meson.build
new/gst-plugins-bad-1.22.5/meson.build
--- old/gst-plugins-bad-1.22.4/meson.build 2023-06-20 18:42:25.000000000
+0200
+++ new/gst-plugins-bad-1.22.5/meson.build 2023-07-20 16:22:48.000000000
+0200
@@ -1,5 +1,5 @@
project('gst-plugins-bad', 'c', 'cpp',
- version : '1.22.4',
+ version : '1.22.5',
meson_version : '>= 0.62',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])
@@ -352,9 +352,12 @@
message('GStreamer OpenGL platforms: @0@'.format(' '.join(gst_gl_platforms)))
message('GStreamer OpenGL apis: @0@'.format(' '.join(gst_gl_apis)))
- foreach ws : ['x11', 'wayland', 'android', 'cocoa', 'eagl', 'win32',
'dispmanx', 'viv_fb']
+ foreach ws : ['x11', 'wayland', 'android', 'cocoa', 'eagl', 'win32',
'dispmanx']
set_variable('gst_gl_have_window_@0@'.format(ws),
gst_gl_winsys.contains(ws))
endforeach
+ # Handling viv-fb separately, because the winsys is called "viv-fb", but the
+ # variable suffix must be "viv_fb" (dashes are not allowed in variable
names).
+ set_variable('gst_gl_have_window_viv_fb', gst_gl_winsys.contains('viv-fb'))
foreach p : ['glx', 'egl', 'cgl', 'eagl', 'wgl']
set_variable('gst_gl_have_platform_@0@'.format(p),
gst_gl_platforms.contains(p))
@@ -380,6 +383,10 @@
gstglegl_dep = dependency('gstreamer-gl-egl-1.0', version : gst_req,
fallback : ['gst-plugins-base', 'gstglegl_dep'], required: true)
endif
+ if gst_gl_have_window_viv_fb
+ gstglviv_fb_dep = dependency('gstreamer-gl-viv-fb-1.0', version : gst_req,
+ fallback : ['gst-plugins-base', 'gstglviv_fb_dep'], required: true)
+ endif
endif
libm = cc.find_library('m', required : false)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.22.4/po/gst-plugins-bad-1.0.pot
new/gst-plugins-bad-1.22.5/po/gst-plugins-bad-1.0.pot
--- old/gst-plugins-bad-1.22.4/po/gst-plugins-bad-1.0.pot 2023-06-20
18:48:28.523238700 +0200
+++ new/gst-plugins-bad-1.22.5/po/gst-plugins-bad-1.0.pot 2023-07-20
16:26:14.924029600 +0200
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins-bad-1.22.4\n"
+"Project-Id-Version: gst-plugins-bad-1.22.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-06-20 17:48+0100\n"
+"POT-Creation-Date: 2023-07-20 15:26+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-bad-1.22.4/po/gst-plugins-bad.pot
new/gst-plugins-bad-1.22.5/po/gst-plugins-bad.pot
--- old/gst-plugins-bad-1.22.4/po/gst-plugins-bad.pot 2023-06-20
18:48:28.523238700 +0200
+++ new/gst-plugins-bad-1.22.5/po/gst-plugins-bad.pot 2023-07-20
16:26:14.924029600 +0200
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins-bad-1.22.4\n"
+"Project-Id-Version: gst-plugins-bad-1.22.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-06-20 17:48+0100\n"
+"POT-Creation-Date: 2023-07-20 15:26+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-bad-1.22.4/sys/va/gstjpegdecoder.c
new/gst-plugins-bad-1.22.5/sys/va/gstjpegdecoder.c
--- old/gst-plugins-bad-1.22.4/sys/va/gstjpegdecoder.c 2023-06-20
18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/sys/va/gstjpegdecoder.c 2023-07-20
16:22:48.000000000 +0200
@@ -481,9 +481,10 @@
break;
case GST_JPEG_MARKER_DRI:
- if (!(valid_state (priv->state, GST_JPEG_DECODER_STATE_GOT_SOS)
- && decode_restart_interval (self, &seg)))
+ if (!decode_restart_interval (self, &seg)) {
+ GST_WARNING_OBJECT (self, "Fail to decode restart interval");
goto unmap_and_error;
+ }
break;
case GST_JPEG_MARKER_DNL:
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.22.4/sys/winks/gstksvideodevice.c
new/gst-plugins-bad-1.22.5/sys/winks/gstksvideodevice.c
--- old/gst-plugins-bad-1.22.4/sys/winks/gstksvideodevice.c 2023-06-20
18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/sys/winks/gstksvideodevice.c 2023-07-20
16:22:48.000000000 +0200
@@ -237,8 +237,7 @@
: "failed to retrieve system error message");
}
- *ret_error_str = message->str;
- g_string_free (message, FALSE);
+ *ret_error_str = g_string_free (message, FALSE);
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.22.4/sys/winks/kshelpers.c
new/gst-plugins-bad-1.22.5/sys/winks/kshelpers.c
--- old/gst-plugins-bad-1.22.4/sys/winks/kshelpers.c 2023-06-20
18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/sys/winks/kshelpers.c 2023-07-20
16:22:48.000000000 +0200
@@ -383,7 +383,6 @@
gchar *
ks_options_flags_to_string (gulong flags)
{
- gchar *ret;
GString *str;
str = g_string_sized_new (128);
@@ -404,10 +403,7 @@
if (flags != 0)
g_string_append_printf (str, "|0x%08x", (guint) flags);
- ret = str->str;
- g_string_free (str, FALSE);
-
- return ret;
+ return g_string_free (str, FALSE);
}
typedef struct
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.22.4/tests/check/elements/webrtcbin.c
new/gst-plugins-bad-1.22.5/tests/check/elements/webrtcbin.c
--- old/gst-plugins-bad-1.22.4/tests/check/elements/webrtcbin.c 2023-06-20
18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/tests/check/elements/webrtcbin.c 2023-07-20
16:22:48.000000000 +0200
@@ -2049,6 +2049,69 @@
GST_END_TEST;
static void
+signal_data_channel (struct test_webrtc *t,
+ GstElement * element, GObject * our, gpointer user_data)
+{
+ test_webrtc_signal_state_unlocked (t, STATE_CUSTOM);
+}
+
+GST_START_TEST (test_data_channel_create_two_channels)
+{
+ struct test_webrtc *t = test_webrtc_new ();
+ GObject *channel = NULL;
+ GObject *channel2 = NULL;
+ VAL_SDP_INIT (media_count, _count_num_sdp_media, GUINT_TO_POINTER (1), NULL);
+ VAL_SDP_INIT (offer, on_sdp_has_datachannel, NULL, &media_count);
+ gchar *label;
+ GstStructure *options = NULL;
+
+ t->on_negotiation_needed = NULL;
+ t->on_ice_candidate = NULL;
+ t->on_prepare_data_channel = have_prepare_data_channel;
+ t->on_data_channel = signal_data_channel;
+
+ fail_if (gst_element_set_state (t->webrtc1, GST_STATE_READY) ==
+ GST_STATE_CHANGE_FAILURE);
+ fail_if (gst_element_set_state (t->webrtc2, GST_STATE_READY) ==
+ GST_STATE_CHANGE_FAILURE);
+
+ g_signal_emit_by_name (t->webrtc1, "create-data-channel", "label", NULL,
+ &channel);
+ g_assert_nonnull (channel);
+ g_object_get (channel, "label", &label, NULL);
+ g_assert_cmpstr (label, ==, "label");
+ g_free (label);
+ g_object_unref (channel);
+
+ fail_if (gst_element_set_state (t->webrtc1, GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE);
+ fail_if (gst_element_set_state (t->webrtc2, GST_STATE_PLAYING) ==
+ GST_STATE_CHANGE_FAILURE);
+
+ /* Wait SCTP transport creation */
+ test_validate_sdp_full (t, &offer, &offer, 1 << STATE_CUSTOM, FALSE);
+
+ /* Create another channel on an existing SCTP transport, forcing an ID that
+ should comply with the max-channels requiremennt, this should not raise a
+ critical warning, the id is beneath the required limits. */
+ options =
+ gst_structure_new ("options", "id", G_TYPE_INT, 2, "negotiated",
+ G_TYPE_BOOLEAN, TRUE, NULL);
+ g_signal_emit_by_name (t->webrtc1, "create-data-channel", "label2", options,
+ &channel2);
+ gst_structure_free (options);
+ g_assert_nonnull (channel2);
+ g_object_get (channel2, "label", &label, NULL);
+ g_assert_cmpstr (label, ==, "label2");
+ g_free (label);
+ g_object_unref (channel2);
+
+ test_webrtc_free (t);
+}
+
+GST_END_TEST;
+
+static void
have_data_channel (struct test_webrtc *t, GstElement * element,
GObject * our, gpointer user_data)
{
@@ -5775,6 +5838,7 @@
tcase_add_test (tc, test_msid);
if (sctpenc && sctpdec) {
tcase_add_test (tc, test_data_channel_create);
+ tcase_add_test (tc, test_data_channel_create_two_channels);
tcase_add_test (tc, test_data_channel_remote_notify);
tcase_add_test (tc, test_data_channel_transfer_string);
tcase_add_test (tc, test_data_channel_transfer_data);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.22.4/tests/check/libs/d3d11memory.c
new/gst-plugins-bad-1.22.5/tests/check/libs/d3d11memory.c
--- old/gst-plugins-bad-1.22.4/tests/check/libs/d3d11memory.c 1970-01-01
01:00:00.000000000 +0100
+++ new/gst-plugins-bad-1.22.5/tests/check/libs/d3d11memory.c 2023-07-20
16:22:48.000000000 +0200
@@ -0,0 +1,233 @@
+/*
+ * GStreamer
+ * Copyright (C) 2023 Seungha Yang <[email protected]>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/gst.h>
+#include <gst/check/gstcheck.h>
+#include <gst/d3d11/gstd3d11.h>
+#include <gst/video/video.h>
+#include <string.h>
+
+static GstD3D11Device *device = NULL;
+static GQuark memory_tester_quark;
+
+static void
+setup_func (void)
+{
+ device = gst_d3d11_device_new (0, D3D11_CREATE_DEVICE_BGRA_SUPPORT);
+ fail_unless (GST_IS_D3D11_DEVICE (device));
+
+ memory_tester_quark = g_quark_from_static_string ("gst-d3d11-memory-tester");
+}
+
+static void
+teardown_func (void)
+{
+ gst_object_unref (device);
+}
+
+static void
+allocator_finalize_cb (gboolean * alloc_finalized)
+{
+ *alloc_finalized = TRUE;
+}
+
+GST_START_TEST (test_free_active_allocator)
+{
+ GstD3D11PoolAllocator *alloc;
+ GstMemory *mem = NULL;
+ gboolean ret;
+ GstFlowReturn flow_ret;
+ gboolean alloc_finalized = FALSE;
+ D3D11_TEXTURE2D_DESC desc;
+
+ memset (&desc, 0, sizeof (desc));
+
+ desc.Width = 16;
+ desc.Height = 16;
+ desc.MipLevels = 1;
+ desc.ArraySize = 1;
+ desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
+ desc.SampleDesc.Count = 1;
+ desc.SampleDesc.Quality = 0;
+ desc.Usage = D3D11_USAGE_DEFAULT;
+
+ alloc = gst_d3d11_pool_allocator_new (device, &desc);
+ fail_unless (alloc);
+
+ g_object_set_qdata_full (G_OBJECT (alloc), memory_tester_quark,
+ &alloc_finalized, (GDestroyNotify) allocator_finalize_cb);
+
+ /* inactive pool should return flusing */
+ flow_ret = gst_d3d11_pool_allocator_acquire_memory (alloc, &mem);
+ fail_unless (flow_ret == GST_FLOW_FLUSHING);
+ fail_if (mem);
+
+ ret = gst_d3d11_allocator_set_active (GST_D3D11_ALLOCATOR (alloc), TRUE);
+ fail_unless (ret);
+
+ flow_ret = gst_d3d11_pool_allocator_acquire_memory (alloc, &mem);
+ fail_unless (flow_ret == GST_FLOW_OK);
+ fail_unless (mem);
+
+ gst_object_unref (alloc);
+ /* Only memory should hold refcount at this moment */
+ fail_unless (G_OBJECT (alloc)->ref_count == 1);
+ fail_if (alloc_finalized);
+
+ /* allocator should be finalized as well */
+ gst_memory_unref (mem);
+ fail_unless (alloc_finalized);
+}
+
+GST_END_TEST;
+
+typedef struct
+{
+ GMutex lock;
+ GCond cond;
+ gboolean blocked;
+ GstBufferPool *pool;
+} UnblockTestData;
+
+static gpointer
+alloc_thread (UnblockTestData * data)
+{
+ GstBuffer *buffers[2];
+ GstBuffer *flush_buf = NULL;
+ GstFlowReturn ret;
+
+ g_mutex_lock (&data->lock);
+ ret = gst_buffer_pool_acquire_buffer (data->pool, &buffers[0], NULL);
+ fail_unless (ret == GST_FLOW_OK);
+
+ ret = gst_buffer_pool_acquire_buffer (data->pool, &buffers[1], NULL);
+ fail_unless (ret == GST_FLOW_OK);
+
+ /* below call will be blocked by buffer pool */
+ data->blocked = TRUE;
+ g_cond_signal (&data->cond);
+ g_mutex_unlock (&data->lock);
+
+ ret = gst_buffer_pool_acquire_buffer (data->pool, &flush_buf, NULL);
+ fail_unless (ret == GST_FLOW_FLUSHING);
+
+ gst_buffer_unref (buffers[0]);
+ gst_buffer_unref (buffers[1]);
+
+ return NULL;
+}
+
+GST_START_TEST (test_unblock_on_stop)
+{
+ GstStructure *config;
+ GstVideoInfo info;
+ GstCaps *caps;
+ GstD3D11AllocationParams *params;
+ UnblockTestData data;
+ GThread *thread;
+
+ data.blocked = FALSE;
+ g_mutex_init (&data.lock);
+ g_cond_init (&data.cond);
+
+ gst_video_info_set_format (&info, GST_VIDEO_FORMAT_NV12, 16, 16);
+ caps = gst_video_info_to_caps (&info);
+ fail_unless (caps);
+
+ data.pool = gst_d3d11_buffer_pool_new (device);
+ fail_unless (data.pool);
+
+ config = gst_buffer_pool_get_config (data.pool);
+ fail_unless (config);
+
+ params = gst_d3d11_allocation_params_new (device,
+ &info, GST_D3D11_ALLOCATION_FLAG_TEXTURE_ARRAY, 0, 0);
+ fail_unless (params);
+
+ params->desc[0].ArraySize = 2;
+
+ gst_buffer_pool_config_set_d3d11_allocation_params (config, params);
+ gst_d3d11_allocation_params_free (params);
+ gst_buffer_pool_config_set_params (config, caps, info.size, 0, 2);
+ gst_caps_unref (caps);
+
+ fail_unless (gst_buffer_pool_set_config (data.pool, config));
+ fail_unless (gst_buffer_pool_set_active (data.pool, TRUE));
+
+ thread = g_thread_new (NULL, (GThreadFunc) alloc_thread, &data);
+
+ g_mutex_lock (&data.lock);
+ while (!data.blocked)
+ g_cond_wait (&data.cond, &data.lock);
+ g_mutex_unlock (&data.lock);
+
+ /* Wait 1 second for the alloc thread to be actually blocked */
+ Sleep (1000);
+
+ fail_unless (gst_buffer_pool_set_active (data.pool, FALSE));
+ g_thread_join (thread);
+
+ gst_object_unref (data.pool);
+ g_mutex_clear (&data.lock);
+ g_cond_clear (&data.cond);
+}
+
+GST_END_TEST;
+
+static gboolean
+check_d3d11_device (void)
+{
+ GstD3D11Device *device;
+
+ device = gst_d3d11_device_new (0, D3D11_CREATE_DEVICE_BGRA_SUPPORT);
+ if (device) {
+ gst_object_unref (device);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static Suite *
+d3d11memory_suite (void)
+{
+ Suite *s;
+ TCase *tc_chain;
+
+ s = suite_create ("d3d11memory");
+ tc_chain = tcase_create ("general");
+
+ suite_add_tcase (s, tc_chain);
+ tcase_add_checked_fixture (tc_chain, setup_func, teardown_func);
+
+ if (!check_d3d11_device ())
+ return s;
+
+ tcase_add_test (tc_chain, test_free_active_allocator);
+ tcase_add_test (tc_chain, test_unblock_on_stop);
+
+ return s;
+}
+
+GST_CHECK_MAIN (d3d11memory);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.22.4/tests/check/meson.build
new/gst-plugins-bad-1.22.5/tests/check/meson.build
--- old/gst-plugins-bad-1.22.4/tests/check/meson.build 2023-06-20
18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/tests/check/meson.build 2023-07-20
16:22:48.000000000 +0200
@@ -101,6 +101,7 @@
[['libs/vkimage.c'], not gstvulkan_dep.found(), [gstvulkan_dep]],
[['libs/vkinstance.c'], not gstvulkan_dep.found(), [gstvulkan_dep]],
[['libs/d3d11device.cpp'], not gstd3d11_dep.found(), [gstd3d11_dep]],
+ [['libs/d3d11memory.c'], not gstd3d11_dep.found(), [gstd3d11_dep]],
]
# FIXME: unistd dependency, unstable or not tested yet on windows
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.22.4/tools/gst-app-maker
new/gst-plugins-bad-1.22.5/tools/gst-app-maker
--- old/gst-plugins-bad-1.22.4/tools/gst-app-maker 2023-06-20
18:42:25.000000000 +0200
+++ new/gst-plugins-bad-1.22.5/tools/gst-app-maker 2023-07-20
16:22:48.000000000 +0200
@@ -261,7 +261,7 @@
if (verbose) g_print ("pipeline: %s\n", pipe_desc->str);
pipeline = (GstElement *) gst_parse_launch (pipe_desc->str, &error);
- g_string_free (pipe_desc, FALSE);
+ g_string_free (pipe_desc, TRUE);
if (error) {
g_print("pipeline parsing error: %s\n", error->message);
++++++ reduce-required-meson.patch ++++++
--- /var/tmp/diff_new_pack.1GyRag/_old 2023-07-27 16:50:46.809804660 +0200
+++ /var/tmp/diff_new_pack.1GyRag/_new 2023-07-27 16:50:46.813804683 +0200
@@ -1,10 +1,10 @@
-Index: gst-plugins-bad-1.22.4/meson.build
+Index: gst-plugins-bad-1.22.5/meson.build
===================================================================
---- gst-plugins-bad-1.22.4.orig/meson.build
-+++ gst-plugins-bad-1.22.4/meson.build
+--- gst-plugins-bad-1.22.5.orig/meson.build
++++ gst-plugins-bad-1.22.5/meson.build
@@ -1,6 +1,6 @@
project('gst-plugins-bad', 'c', 'cpp',
- version : '1.22.4',
+ version : '1.22.5',
- meson_version : '>= 0.62',
+ meson_version : '>= 0.61',
default_options : [ 'warning_level=1',