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 2026-09-11 19:00:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-bad (Old)
and /work/SRC/openSUSE:Factory/.gstreamer-plugins-bad.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer-plugins-bad"
Fri Sep 11 19:00:37 2026 rev:205 rq:1376928 version:1.28.7
Changes:
--------
---
/work/SRC/openSUSE:Factory/gstreamer-plugins-bad/gstreamer-plugins-bad.changes
2026-09-08 16:53:39.314802250 +0200
+++
/work/SRC/openSUSE:Factory/.gstreamer-plugins-bad.new.1265/gstreamer-plugins-bad.changes
2026-09-11 19:01:10.338220718 +0200
@@ -1,0 +2,30 @@
+Tue Sep 8 06:59:08 UTC 2026 - Bjørn Lie <[email protected]>
+
+- Update to version 1.28.7:
+ + amc: Don't set the Hardware class in metadata for sw video
+ codecs
+ + d3d12: Fix copy-paste typos
+ + d3d12cmdqueue: Fix deadlock during GC
+ + d3d12screencapturesrc: Fix out-of-bounds access with monochrome
+ cursors
+ + dwritebaseoverlay: Fix assertion 'G_VALUE_HOLDS_UINT (value)'
+ + hip: Add missing API version suffix in library filename
+ + gstreamer-hip api_version failure
+ + hip: Fix hipcc detection on Windows with HIP SDK 7.x
+ + hipstream: Return actual device_id instead of vendor from
+ device_id getter
+ + hipmemorycopy: Add missing ifdef guard
+ + jpegparse: Fix byte order of JFIF density fields
+ + mpegdemux: restore gap sending
+ + mxfdemux: Fix keyframe detection
+ + onnx: Fix nullptr dereference on ORT init failure
+ + onnxinference: fix dead lock with wrong model file
+ + opencv: Support OpenCV 5
+ + pnmdec: Protect against bogus dimensions headers
+ + ssdtensordec: The classes were off by one
+ + tsdemux: Add 'stream-format' field for AC-4 caps
+ + validate: Use a single value type in configs lists
+ + vulkan(av1,vp9)dec: set access NONE at buffer pool allocation
+ parameters
+
+-------------------------------------------------------------------
Old:
----
gst-plugins-bad-1.28.6.obscpio
New:
----
gst-plugins-bad-1.28.7.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gstreamer-plugins-bad.spec ++++++
--- /var/tmp/diff_new_pack.6hYPCU/_old 2026-09-11 19:01:13.038333246 +0200
+++ /var/tmp/diff_new_pack.6hYPCU/_new 2026-09-11 19:01:13.045333537 +0200
@@ -81,7 +81,7 @@
%endif
Name: gstreamer-plugins-bad
-Version: 1.28.6
+Version: 1.28.7
Release: 0
Summary: GStreamer Streaming-Media Framework Plug-Ins
License: LGPL-2.1-or-later
@@ -1264,7 +1264,7 @@
%{_libdir}/libgstdxva-%{gst_branch}.so.0*
%files -n libgsthip-1_0-0
-%{_libdir}/libgsthip.so.0*
+%{_libdir}/libgsthip-%{gst_branch}.so.0*
%files -n libgstmse-1_0-0
%{_libdir}/libgstmse-%{gst_branch}.so.0*
++++++ _service ++++++
--- /var/tmp/diff_new_pack.6hYPCU/_old 2026-09-11 19:01:13.138337413 +0200
+++ /var/tmp/diff_new_pack.6hYPCU/_new 2026-09-11 19:01:13.148337830 +0200
@@ -5,7 +5,7 @@
<param
name="url">https://gitlab.freedesktop.org/gstreamer/gstreamer.git</param>
<param name="subdir">subprojects/gst-plugins-bad</param>
<param name="filename">gst-plugins-bad</param>
- <param name="revision">1.28.6</param>
+ <param name="revision">1.28.7</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">v?(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>
++++++ gst-plugins-bad-1.28.6.obscpio -> gst-plugins-bad-1.28.7.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/ext/onnx/gstonnxinference.c
new/gst-plugins-bad-1.28.7/ext/onnx/gstonnxinference.c
--- old/gst-plugins-bad-1.28.6/ext/onnx/gstonnxinference.c 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/ext/onnx/gstonnxinference.c 2026-09-07
21:11:13.000000000 +0200
@@ -730,6 +730,12 @@
gchar *tensor_name = NULL;
+ if (!api) {
+ GST_ELEMENT_ERROR (self, LIBRARY, FAILED, (NULL),
+ ("ORT_API_VERSION %d not supported by ONNX runtime", ORT_API_VERSION));
+ return FALSE;
+ }
+
GST_OBJECT_LOCK (self);
if (self->session) {
ret = TRUE;
@@ -737,9 +743,10 @@
}
if (self->model_file == NULL) {
+ GST_OBJECT_UNLOCK (self);
GST_ELEMENT_ERROR (self, STREAM, FAILED, (NULL),
("model-file property not set"));
- goto done;
+ goto error_no_lock;
}
modelinfo = gst_analytics_modelinfo_load (self->model_file);
@@ -749,11 +756,6 @@
"or invalid file format.", self->model_file);
goto error;
}
-
- if (self->session) {
- ret = TRUE;
- goto done;
- }
// Create environment
OrtLoggingLevel ort_logging;
@@ -813,10 +815,11 @@
status = api->SetSessionGraphOptimizationLevel (session_options, onnx_optim);
if (status) {
+ GST_OBJECT_UNLOCK (self);
GST_ELEMENT_ERROR (self, STREAM, FAILED, (NULL),
("Failed to set optimization level: %s",
api->GetErrorMessage (status)));
- goto error;
+ goto error_no_lock;
}
// Set execution provider
switch (self->execution_provider) {
@@ -946,7 +949,7 @@
status = api->SessionGetOutputCount (self->session, &self->output_count);
if (status) {
- GST_ERROR_OBJECT (self, "Could to retrieve output count: %s",
+ GST_ERROR_OBJECT (self, "Failed to retrieve output count: %s",
api->GetErrorMessage (status));
goto error;
}
@@ -1159,18 +1162,15 @@
/* Get dimensions from ONNX */
int64_t *shape = (int64_t *) g_alloca (card * sizeof (int64_t));
- output_dims = (gsize *) g_malloc0 (card * sizeof (gsize));
status = api->GetDimensions (output_tensor_info, shape, card);
if (status) {
GST_ERROR_OBJECT (self, "Failed to get output tensor (%s) dimensions",
self->output_names[i]);
- api->ReleaseStatus (status);
- status = NULL;
- g_free (output_dims);
api->ReleaseTypeInfo (output_type_info);
goto error;
}
+ output_dims = (gsize *) g_malloc0 (card * sizeof (gsize));
for (j = 0; j < card; j++) {
output_dims[j] = shape[j] > 0 ? shape[j] : G_MAXSIZE;
}
@@ -1319,6 +1319,8 @@
return ret;
error:
+ GST_OBJECT_UNLOCK (self);
+error_no_lock:
if (status)
api->ReleaseStatus (status);
if (input_type_info)
@@ -1328,7 +1330,6 @@
if (modelinfo)
gst_analytics_modelinfo_free (modelinfo);
- GST_OBJECT_UNLOCK (self);
gst_onnx_inference_stop (trans);
return ret;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/ext/opencv/gstcameracalibrate.cpp
new/gst-plugins-bad-1.28.7/ext/opencv/gstcameracalibrate.cpp
--- old/gst-plugins-bad-1.28.6/ext/opencv/gstcameracalibrate.cpp
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/ext/opencv/gstcameracalibrate.cpp
2026-09-07 21:11:13.000000000 +0200
@@ -85,6 +85,9 @@
#include <opencv2/imgproc.hpp>
#include <opencv2/calib3d.hpp>
+#if CV_MAJOR_VERSION >= 5
+#include <opencv2/objdetect.hpp>
+#endif
#include <gst/opencv/gstopencvutils.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/ext/opencv/gstfaceblur.h
new/gst-plugins-bad-1.28.7/ext/opencv/gstfaceblur.h
--- old/gst-plugins-bad-1.28.6/ext/opencv/gstfaceblur.h 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/ext/opencv/gstfaceblur.h 2026-09-07
21:11:13.000000000 +0200
@@ -51,7 +51,11 @@
#include <gst/opencv/gstopencvvideofilter.h>
#include <opencv2/core.hpp>
+#if CV_MAJOR_VERSION < 5
#include <opencv2/objdetect.hpp>
+#else
+#include <opencv2/xobjdetect.hpp>
+#endif
G_BEGIN_DECLS
/* #defines don't like whitespacey bits */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/ext/opencv/gstfacedetect.h
new/gst-plugins-bad-1.28.7/ext/opencv/gstfacedetect.h
--- old/gst-plugins-bad-1.28.6/ext/opencv/gstfacedetect.h 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/ext/opencv/gstfacedetect.h 2026-09-07
21:11:13.000000000 +0200
@@ -51,7 +51,11 @@
#include <gst/gst.h>
#include <gst/opencv/gstopencvvideofilter.h>
+#if CV_MAJOR_VERSION < 5
#include <opencv2/objdetect.hpp>
+#else
+#include <opencv2/xobjdetect.hpp>
+#endif
G_BEGIN_DECLS
/* #defines don't like whitespacey bits */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/ext/opencv/gsthanddetect.h
new/gst-plugins-bad-1.28.7/ext/opencv/gsthanddetect.h
--- old/gst-plugins-bad-1.28.6/ext/opencv/gsthanddetect.h 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/ext/opencv/gsthanddetect.h 2026-09-07
21:11:13.000000000 +0200
@@ -48,7 +48,11 @@
#include <gst/opencv/gstopencvvideofilter.h>
/* opencv */
#include <opencv2/core.hpp>
+#if CV_MAJOR_VERSION < 5
#include <opencv2/objdetect.hpp>
+#else
+#include <opencv2/xobjdetect.hpp>
+#endif
G_BEGIN_DECLS
/* #defines don't like whitespacey bits */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/ext/opencv/gstsegmentation.cpp
new/gst-plugins-bad-1.28.7/ext/opencv/gstsegmentation.cpp
--- old/gst-plugins-bad-1.28.6/ext/opencv/gstsegmentation.cpp 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/ext/opencv/gstsegmentation.cpp 2026-09-07
21:11:13.000000000 +0200
@@ -91,6 +91,9 @@
#include "gstsegmentation.h"
#include <opencv2/imgproc.hpp>
+#if CV_MAJOR_VERSION >= 5
+#include <opencv2/geometry.hpp>
+#endif
GST_DEBUG_CATEGORY_STATIC (gst_segmentation_debug);
#define GST_CAT_DEFAULT gst_segmentation_debug
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/ext/vulkan/vkav1dec.c
new/gst-plugins-bad-1.28.7/ext/vulkan/vkav1dec.c
--- old/gst-plugins-bad-1.28.6/ext/vulkan/vkav1dec.c 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/ext/vulkan/vkav1dec.c 2026-09-07
21:11:13.000000000 +0200
@@ -384,7 +384,7 @@
gst_vulkan_image_buffer_pool_config_set_allocation_params (config, usage,
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR,
- VK_ACCESS_TRANSFER_WRITE_BIT);
+ VK_ACCESS_NONE);
gst_vulkan_image_buffer_pool_config_set_decode_caps (config, profile_caps);
gst_caps_unref (profile_caps);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/ext/vulkan/vkvp9dec.c
new/gst-plugins-bad-1.28.7/ext/vulkan/vkvp9dec.c
--- old/gst-plugins-bad-1.28.6/ext/vulkan/vkvp9dec.c 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/ext/vulkan/vkvp9dec.c 2026-09-07
21:11:13.000000000 +0200
@@ -383,7 +383,7 @@
gst_vulkan_image_buffer_pool_config_set_allocation_params (config, usage,
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR,
- VK_ACCESS_TRANSFER_WRITE_BIT);
+ VK_ACCESS_NONE);
gst_vulkan_image_buffer_pool_config_set_decode_caps (config, profile_caps);
gst_caps_unref (profile_caps);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/gst/jpegformat/gstjpegparse.c
new/gst-plugins-bad-1.28.7/gst/jpegformat/gstjpegparse.c
--- old/gst-plugins-bad-1.28.6/gst/jpegformat/gstjpegparse.c 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst/jpegformat/gstjpegparse.c 2026-09-07
21:11:13.000000000 +0200
@@ -456,13 +456,8 @@
gst_byte_reader_init (&reader, seg->data + seg->offset, seg->size);
gst_byte_reader_skip_unchecked (&reader, 2);
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
if (!gst_byte_reader_get_uint32_le (&reader, &id))
return FALSE;
-#else
- if (!gst_byte_reader_get_uint32_be (&reader, &id))
- return FALSE;
-#endif
if (!valid_state (parse->state, GST_JPEG_PARSER_STATE_GOT_JFIF)
&& GST_MAKE_FOURCC ('J', 'F', 'I', 'F') == id) {
@@ -480,19 +475,11 @@
return FALSE;
/* x density */
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- if (!gst_byte_reader_get_uint16_le (&reader, &xd))
- return FALSE;
- /* y density */
- if (!gst_byte_reader_get_uint16_le (&reader, &yd))
- return FALSE;
-#else
if (!gst_byte_reader_get_uint16_be (&reader, &xd))
return FALSE;
/* y density */
if (!gst_byte_reader_get_uint16_be (&reader, &yd))
return FALSE;
-#endif
/* x thumbnail */
if (!gst_byte_reader_get_uint8 (&reader, &xt))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/gst/mpegdemux/gstmpegdemux.c
new/gst-plugins-bad-1.28.7/gst/mpegdemux/gstmpegdemux.c
--- old/gst-plugins-bad-1.28.6/gst/mpegdemux/gstmpegdemux.c 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst/mpegdemux/gstmpegdemux.c 2026-09-07
21:11:13.000000000 +0200
@@ -1055,6 +1055,7 @@
stream->gap_ref_pts = time;
if (stream->last_ts != GST_CLOCK_TIME_NONE && stream->last_ts > time)
stream->gap_ref_pts = stream->last_ts;
+ stream->gap_ref_buffers = stream->nb_out_buffers;
}
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/gst/mpegtsdemux/tsdemux.c
new/gst-plugins-bad-1.28.7/gst/mpegtsdemux/tsdemux.c
--- old/gst-plugins-bad-1.28.6/gst/mpegtsdemux/tsdemux.c 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst/mpegtsdemux/tsdemux.c 2026-09-07
21:11:13.000000000 +0200
@@ -1454,7 +1454,8 @@
if (desc) {
GST_LOG_OBJECT (demux, "ac4 audio");
is_audio = TRUE;
- caps = gst_caps_new_empty_simple ("audio/x-ac4");
+ caps = gst_caps_new_simple ("audio/x-ac4",
+ "stream-format", G_TYPE_STRING, "syncframe", NULL);
break;
}
@@ -1709,7 +1710,8 @@
break;
case DRF_ID_AC4:
is_audio = TRUE;
- caps = gst_caps_new_empty_simple ("audio/x-ac4");
+ caps = gst_caps_new_simple ("audio/x-ac4",
+ "stream-format", G_TYPE_STRING, "syncframe", NULL);
break;
case DRF_ID_VP09:
is_video = TRUE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/gst/mxf/mxfdemux.c
new/gst-plugins-bad-1.28.7/gst/mxf/mxfdemux.c
--- old/gst-plugins-bad-1.28.6/gst/mxf/mxfdemux.c 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst/mxf/mxfdemux.c 2026-09-07
21:11:13.000000000 +0200
@@ -2425,13 +2425,12 @@
delta_entry->element_delta);
/* Apply offset from slice/delta if needed */
- if (delta_entry->slice)
+ if (delta_entry->slice) {
stream_offset +=
segment_index_entry->slice_offset[delta_entry->slice - 1];
- stream_offset += delta_entry->element_delta;
- if (delta_entry->pos_table_index == -1) {
- entry->keyframe = (segment_index_entry->flags & 0x80) == 0x80;
}
+ stream_offset += delta_entry->element_delta;
+ entry->keyframe = (segment_index_entry->flags & 0x80) == 0x80;
/* FIXME : Handle fractional offset position
(delta_entry->pos_table_offset > 0) */
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/gst/pnm/gstpnmutils.c
new/gst-plugins-bad-1.28.7/gst/pnm/gstpnmutils.c
--- old/gst-plugins-bad-1.28.6/gst/pnm/gstpnmutils.c 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst/pnm/gstpnmutils.c 2026-09-07
21:11:13.000000000 +0200
@@ -157,6 +157,9 @@
mngr->state = GST_PNM_INFO_MNGR_STATE_WHITE_SPACE;
mngr->data_offset += i;
if (mngr->info.type == GST_PNM_TYPE_BITMAP) {
+ /* Reject zero-sized images */
+ if (mngr->info.width == 0 || mngr->info.height == 0)
+ return GST_PNM_INFO_MNGR_RESULT_FAILED;
mngr->data_offset += 1;
mngr->info.fields |= GST_PNM_INFO_FIELDS_MAX;
return GST_PNM_INFO_MNGR_RESULT_FINISHED;
@@ -185,6 +188,9 @@
} else if ((mngr->info.max > 255) || (mngr->info.max < 1)) {
return GST_PNM_INFO_MNGR_RESULT_FAILED;
}
+ /* Reject zero-sized images */
+ if (mngr->info.width == 0 || mngr->info.height == 0)
+ return GST_PNM_INFO_MNGR_RESULT_FAILED;
mngr->info.fields |= GST_PNM_INFO_FIELDS_MAX;
mngr->data_offset += i + 1;
return GST_PNM_INFO_MNGR_RESULT_FINISHED;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/gst/tensordecoders/gstssdtensordec.c
new/gst-plugins-bad-1.28.7/gst/tensordecoders/gstssdtensordec.c
--- old/gst-plugins-bad-1.28.6/gst/tensordecoders/gstssdtensordec.c
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst/tensordecoders/gstssdtensordec.c
2026-09-07 21:11:13.000000000 +0200
@@ -591,8 +591,8 @@
if (self->labels && classes_map.memory &&
get_guint32_at_index (classes_tensor, &classes_map, i, &bclass)) {
- if (bclass < self->labels->len)
- label = g_array_index (self->labels, GQuark, bclass);
+ if (bclass > 0 && bclass - 1 < self->labels->len)
+ label = g_array_index (self->labels, GQuark, bclass - 1);
}
x_i = x * w;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/gst-libs/gst/analytics/modelinfo.c
new/gst-plugins-bad-1.28.7/gst-libs/gst/analytics/modelinfo.c
--- old/gst-plugins-bad-1.28.6/gst-libs/gst/analytics/modelinfo.c
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst-libs/gst/analytics/modelinfo.c
2026-09-07 21:11:13.000000000 +0200
@@ -518,6 +518,11 @@
GST_DEBUG_CATEGORY_INIT (analytics_modelinfo_debug, "modelinfo",
0, "analytics model info");
+ if (!model_filename) {
+ GST_ERROR ("model_filename is NULL");
+ return NULL;
+ }
+
filename = g_strconcat (model_filename, ".modelinfo", NULL);
ret = g_key_file_load_from_file (kf, filename, G_KEY_FILE_NONE, NULL);
g_free (filename);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/gst-libs/gst/d3d12/gstd3d12cmdqueue.cpp
new/gst-plugins-bad-1.28.7/gst-libs/gst/d3d12/gstd3d12cmdqueue.cpp
--- old/gst-plugins-bad-1.28.6/gst-libs/gst/d3d12/gstd3d12cmdqueue.cpp
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst-libs/gst/d3d12/gstd3d12cmdqueue.cpp
2026-09-07 21:11:13.000000000 +0200
@@ -419,6 +419,9 @@
GST_INFO_OBJECT (self, "Entering GC thread");
+ /* temporary storage to release GC data without priv->lock taken */
+ std::vector < GCDataPtr > completed_data;
+
while (true) {
GCDataPtr gc_data;
@@ -434,7 +437,7 @@
while (!priv->gc_list.empty ()) {
auto top = priv->gc_list.top ();
if (top->fence_val > completed) {
- gc_data = top;
+ gc_data = std::move (top);
priv->gc_list.pop ();
break;
}
@@ -443,10 +446,13 @@
G_GUINT64_FORMAT ", fence value %" G_GUINT64_FORMAT,
completed, top->fence_val);
+ completed_data.push_back (std::move (top));
priv->gc_list.pop ();
}
}
+ completed_data.clear ();
+
if (gc_data) {
GST_LOG_OBJECT (self, "Waiting for fence data %" G_GUINT64_FORMAT,
gc_data->fence_val);
@@ -546,13 +552,8 @@
}
{
- if (priv->gc_thread != g_thread_self ()) {
- std::lock_guard < std::mutex > lk (priv->lock);
- gc_list = priv->gc_list;
- priv->gc_list = { };
- } else {
- priv->gc_list = { };
- }
+ std::lock_guard < std::mutex > lk (priv->lock);
+ gc_list.swap (priv->gc_list);
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/gst-libs/gst/d3d12/gstd3d12converter-unpack.cpp
new/gst-plugins-bad-1.28.7/gst-libs/gst/d3d12/gstd3d12converter-unpack.cpp
--- old/gst-plugins-bad-1.28.6/gst-libs/gst/d3d12/gstd3d12converter-unpack.cpp
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst-libs/gst/d3d12/gstd3d12converter-unpack.cpp
2026-09-07 21:11:13.000000000 +0200
@@ -275,7 +275,7 @@
priv->tg_y = (guint) ceil (priv->in_info.height / (float) bytecode.y_unit);
priv->x_unit = bytecode.x_unit;
- priv->y_unit = bytecode.x_unit;
+ priv->y_unit = bytecode.y_unit;
D3D12_COMPUTE_PIPELINE_STATE_DESC pso_desc = { };
pso_desc.pRootSignature = priv->rs_typed.Get ();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/gst-libs/gst/d3d12/gstd3d12stagingmemory.h
new/gst-plugins-bad-1.28.7/gst-libs/gst/d3d12/gstd3d12stagingmemory.h
--- old/gst-plugins-bad-1.28.6/gst-libs/gst/d3d12/gstd3d12stagingmemory.h
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst-libs/gst/d3d12/gstd3d12stagingmemory.h
2026-09-07 21:11:13.000000000 +0200
@@ -28,12 +28,12 @@
#define GST_D3D12_STAGING_MEMORY_CAST(obj) ((GstD3D12StagingMemory
*)obj)
#define GST_TYPE_D3D12_STAGING_ALLOCATOR
(gst_d3d12_staging_allocator_get_type())
-#define GST_D3D12_STAGING_ALLOCATOR(obj)
(G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_D3D12_STAGING_ALLOCATOR,
GstD3D12Allocator))
-#define GST_D3D12_STAGING_ALLOCATOR_CLASS(klass)
(G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_D3D12_STAGING_ALLOCATOR,
GstD3D12AllocatorClass))
+#define GST_D3D12_STAGING_ALLOCATOR(obj)
(G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_D3D12_STAGING_ALLOCATOR,
GstD3D12StagingAllocator))
+#define GST_D3D12_STAGING_ALLOCATOR_CLASS(klass)
(G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_D3D12_STAGING_ALLOCATOR,
GstD3D12StagingAllocatorClass))
#define GST_IS_D3D12_STAGING_ALLOCATOR(obj)
(G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_D3D12_STAGING_ALLOCATOR))
#define GST_IS_D3D12_STAGING_ALLOCATOR_CLASS(klass)
(G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_D3D12_STAGING_ALLOCATOR))
-#define GST_D3D12_STAGING_ALLOCATOR_GET_CLASS(obj)
(G_TYPE_INSTANCE_GET_CLASS((obj), GST_TYPE_D3D12_STAGING_ALLOCATOR,
GstD3D12AllocatorClass))
-#define GST_D3D12_STAGING_ALLOCATOR_CAST(obj) ((GstD3D12Allocator *)obj)
+#define GST_D3D12_STAGING_ALLOCATOR_GET_CLASS(obj)
(G_TYPE_INSTANCE_GET_CLASS((obj), GST_TYPE_D3D12_STAGING_ALLOCATOR,
GstD3D12StagingAllocatorClass))
+#define GST_D3D12_STAGING_ALLOCATOR_CAST(obj) ((GstD3D12StagingAllocator
*)obj)
/**
* GST_D3D12_STAGING_MEMORY_NAME:
@@ -104,7 +104,7 @@
/**
* GstD3D12StagingAllocatorClass:
*
- * Opaque GstD3D12AllocatorClass struct
+ * Opaque GstD3D12StagingAllocatorClass struct
*
* Since: 1.28
*/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/gst-libs/gst/hip/gsthipstream.cpp
new/gst-plugins-bad-1.28.7/gst-libs/gst/hip/gsthipstream.cpp
--- old/gst-plugins-bad-1.28.6/gst-libs/gst/hip/gsthipstream.cpp
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst-libs/gst/hip/gsthipstream.cpp
2026-09-07 21:11:13.000000000 +0200
@@ -144,7 +144,7 @@
{
g_return_val_if_fail (stream, G_MAXUINT);
- return stream->vendor;
+ return stream->device_id;
}
/**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/gst-libs/gst/hip/meson.build
new/gst-plugins-bad-1.28.7/gst-libs/gst/hip/meson.build
--- old/gst-plugins-bad-1.28.6/gst-libs/gst/hip/meson.build 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst-libs/gst/hip/meson.build 2026-09-07
21:11:13.000000000 +0200
@@ -74,7 +74,8 @@
hipstub_incdir = include_directories('./stub')
pkg_name = 'gstreamer-hip-' + api_version
-gsthip = library('gsthip', hip_sources,
+gsthip = library('gsthip-' + api_version,
+ hip_sources,
c_args : gst_plugins_bad_args + extra_args,
cpp_args: gst_plugins_bad_args + extra_args,
include_directories : [configinc, libsinc, hipstub_incdir],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/gst-libs/gst/opencv/meson.build
new/gst-plugins-bad-1.28.7/gst-libs/gst/opencv/meson.build
--- old/gst-plugins-bad-1.28.6/gst-libs/gst/opencv/meson.build 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst-libs/gst/opencv/meson.build 2026-09-07
21:11:13.000000000 +0200
@@ -32,9 +32,12 @@
gstopencv_cargs = []
opencv_dep = dependency('opencv', version : ['>= 3.0.0', '< 3.5.0'], required
: false, include_type: 'system' )
if not opencv_dep.found()
- opencv_dep = dependency('opencv4', version : ['>= 4.0.0'], required :
opencv_opt, include_type: 'system')
+ opencv_dep = dependency('opencv4', version : ['>= 4.0.0'], required : false,
include_type: 'system')
if not opencv_dep.found()
- subdir_done()
+ opencv_dep = dependency('opencv5', version : ['>= 5.0.0'], required :
opencv_opt, include_type: 'system')
+ if not opencv_dep.found()
+ subdir_done()
+ endif
endif
endif
@@ -65,7 +68,7 @@
# Use prefix from pkg-config to be compatible with cross-compilation
fsmod = import('fs')
opencv_path_name = ''
-foreach d : ['opencv', 'OpenCV', 'opencv4']
+foreach d : ['opencv', 'OpenCV', 'opencv4', 'opencv5']
if fsmod.is_dir(opencv_prefix / 'share' / d)
opencv_path_name = d
break
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/gst-plugins-bad.doap
new/gst-plugins-bad-1.28.7/gst-plugins-bad.doap
--- old/gst-plugins-bad-1.28.6/gst-plugins-bad.doap 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/gst-plugins-bad.doap 2026-09-07
21:11:13.000000000 +0200
@@ -35,6 +35,16 @@
<release>
<Version>
+ <revision>1.28.7</revision>
+ <branch>1.28</branch>
+ <name></name>
+ <created>2026-09-07</created>
+ <file-release
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.28.7.tar.xz"
/>
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>1.28.6</revision>
<branch>1.28</branch>
<name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/meson.build
new/gst-plugins-bad-1.28.7/meson.build
--- old/gst-plugins-bad-1.28.6/meson.build 2026-08-05 13:59:39.000000000
+0200
+++ new/gst-plugins-bad-1.28.7/meson.build 2026-09-07 21:11:13.000000000
+0200
@@ -1,5 +1,5 @@
project('gst-plugins-bad', 'c', 'cpp',
- version : '1.28.6',
+ version : '1.28.7',
meson_version : '>= 1.4',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/sys/androidmedia/gstamc.c
new/gst-plugins-bad-1.28.7/sys/androidmedia/gstamc.c
--- old/gst-plugins-bad-1.28.6/sys/androidmedia/gstamc.c 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/sys/androidmedia/gstamc.c 2026-09-07
21:11:13.000000000 +0200
@@ -76,6 +76,52 @@
}
}
+/* Whether a video codec is hardware-accelerated. Used for both the element
+ * rank and the "Hardware" element klass. */
+gboolean
+gst_amc_codec_info_is_hardware (const GstAmcCodecInfo * codec_info)
+{
+ switch (codec_info->accel) {
+ case AMC_CODEC_ACCEL_IS_HW:
+ return TRUE;
+ case AMC_CODEC_ACCEL_IS_SW:
+ return FALSE;
+ case AMC_CODEC_ACCEL_IS_UNKNOWN:
+ /* Android version is too old, could not auto-detect hw-accel status.
+ * Try guessing from the name.
+ *
+ * Amlogic/Exynos hardware video codecs end in .encoder/.decoder:
+ * c2.amlogic.avc.decoder
+ * c2.amlogic.avc.encoder
+ * c2.amlogic.hevc.decoder
+ * c2.amlogic.av1.decoder
+ * c2.exynos.h264.decoder
+ * c2.exynos.h264.encoder
+ * c2.exynos.hevc.decoder
+ * c2.exynos.hevc.encoder
+ * c2.exynos.vp9.decoder
+ * c2.exynos.vp9.encoder
+ * NOTE: c2.google.av1.decoder can be a hw decoder, but it's only
+ * available in newer Android versions and codec_info->accel
+ * will work reliably there.
+ * Software video codecs end in .sw or .secure (usually?):
+ * c2.amlogic.vp8.decoder.sw
+ * c2.amlogic.wmv3.decoder.sw
+ * c2.amlogic.avc.decoder.secure
+ * As an aside, software audio codecs look like this:
+ * c2.amlogic.audio.decoder.mp2
+ * c2.amlogic.audio.decoder.eac3
+ * But this guess is only used for video.
+ */
+ return (g_str_has_prefix (codec_info->name, "c2.amlogic") ||
+ g_str_has_prefix (codec_info->name, "c2.exynos")) &&
+ (g_str_has_suffix (codec_info->name, "decoder") ||
+ g_str_has_suffix (codec_info->name, "encoder"));
+ }
+
+ return FALSE;
+}
+
static gboolean
scan_codecs (GstPlugin * plugin)
{
@@ -1837,50 +1883,10 @@
/* Give PRIMARY+1 rank to all hardware-accelerated video codecs and
* MARGINAL to sw video codecs, because any gstreamer-native codecs
* compiled-in may be higher quality */
- switch (codec_info->accel) {
- case AMC_CODEC_ACCEL_IS_HW:
- rank = GST_RANK_PRIMARY + 1;
- break;
- case AMC_CODEC_ACCEL_IS_SW:
- rank = GST_RANK_MARGINAL;
- break;
- case AMC_CODEC_ACCEL_IS_UNKNOWN:
- /* Android version is too old, could not auto-detect hw-accel
- * status. Try guessing from the name.
- *
- * Amlogic/Exynos hardware video codecs end in .encoder/.decoder:
- * c2.amlogic.avc.decoder
- * c2.amlogic.avc.encoder
- * c2.amlogic.hevc.decoder
- * c2.amlogic.av1.decoder
- * c2.exynos.h264.decoder
- * c2.exynos.h264.encoder
- * c2.exynos.hevc.decoder
- * c2.exynos.hevc.encoder
- * c2.exynos.vp9.decoder
- * c2.exynos.vp9.encoder
- * NOTE: c2.google.av1.decoder can be a hw decoder, but it's only
- * available in newer Android versions and codec_info->accel
- * will work reliably there.
- * Software video codecs end in .sw or .secure (usually?):
- * c2.amlogic.vp8.decoder.sw
- * c2.amlogic.wmv3.decoder.sw
- * c2.amlogic.avc.decoder.secure
- * As an aside, software audio codecs look like this:
- * c2.amlogic.audio.decoder.mp2
- * c2.amlogic.audio.decoder.eac3
- * But we only rank video here.
- */
- if ((g_str_has_prefix (codec_info->name, "c2.amlogic") ||
- g_str_has_prefix (codec_info->name, "c2.exynos")) &&
- (g_str_has_suffix (codec_info->name, "decoder") ||
- g_str_has_suffix (codec_info->name, "encoder"))) {
- rank = GST_RANK_PRIMARY + 1;
- } else {
- rank = GST_RANK_MARGINAL;
- }
- break;
- }
+ if (gst_amc_codec_info_is_hardware (codec_info))
+ rank = GST_RANK_PRIMARY + 1;
+ else
+ rank = GST_RANK_MARGINAL;
} else if (g_str_has_prefix (codec_info->name, "OMX.google.") ||
g_str_has_prefix (codec_info->name, "c2.android.") ||
g_str_has_prefix (codec_info->name, "c2.amlogic.") ||
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/sys/androidmedia/gstamc.h
new/gst-plugins-bad-1.28.7/sys/androidmedia/gstamc.h
--- old/gst-plugins-bad-1.28.6/sys/androidmedia/gstamc.h 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/sys/androidmedia/gstamc.h 2026-09-07
21:11:13.000000000 +0200
@@ -63,6 +63,8 @@
gboolean gst_amc_static_init (void);
+gboolean gst_amc_codec_info_is_hardware (const GstAmcCodecInfo * codec_info);
+
GstVideoFormat gst_amc_color_format_to_video_format (const GstAmcCodecInfo *
codec_info, const gchar * mime, gint color_format);
gint gst_amc_video_format_to_color_format (const GstAmcCodecInfo * codec_info,
const gchar * mime, GstVideoFormat video_format);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/sys/androidmedia/gstamcvideodec.c
new/gst-plugins-bad-1.28.7/sys/androidmedia/gstamcvideodec.c
--- old/gst-plugins-bad-1.28.6/sys/androidmedia/gstamcvideodec.c
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/sys/androidmedia/gstamcvideodec.c
2026-09-07 21:11:13.000000000 +0200
@@ -393,7 +393,8 @@
longname = g_strdup_printf ("Android MediaCodec %s", codec_info->name);
gst_element_class_set_metadata (element_class,
codec_info->name,
- "Codec/Decoder/Video/Hardware",
+ gst_amc_codec_info_is_hardware (codec_info) ?
+ "Codec/Decoder/Video/Hardware" : "Codec/Decoder/Video",
longname, "Sebastian Dröge <[email protected]>");
g_free (longname);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/sys/androidmedia/gstamcvideoenc.c
new/gst-plugins-bad-1.28.7/sys/androidmedia/gstamcvideoenc.c
--- old/gst-plugins-bad-1.28.6/sys/androidmedia/gstamcvideoenc.c
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/sys/androidmedia/gstamcvideoenc.c
2026-09-07 21:11:13.000000000 +0200
@@ -525,7 +525,8 @@
longname = g_strdup_printf ("Android MediaCodec %s", codec_info->name);
gst_element_class_set_metadata (element_class,
codec_info->name,
- "Codec/Encoder/Video/Hardware",
+ gst_amc_codec_info_is_hardware (codec_info) ?
+ "Codec/Encoder/Video/Hardware" : "Codec/Encoder/Video",
longname, "Sebastian Dröge <[email protected]>");
g_free (longname);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/sys/d3d12/gstd3d12dxgicapture.cpp
new/gst-plugins-bad-1.28.7/sys/d3d12/gstd3d12dxgicapture.cpp
--- old/gst-plugins-bad-1.28.6/sys/d3d12/gstd3d12dxgicapture.cpp
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/sys/d3d12/gstd3d12dxgicapture.cpp
2026-09-07 21:11:13.000000000 +0200
@@ -256,6 +256,7 @@
stride_ = width_ * 4;
UINT pstride = 4;
auto size = height_ * stride_;
+ auto mask_offset = height_ * shape_info.Pitch;
texture_.resize (size);
xor_texture_.resize (size);
@@ -267,7 +268,7 @@
for (UINT col = 0; col < width_; col++) {
auto src_pos = (row * shape_info.Pitch) + (col / 8);
auto and_mask = (shape_buffer[src_pos] >> (7 - (col % 8))) & 0x1;
- auto xor_mask = (shape_buffer[src_pos + size] >> (7 - (col % 8))) &
0x1;
+ auto xor_mask = (shape_buffer[src_pos + mask_offset] >> (7 - (col %
8))) & 0x1;
auto dst_pos = (row * stride_) + (col * pstride);
if (and_mask) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/sys/dwrite/gstdwritebaseoverlay.cpp
new/gst-plugins-bad-1.28.7/sys/dwrite/gstdwritebaseoverlay.cpp
--- old/gst-plugins-bad-1.28.6/sys/dwrite/gstdwritebaseoverlay.cpp
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/sys/dwrite/gstdwritebaseoverlay.cpp
2026-09-07 21:11:13.000000000 +0200
@@ -334,7 +334,7 @@
}
case PROP_AUTO_RESIZE:
{
- gboolean auto_resize = g_value_get_uint (value);
+ gboolean auto_resize = g_value_get_boolean (value);
if (auto_resize != priv->auto_resize) {
priv->auto_resize = auto_resize;
priv->text_format = nullptr;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/sys/hip/gsthipmemorycopy.cpp
new/gst-plugins-bad-1.28.7/sys/hip/gsthipmemorycopy.cpp
--- old/gst-plugins-bad-1.28.6/sys/hip/gsthipmemorycopy.cpp 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/sys/hip/gsthipmemorycopy.cpp 2026-09-07
21:11:13.000000000 +0200
@@ -588,6 +588,7 @@
gst_hip_memory_copy_before_transform (GstBaseTransform * trans,
GstBuffer * buffer)
{
+#ifdef HAVE_GST_CUDA
auto self = GST_HIP_MEMORY_COPY (trans);
auto priv = self->priv;
@@ -678,6 +679,7 @@
gst_hip_memory_copy_set_caps (trans, priv->in_caps, priv->out_caps);
gst_base_transform_reconfigure_src (trans);
}
+#endif
}
static GstCaps *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/sys/hip/meson.build
new/gst-plugins-bad-1.28.7/sys/hip/meson.build
--- old/gst-plugins-bad-1.28.6/sys/hip/meson.build 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/sys/hip/meson.build 2026-09-07
21:11:13.000000000 +0200
@@ -34,12 +34,12 @@
have_nvcc = false
if not hip_precompile_amd_opt.disabled() and not meson.is_cross_build()
if host_system == 'windows'
- hipcc = find_program('hipcc.bin', required: false)
+ hipcc = find_program('hipcc.bin', 'hipcc.exe', required: false)
if not hipcc.found()
hip_root = run_command(python3, '-c', 'import os;
print(os.environ.get("HIP_PATH"))', check: false).stdout().strip()
if hip_root != '' and hip_root != 'None'
hip_bin_path = join_paths(hip_root, 'bin')
- hipcc = find_program('hipcc.bin',
+ hipcc = find_program('hipcc.bin', 'hipcc.exe',
dirs: [hip_bin_path],
required: hip_precompile_amd_opt)
endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/gst-plugins-bad-1.28.6/tests/check/elements/pnm.c
new/gst-plugins-bad-1.28.7/tests/check/elements/pnm.c
--- old/gst-plugins-bad-1.28.6/tests/check/elements/pnm.c 2026-08-05
13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/tests/check/elements/pnm.c 2026-09-07
21:11:13.000000000 +0200
@@ -104,6 +104,59 @@
GST_END_TEST;
+/* Push PNM data whose header declares zero dimensions and make sure the
+ * decoder fails cleanly with a stream error instead of negotiating a
+ * 0x0 output state (which trips a critical in the video decoder base
+ * class). P6 fails at the max field, P4 (bitmap) at the height field. */
+GST_START_TEST (test_pnmdec_zero_dimensions)
+{
+ const gchar *headers[] = {
+ "P6\n0 0\n255\n0123456789",
+ "P4\n0 0\nxx"
+ };
+ gint i;
+
+ for (i = 0; i < G_N_ELEMENTS (headers); i++) {
+ GstElement *pipeline;
+ GstElement *src;
+ GstBus *bus;
+ GstMessage *msg;
+ GstFlowReturn ret;
+ GstBuffer *buf;
+
+ pipeline = gst_parse_launch ("appsrc name=src ! pnmdec ! fakesink", NULL);
+ fail_unless (pipeline != NULL);
+
+ src = gst_bin_get_by_name (GST_BIN (pipeline), "src");
+ bus = gst_element_get_bus (pipeline);
+
+ gst_element_set_state (pipeline, GST_STATE_PLAYING);
+
+ buf = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY,
+ (gpointer) headers[i], strlen (headers[i]), 0, strlen (headers[i]),
+ NULL, NULL);
+ g_signal_emit_by_name (src, "push-buffer", buf, &ret);
+ gst_buffer_unref (buf);
+
+ /* No critical so far; the check log handler would have failed the
+ * test already otherwise */
+ msg = gst_bus_timed_pop_filtered (bus, 5 * GST_SECOND,
+ GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
+ fail_unless (msg != NULL, "no error message for header '%s'", headers[i]);
+ fail_unless (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ERROR,
+ "expected error, got %s for header '%s'",
+ GST_MESSAGE_TYPE_NAME (msg), headers[i]);
+ gst_message_unref (msg);
+
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (bus);
+ gst_object_unref (src);
+ gst_object_unref (pipeline);
+ }
+}
+
+GST_END_TEST;
+
static Suite *
pnm_suite (void)
{
@@ -112,6 +165,7 @@
suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_pnm_enc_dec);
+ tcase_add_test (tc_chain, test_pnmdec_zero_dimensions);
return s;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/tests/validate/autovideoconvert/renegotiate.validatetest
new/gst-plugins-bad-1.28.7/tests/validate/autovideoconvert/renegotiate.validatetest
---
old/gst-plugins-bad-1.28.6/tests/validate/autovideoconvert/renegotiate.validatetest
2026-08-05 13:59:39.000000000 +0200
+++
new/gst-plugins-bad-1.28.7/tests/validate/autovideoconvert/renegotiate.validatetest
2026-09-07 21:11:13.000000000 +0200
@@ -1,22 +1,22 @@
meta,
- args = {
+ args={
"gltestsrc ! gldownload ! autovideoconvert name=convert ! capsfilter
name=capsfilter caps=\"video/x-raw(memory:GLMemory)\" ! fakevideosink
name=sink",
},
- configs = {
- "$(validateflow), pad=\"^convert:src$\", record-buffers=true,
ignored-fields=\"stream-start={stream-id,group-id,stream},buffer={meta}\"",
+ configs={
+ [validateflow,
+ pad="^convert:src$",
+ record-buffers=true,
+
ignored-fields="stream-start={stream-id,group-id,stream},buffer={meta}"],
}
crank-clock, repeat=2
wait, on-clock=true
foreach,
- caps = <
- "video/x-raw",
- "video/x-raw(memory:GLMemory)",
- "video/x-raw",
- >,
- actions = {
+ caps=<"video/x-raw", "video/x-raw(memory:GLMemory)", "video/x-raw">,
+ actions={
[checkpoint, text="Setup capsfilter caps=$(caps)"],
- [set-properties, capsfilter::caps="$(caps)"],
+ [set-properties,
+ capsfilter::caps="$(caps)"],
[crank-clock, repeat=2],
[wait, on-clock=true],
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/tests/validate/codectimestamper/h264_propagate_caps.validatetest
new/gst-plugins-bad-1.28.7/tests/validate/codectimestamper/h264_propagate_caps.validatetest
---
old/gst-plugins-bad-1.28.6/tests/validate/codectimestamper/h264_propagate_caps.validatetest
2026-08-05 13:59:39.000000000 +0200
+++
new/gst-plugins-bad-1.28.7/tests/validate/codectimestamper/h264_propagate_caps.validatetest
2026-09-07 21:11:13.000000000 +0200
@@ -1,9 +1,15 @@
meta,
- args = {
+ args={
"videotestsrc num-buffers=1 !
video/x-raw,width=1920,height=1080,format=I420 ! videoscale ! x264enc
tune=zerolatency ! h264timestamper ! video/x-h264,width=50,height=50 ! fakesink
name=sink",
},
- configs = {
- "$(validateflow), pad=sink:sink, buffers-checksum=as-id,
caps-properties={width, height}, ignored-event-types={tag}",
+ configs={
+ [validateflow,
+ pad=sink:sink,
+ buffers-checksum=as-id,
+ caps-properties={
+ width, height,
+ },
+ ignored-event-types={
+ tag,
+ }],
}
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/tests/validate/opencv/cvtracker.validatetest
new/gst-plugins-bad-1.28.7/tests/validate/opencv/cvtracker.validatetest
--- old/gst-plugins-bad-1.28.6/tests/validate/opencv/cvtracker.validatetest
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/tests/validate/opencv/cvtracker.validatetest
2026-09-07 21:11:13.000000000 +0200
@@ -1,8 +1,8 @@
meta,
- args = {
+ args={
"videotestsrc pattern=ball animation-mode=frames num-buffers=90 !
video/x-raw,framerate=30/1,width=320,height=240 ! cvtracker name=tracker
object-initial-x=135 object-initial-y=95 object-initial-width=50
object-initial-height=50 algorithm=1 ! videoconvert ! $(videosink) sync=true",
},
- configs = {
- "$(validateflow), pad=tracker:src, record-buffers=true",
+ configs={
+ [validateflow, pad=tracker:src, record-buffers=true],
}
-crank-clock, repeat=91
\ No newline at end of file
+crank-clock, repeat=91
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/tests/validate/testsrcbin/caps_spec.validatetest
new/gst-plugins-bad-1.28.7/tests/validate/testsrcbin/caps_spec.validatetest
--- old/gst-plugins-bad-1.28.6/tests/validate/testsrcbin/caps_spec.validatetest
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/tests/validate/testsrcbin/caps_spec.validatetest
2026-09-07 21:11:13.000000000 +0200
@@ -1,7 +1,7 @@
meta,
- args = {
+ args={
"testbin://video,caps=[video/x-raw,width=1920,height=1080],num-buffers=1 !
fakesink",
},
- configs = {
- "$(validateflow), pad=testsrcbin0:video_src_0",
+ configs={
+ [validateflow, pad=testsrcbin0:video_src_0],
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/tests/validate/vtenc/vtenc_h264.validatetest
new/gst-plugins-bad-1.28.7/tests/validate/vtenc/vtenc_h264.validatetest
--- old/gst-plugins-bad-1.28.6/tests/validate/vtenc/vtenc_h264.validatetest
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/tests/validate/vtenc/vtenc_h264.validatetest
2026-09-07 21:11:13.000000000 +0200
@@ -1,7 +1,7 @@
meta,
- args = {
+ args={
"videotestsrc num-buffers=5 !
video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc
allow-frame-reordering=false ! fakesink",
},
- configs = {
- "$(validateflow), pad=enc:src, record-buffers=true",
+ configs={
+ [validateflow, pad=enc:src, record-buffers=true],
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/tests/validate/vtenc/vtenc_h264_b_frames.validatetest
new/gst-plugins-bad-1.28.7/tests/validate/vtenc/vtenc_h264_b_frames.validatetest
---
old/gst-plugins-bad-1.28.6/tests/validate/vtenc/vtenc_h264_b_frames.validatetest
2026-08-05 13:59:39.000000000 +0200
+++
new/gst-plugins-bad-1.28.7/tests/validate/vtenc/vtenc_h264_b_frames.validatetest
2026-09-07 21:11:13.000000000 +0200
@@ -1,7 +1,7 @@
meta,
- args = {
+ args={
"videotestsrc num-buffers=5 !
video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc
allow-frame-reordering=true ! fakesink",
},
- configs = {
- "$(validateflow), pad=enc:src, record-buffers=true",
+ configs={
+ [validateflow, pad=enc:src, record-buffers=true],
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/tests/validate/vtenc/vtenc_h265.validatetest
new/gst-plugins-bad-1.28.7/tests/validate/vtenc/vtenc_h265.validatetest
--- old/gst-plugins-bad-1.28.6/tests/validate/vtenc/vtenc_h265.validatetest
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-bad-1.28.7/tests/validate/vtenc/vtenc_h265.validatetest
2026-09-07 21:11:13.000000000 +0200
@@ -1,7 +1,7 @@
meta,
- args = {
+ args={
"videotestsrc num-buffers=5 !
video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc
allow-frame-reordering=false ! fakesink",
},
- configs = {
- "$(validateflow), pad=enc:src, record-buffers=true",
+ configs={
+ [validateflow, pad=enc:src, record-buffers=true],
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/gst-plugins-bad-1.28.6/tests/validate/vtenc/vtenc_h265_b_frames.validatetest
new/gst-plugins-bad-1.28.7/tests/validate/vtenc/vtenc_h265_b_frames.validatetest
---
old/gst-plugins-bad-1.28.6/tests/validate/vtenc/vtenc_h265_b_frames.validatetest
2026-08-05 13:59:39.000000000 +0200
+++
new/gst-plugins-bad-1.28.7/tests/validate/vtenc/vtenc_h265_b_frames.validatetest
2026-09-07 21:11:13.000000000 +0200
@@ -1,7 +1,7 @@
meta,
- args = {
+ args={
"videotestsrc num-buffers=5 !
video/x-raw,framerate=25/1,width=320,height=240 ! vtenc_h264 name=enc
allow-frame-reordering=true ! fakesink",
},
- configs = {
- "$(validateflow), pad=enc:src, record-buffers=true",
+ configs={
+ [validateflow, pad=enc:src, record-buffers=true],
}
++++++ gst-plugins-bad.obsinfo ++++++
--- /var/tmp/diff_new_pack.6hYPCU/_old 2026-09-11 19:01:17.898535795 +0200
+++ /var/tmp/diff_new_pack.6hYPCU/_new 2026-09-11 19:01:17.903536004 +0200
@@ -1,5 +1,5 @@
name: gst-plugins-bad
-version: 1.28.6
-mtime: 1785931179
-commit: 2d3e05cbdad68e47d645f548899b432dc9fb4473
+version: 1.28.7
+mtime: 1788808273
+commit: 070125524a8422e29d3b69a372ed4f62fd343ffa