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 2026-09-11 19:00:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-base (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-plugins-base"

Fri Sep 11 19:00:50 2026 rev:134 rq:1376929 version:1.28.7

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-plugins-base/gstreamer-plugins-base.changes
    2026-08-06 16:19:37.547052684 +0200
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-plugins-base.new.1265/gstreamer-plugins-base.changes
  2026-09-11 19:01:36.162296940 +0200
@@ -1,0 +2,27 @@
+Tue Sep  8 06:54:49 UTC 2026 - Bjørn Lie <[email protected]>
+
+- Update to version 1.28.7:
+  + appsrc: Don't push EOS directly in event handler (regression
+    fix)
+  + glcolorconvert: don't rely on integer modulus '%'
+  + mikey: use TEK_WITH_SALT for proper key/salt separation in
+    KEY_DATA
+  + overlay-composition: Don't try to scale high bitdepth
+    rectangles
+  + rtpbasedepayload: Don't assert if previous buffer's delayed
+    header extensions are still queued
+  + rtsp: message: fix crash when an auth value started with
+    whitespace
+  + typefindhelper: Revert "Drop unnecessary check for factories
+    without a function"
+  + typefind: regression causes txt file to be detected as subtitle
+  + typefindfunctions: Critical warnings when typefinding invalid
+    ogv file
+  + validate: Use a single value type in configs lists
+  + video-converter: Fix GRAY output border color
+  + video-format: Fix annotation on component function
+  + videoconvertscale: keep input colorimetry in scale-only
+    elements
+  + videotimecode: Fix documentation bug and update annotations
+
+-------------------------------------------------------------------

Old:
----
  gst-plugins-base-1.28.6.obscpio

New:
----
  gst-plugins-base-1.28.7.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gstreamer-plugins-base.spec ++++++
--- /var/tmp/diff_new_pack.GS6Tt9/_old  2026-09-11 19:01:37.469351411 +0200
+++ /var/tmp/diff_new_pack.GS6Tt9/_new  2026-09-11 19:01:37.471351494 +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.28.6
+Version:        1.28.7
 Release:        0
 Summary:        GStreamer Streaming-Media Framework Plug-Ins
 License:        GPL-2.0-or-later AND LGPL-2.1-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.GS6Tt9/_old  2026-09-11 19:01:37.498352620 +0200
+++ /var/tmp/diff_new_pack.GS6Tt9/_new  2026-09-11 19:01:37.501352745 +0200
@@ -5,7 +5,7 @@
     <param 
name="url">https://gitlab.freedesktop.org/gstreamer/gstreamer.git</param>
     <param name="subdir">subprojects/gst-plugins-base</param>
     <param name="filename">gst-plugins-base</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-base-1.28.6.obscpio -> gst-plugins-base-1.28.7.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/gst/videoconvertscale/gstvideoconvertscale.c 
new/gst-plugins-base-1.28.7/gst/videoconvertscale/gstvideoconvertscale.c
--- old/gst-plugins-base-1.28.6/gst/videoconvertscale/gstvideoconvertscale.c    
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst/videoconvertscale/gstvideoconvertscale.c    
2026-09-07 21:11:13.000000000 +0200
@@ -908,10 +908,19 @@
 {
   GstVideoConvertScale *self = GST_VIDEO_CONVERT_SCALE (filter);
   GstVideoConvertScalePrivate *priv = PRIV (self);
+  GstVideoConvertScaleClass *klass = GST_VIDEO_CONVERT_SCALE_GET_CLASS (self);
   gint from_dar_n, from_dar_d, to_dar_n, to_dar_d;
   GstVideoInfo tmp_info;
   GstStructure *options;
 
+  /* A scale-only element keeps the input colorimetry. With no colorimetry
+   * field on the output caps, out_info holds the resolution-derived default,
+   * so take the input's instead. */
+  if (!klass->converts
+      && !gst_structure_has_field (gst_caps_get_structure (out, 0),
+          "colorimetry"))
+    out_info->colorimetry = in_info->colorimetry;
+
   if (priv->convert) {
     gst_video_converter_free (priv->convert);
     priv->convert = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.28.6/gst-libs/gst/app/gstappsrc.c 
new/gst-plugins-base-1.28.7/gst-libs/gst/app/gstappsrc.c
--- old/gst-plugins-base-1.28.6/gst-libs/gst/app/gstappsrc.c    2026-08-05 
13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst-libs/gst/app/gstappsrc.c    2026-09-07 
21:11:13.000000000 +0200
@@ -1134,7 +1134,9 @@
       break;
     case GST_EVENT_EOS:
       gst_app_src_end_of_stream (appsrc);
-      break;
+      /* Don't pass the event through */
+      gst_event_unref (event);
+      return TRUE;
     default:
       if (GST_EVENT_IS_SERIALIZED (event)) {
         GST_DEBUG_OBJECT (appsrc, "queue event: %" GST_PTR_FORMAT, event);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/gst-libs/gst/gl/gstglcolorconvert.c 
new/gst-plugins-base-1.28.7/gst-libs/gst/gl/gstglcolorconvert.c
--- old/gst-plugins-base-1.28.6/gst-libs/gst/gl/gstglcolorconvert.c     
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst-libs/gst/gl/gstglcolorconvert.c     
2026-09-07 21:11:13.000000000 +0200
@@ -443,7 +443,7 @@
     "  int tile_index = tile_coord.y * tiles_per_row + tile_coord.x;\n" \
     "  int linear_index = tile_index * tile_size + delta_coord.y * dim.x + 
delta_coord.x;\n" \
     "  linear_index += need_offset * tile_size / 2;\n" \
-    "  return ivec2(linear_index % width, linear_index / width);\n" \
+    "  return ivec2(int(mod(float(linear_index), float(width))), linear_index 
/ width);\n" \
     "}\n"
 
 /* TILED semi-planar to RGB conversion */
@@ -460,12 +460,12 @@
     "\n"
     "  ivec2 coord = ivec2(gl_FragCoord.xy);\n"
     "  ivec2 tile_coord = coord / luma_dim;\n"
-    "  ivec2 delta_coord = coord %% luma_dim;\n" \
+    "  ivec2 delta_coord = ivec2(mod(vec2(coord), vec2(luma_dim)));\n" \
     "  texel = frag_to_tile(tile_coord, delta_coord, luma_dim, iwidth, 
tiles_per_row, 0);\n"
     "  yuva.x = texelFetch(Ytex, texel, 0).r;\n"
     "\n"
     "  ivec2 chroma_tcoord = ivec2(tile_coord.x, tile_coord.y / fy);\n"
-    "  texel = frag_to_tile(chroma_tcoord, delta_coord / 2, chroma_dim, iwidth 
/ 2, tiles_per_row, tile_coord.y %% fy);\n"
+    "  texel = frag_to_tile(chroma_tcoord, delta_coord / 2, chroma_dim, iwidth 
/ 2, tiles_per_row, ivec2(mod(float(tile_coord.y), float(fy))));\n"
     "  yuva.yz = texelFetch(UVtex, texel, 0).%c%c;\n"
     "  yuva.a = 1.0;\n"
     "\n"
@@ -513,8 +513,8 @@
     "  yuva.x = texture2D(tex, v_texcoord * vert_to_tex * 
tex_scale0)[input_swizzle[0]];\n"
     /* v_texcoord are normalized, texcoord may not be e.g. rectangle textures 
*/
     "  vec2 half_poffset = vec2(poffset_x / 2.0, poffset_y / 2.0);\n"
-    "  int inorder = int(((v_texcoord.x * vert_to_tex.x - half_poffset.x) * 
chroma_sampling.x + half_poffset.x) * width / vert_to_tex) % 2;\n"
-    "  if (inorder == 0) {\n"
+    "  float inorder = mod(float(int(((v_texcoord.x * vert_to_tex.x - 
half_poffset.x) * chroma_sampling.x + half_poffset.x) * width / 
vert_to_tex.x)), 2.0);\n"
+    "  if (inorder < 1.0) {\n"
     "    dx2 = -dx1;\n"
     "    dx1 = 0.0;\n"
     "  }\n"
@@ -627,7 +627,7 @@
 static const char glsl_func_v210_unpack[] =
     "ivec2 v210_component_to_texel(int comp) {\n"
     // (the texel index in the row, the swizzle index in that texel)
-    "  return ivec2(comp / 3, comp % 3);\n"
+    "  return ivec2(comp / 3, int(mod(float(comp), 3.0)));\n"
     "}\n"
     "ivec2 v210_y_xoffset(int xpos) {\n"
     // 1 3 5 7 9 ...
@@ -715,9 +715,9 @@
     // factor of 2/3 (4/6) different
     "  vec2 half_x_offset = vec2(poffset_x * 0.66666 / 2.0, 0.0);\n"
     "  int xpos = int(texcoord.x * out_width);\n"
-    "  ivec2 sub_idx0 = block_indices[(xpos % 4) * 3 + 0];\n"
-    "  ivec2 sub_idx1 = block_indices[(xpos % 4) * 3 + 1];\n"
-    "  ivec2 sub_idx2 = block_indices[(xpos % 4) * 3 + 2];\n"
+    "  ivec2 sub_idx0 = block_indices[int(mod(float(xpos), 4.0)) * 3 + 0];\n"
+    "  ivec2 sub_idx1 = block_indices[int(mod(float(xpos), 4.0)) * 3 + 1];\n"
+    "  ivec2 sub_idx2 = block_indices[int(mod(float(xpos), 4.0)) * 3 + 2];\n"
     "  vec2 block_offset = vec2(float((xpos / 4) * 6) * poffset_x, texcoord.y 
* vert_to_tex.y) + half_x_offset;\n"
     "  texcoord0 = block_offset + vec2(float(sub_idx0[0]) * poffset_x, 0.0);\n"
     "  texcoord1 = block_offset + vec2(float(sub_idx1[0]) * poffset_x, 0.0);\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/gst-libs/gst/rtp/gstrtpbasedepayload.c 
new/gst-plugins-base-1.28.7/gst-libs/gst/rtp/gstrtpbasedepayload.c
--- old/gst-plugins-base-1.28.6/gst-libs/gst/rtp/gstrtpbasedepayload.c  
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst-libs/gst/rtp/gstrtpbasedepayload.c  
2026-09-07 21:11:13.000000000 +0200
@@ -939,7 +939,13 @@
      a buffer that's pushed, either way the buffer cache should be
      empty here and we append the delayed buffer */
   if (priv->hdrext_delayed) {
-    g_assert_true (gst_buffer_list_length (priv->hdrext_buffers) == 0);
+    if (gst_buffer_list_length (priv->hdrext_buffers) > 0) {
+      /* the previous output buffer was dropped (e.g. on packet loss) and its
+       * cached header extensions should not apply to the new buffer. */
+      GST_LOG_OBJECT (filter,
+          "flushing delayed header extensions of previous buffer");
+      gst_rtp_base_depayload_reset_hdrext_buffers (filter);
+    }
     gst_buffer_list_add (priv->hdrext_buffers, priv->hdrext_delayed);
     priv->hdrext_delayed = NULL;
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/gst-libs/gst/rtsp/gstrtspmessage.c 
new/gst-plugins-base-1.28.7/gst-libs/gst/rtsp/gstrtspmessage.c
--- old/gst-plugins-base-1.28.6/gst-libs/gst/rtsp/gstrtspmessage.c      
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst-libs/gst/rtsp/gstrtspmessage.c      
2026-09-07 21:11:13.000000000 +0200
@@ -1416,18 +1416,21 @@
         if (eq[0] == '=') {
           GstRTSPAuthParam *auth_param = g_new0 (GstRTSPAuthParam, 1);
           const gchar *value;
+          const gchar *param_end;
 
           /* have an actual param */
           auth_param->name = g_strndup (header, eq - header);
 
           value = eq + 1;
           value = skip_lws (value);
-          auth_param->value = g_strndup (value, item_end - value);
+          param_end = skip_item (value);
+
+          auth_param->value = g_strndup (value, param_end - value);
           if (value[0] == '"')
             decode_quoted_string (auth_param->value);
 
           g_ptr_array_add (params, auth_param);
-          header = item_end;
+          header = param_end;
         } else {
           /* at next scheme, header at start of it */
           break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.28.6/gst-libs/gst/sdp/gstmikey.c 
new/gst-plugins-base-1.28.7/gst-libs/gst/sdp/gstmikey.c
--- old/gst-plugins-base-1.28.6/gst-libs/gst/sdp/gstmikey.c     2026-08-05 
13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst-libs/gst/sdp/gstmikey.c     2026-09-07 
21:11:13.000000000 +0200
@@ -2515,8 +2515,10 @@
   guint8 byte;
   guint8 enc_alg;
   guint8 auth_alg;
-  guint8 enc_key_length;
-  guint8 auth_key_length;
+  guint8 enc_key_length = 0;
+  guint8 auth_key_length = 0;
+  guint8 salt_key_length = 0;
+  gsize key_length = 0;
   GstStructure *s;
   GstMapInfo info;
   GstBuffer *srtpkey;
@@ -2565,6 +2567,15 @@
     return NULL;
   }
 
+  /* By default the whole srtp-key buffer is used as the master key. When a
+   * cipher is present and the buffer is larger than the encryption key, the
+   * trailing bytes are the session salt. */
+  key_length = gst_buffer_get_size (srtpkey);
+  if (enc_key_length > 0 && key_length > enc_key_length) {
+    salt_key_length = key_length - enc_key_length;
+    key_length = enc_key_length;
+  }
+
   msg = gst_mikey_message_new ();
   /* unencrypted MIKEY message, we send this over TLS so this is allowed */
   gst_mikey_message_set_info (msg, GST_MIKEY_VERSION, GST_MIKEY_TYPE_PSK_INIT,
@@ -2587,6 +2598,11 @@
       /* encryption key length */
       gst_mikey_payload_sp_add_param (payload, GST_MIKEY_SP_SRTP_ENC_KEY_LEN, 
1,
           &enc_key_length);
+      if (salt_key_length) {
+        /* session salt key length */
+        gst_mikey_payload_sp_add_param (payload, 
GST_MIKEY_SP_SRTP_SALT_KEY_LEN,
+            1, &salt_key_length);
+      }
     }
     if (auth) {
       /* HMAC-SHA1 or NULL in case of GCM */
@@ -2615,11 +2631,15 @@
   /* make unencrypted KEMAC */
   payload = gst_mikey_payload_new (GST_MIKEY_PT_KEMAC);
   gst_mikey_payload_kemac_set (payload, GST_MIKEY_ENC_NULL, 
GST_MIKEY_MAC_NULL);
-  /* add the key in KEMAC */
+  /* add the key||salt in KEMAC */
   pkd = gst_mikey_payload_new (GST_MIKEY_PT_KEY_DATA);
   gst_buffer_map (srtpkey, &info, GST_MAP_READ);
-  gst_mikey_payload_key_data_set_key (pkd, GST_MIKEY_KD_TEK, info.size,
+  gst_mikey_payload_key_data_set_key (pkd, GST_MIKEY_KD_TEK, key_length,
       info.data);
+  if (salt_key_length) {
+    gst_mikey_payload_key_data_set_salt (pkd, salt_key_length,
+        info.data + key_length);
+  }
   gst_buffer_unmap (srtpkey, &info);
   /* add optional SPI/MKI
    * See: https://www.rfc-editor.org/rfc/rfc3830.html#section-6.14
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/gst-libs/gst/video/gstvideometa.c 
new/gst-plugins-base-1.28.7/gst-libs/gst/video/gstvideometa.c
--- old/gst-plugins-base-1.28.6/gst-libs/gst/video/gstvideometa.c       
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst-libs/gst/video/gstvideometa.c       
2026-09-07 21:11:13.000000000 +0200
@@ -1695,7 +1695,7 @@
  * @buffer: a #GstBuffer
  * @fps_n: framerate numerator
  * @fps_d: framerate denominator
- * @latest_daily_jam: a #GDateTime for the latest daily jam
+ * @latest_daily_jam: (allow-none): a #GDateTime for the latest daily jam
  * @flags: a #GstVideoTimeCodeFlags
  * @hours: hours since the daily jam
  * @minutes: minutes since the daily jam
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/gst-libs/gst/video/gstvideotimecode.c 
new/gst-plugins-base-1.28.7/gst-libs/gst/video/gstvideotimecode.c
--- old/gst-plugins-base-1.28.6/gst-libs/gst/video/gstvideotimecode.c   
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst-libs/gst/video/gstvideotimecode.c   
2026-09-07 21:11:13.000000000 +0200
@@ -631,7 +631,7 @@
  * gst_video_time_code_new:
  * @fps_n: Numerator of the frame rate
  * @fps_d: Denominator of the frame rate
- * @latest_daily_jam: The latest daily jam of the #GstVideoTimeCode
+ * @latest_daily_jam: (allow-none): The latest daily jam of the 
#GstVideoTimeCode
  * @flags: #GstVideoTimeCodeFlags
  * @hours: the hours field of #GstVideoTimeCode
  * @minutes: the minutes field of #GstVideoTimeCode
@@ -640,7 +640,6 @@
  * @field_count: Interlaced video field count
  *
  * @field_count is 0 for progressive, 1 or 2 for interlaced.
- * @latest_daiy_jam reference is stolen from caller.
  *
  * Returns: a new #GstVideoTimeCode with the given values.
  * The values are not checked for being in a valid range. To see if your
@@ -834,7 +833,6 @@
  * @field_count: Interlaced video field count
  *
  * @field_count is 0 for progressive, 1 or 2 for interlaced.
- * @latest_daiy_jam reference is stolen from caller.
  *
  * Initializes @tc with the given values.
  * The values are not checked for being in a valid range. To see if your
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/gst-libs/gst/video/video-blend.c 
new/gst-plugins-base-1.28.7/gst-libs/gst/video/video-blend.c
--- old/gst-plugins-base-1.28.6/gst-libs/gst/video/video-blend.c        
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst-libs/gst/video/video-blend.c        
2026-09-07 21:11:13.000000000 +0200
@@ -175,6 +175,8 @@
 
   g_return_if_fail (dest_buffer != NULL);
 
+  *dest_buffer = NULL;
+
   gst_video_info_init (dest);
   if (!gst_video_info_set_format (dest, GST_VIDEO_INFO_FORMAT (src),
           dest_width, dest_height)) {
@@ -182,6 +184,11 @@
     return;
   }
 
+  if (GST_VIDEO_INFO_COMP_DEPTH (src, 0) != 8) {
+    GST_WARNING ("Only 8-bit depth formats are supported");
+    return;
+  }
+
   tmpbuf = g_malloc (dest_width * 8 * 4);
 
   *dest_buffer = gst_buffer_new_and_alloc (GST_VIDEO_INFO_SIZE (dest));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/gst-libs/gst/video/video-converter.c 
new/gst-plugins-base-1.28.7/gst-libs/gst/video/video-converter.c
--- old/gst-plugins-base-1.28.6/gst-libs/gst/video/video-converter.c    
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst-libs/gst/video/video-converter.c    
2026-09-07 21:11:13.000000000 +0200
@@ -2197,22 +2197,19 @@
     guint32 border_val;
     gint i, w_sub;
     const GstVideoFormatInfo *out_finfo;
+    const GstVideoFormatInfo *out_pack_finfo;
     gpointer planes[GST_VIDEO_MAX_PLANES];
     gint strides[GST_VIDEO_MAX_PLANES];
 
     convert->borderline = g_malloc0 (sizeof (guint16) * width * 4);
 
     out_finfo = convert->out_info.finfo;
+    out_pack_finfo = gst_video_format_get_info (convert->pack_format);
 
-    if (GST_VIDEO_INFO_IS_YUV (&convert->out_info)) {
+    if (GST_VIDEO_FORMAT_INFO_IS_YUV (out_pack_finfo)) {
       MatrixData cm;
-      gint a, r, g, b;
-      gint y, u, v;
-
-      /* Get Color matrix. */
-      color_matrix_set_identity (&cm);
-      compute_matrix_to_YUV (convert, &cm, TRUE);
-      color_matrix_convert (&cm);
+      gint64 a, r, g, b;
+      gint64 y, u, v;
 
       border_val = GINT32_FROM_BE (convert->border_argb);
 
@@ -2221,16 +2218,32 @@
       r = (0x0000FF00 & border_val) >> 8;
       a = (0x000000FF & border_val);
 
-      y = 16 + ((r * cm.im[0][0] + g * cm.im[0][1] + b * cm.im[0][2]) >> 8);
-      u = 128 + ((r * cm.im[1][0] + g * cm.im[1][1] + b * cm.im[1][2]) >> 8);
-      v = 128 + ((r * cm.im[2][0] + g * cm.im[2][1] + b * cm.im[2][2]) >> 8);
+      /* Get Color matrix. */
+      color_matrix_set_identity (&cm);
+
+      /* border_argb is 8-bit RGB, normalize it to [0, 1] */
+      color_matrix_scale_components (&cm,
+          1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0);
+
+      compute_matrix_to_YUV (convert, &cm, TRUE);
+
+      /* convert to integer scale, same as prepare_matrix() */
+      color_matrix_scale_components (&cm, SCALE_F, SCALE_F, SCALE_F);
+      color_matrix_convert (&cm);
+
+      y = (r * cm.im[0][0] + g * cm.im[0][1] + b * cm.im[0][2] +
+          cm.im[0][3]) >> SCALE;
+      u = (r * cm.im[1][0] + g * cm.im[1][1] + b * cm.im[1][2] +
+          cm.im[1][3]) >> SCALE;
+      v = (r * cm.im[2][0] + g * cm.im[2][1] + b * cm.im[2][2] +
+          cm.im[2][3]) >> SCALE;
 
       a = CLAMP (a, 0, 255);
       y = CLAMP (y, 0, 255);
       u = CLAMP (u, 0, 255);
       v = CLAMP (v, 0, 255);
 
-      border_val = a | (y << 8) | (u << 16) | ((guint32) v << 24);
+      border_val = (guint32) (a | (y << 8) | (u << 16) | v << 24);
     } else {
       border_val = GINT32_FROM_BE (convert->border_argb);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/gst-libs/gst/video/video-format.c 
new/gst-plugins-base-1.28.7/gst-libs/gst/video/video-format.c
--- old/gst-plugins-base-1.28.6/gst-libs/gst/video/video-format.c       
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst-libs/gst/video/video-format.c       
2026-09-07 21:11:13.000000000 +0200
@@ -8652,7 +8652,7 @@
  * gst_video_format_info_component:
  * @info: #GstVideoFormatInfo
  * @plane: a plane number
- * @components: (out): array used to store component numbers
+ * @components: (out caller-allocates) (array fixed-size=4): array used to 
store component numbers
  *
  * Fill @components with the number of all the components packed in @plane
  * for the format @info. A value of -1 in @components indicates that no more
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/gst-libs/gst/video/video-overlay-composition.c 
new/gst-plugins-base-1.28.7/gst-libs/gst/video/video-overlay-composition.c
--- old/gst-plugins-base-1.28.6/gst-libs/gst/video/video-overlay-composition.c  
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst-libs/gst/video/video-overlay-composition.c  
2026-09-07 21:11:13.000000000 +0200
@@ -598,6 +598,13 @@
     if (needs_scaling) {
       gst_video_blend_scale_linear_RGBA (&rect->info, rect->pixels,
           rect->render_height, rect->render_width, &scaled_info, &pixels);
+
+      if (!pixels) {
+        GST_WARNING ("Couldn't get scaled rectangle %u", n);
+        ret = FALSE;
+        continue;
+      }
+
       vinfo = &scaled_info;
     } else {
       pixels = gst_buffer_ref (rect->pixels);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.28.6/gst-plugins-base.doap 
new/gst-plugins-base-1.28.7/gst-plugins-base.doap
--- old/gst-plugins-base-1.28.6/gst-plugins-base.doap   2026-08-05 
13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/gst-plugins-base.doap   2026-09-07 
21:11:13.000000000 +0200
@@ -36,6 +36,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-base/gst-plugins-base-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-base-1.28.6/meson.build 
new/gst-plugins-base-1.28.7/meson.build
--- old/gst-plugins-base-1.28.6/meson.build     2026-08-05 13:59:39.000000000 
+0200
+++ new/gst-plugins-base-1.28.7/meson.build     2026-09-07 21:11:13.000000000 
+0200
@@ -1,5 +1,5 @@
 project('gst-plugins-base', 'c',
-  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-base-1.28.6/tests/check/elements/appsrc.c 
new/gst-plugins-base-1.28.7/tests/check/elements/appsrc.c
--- old/gst-plugins-base-1.28.6/tests/check/elements/appsrc.c   2026-08-05 
13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/tests/check/elements/appsrc.c   2026-09-07 
21:11:13.000000000 +0200
@@ -488,6 +488,71 @@
 
 GST_END_TEST;
 
+/* Test that sending EOS to a blocked appsrc
+ * simply enqueues the event without hanging,
+ * and that subsequent push attempts return FLOW_EOS,
+ * and that unblocking eventually sends the EOS */
+GST_START_TEST (test_appsrc_blocked_eos)
+{
+  GstElement *pipeline = NULL, *app = NULL;
+  GstPad *pad = NULL;
+  GstCaps *caps = NULL;
+  GError *error = NULL;
+  GMainLoop *loop;
+
+  loop = g_main_loop_new (NULL, FALSE);
+
+  pipeline =
+      gst_parse_launch ("appsrc is-live=1 max-buffers=1 name=app ! fakesink",
+      &error);
+  g_assert_no_error (error);
+
+  app = gst_bin_get_by_name (GST_BIN (pipeline), "app");
+  pad = gst_element_get_static_pad (app, "src");
+
+  guint block_id = gst_pad_add_probe (pad,
+      GST_PAD_PROBE_TYPE_BLOCK | GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM,
+      caps_event_probe_cb, loop, NULL);
+
+  gst_element_set_state (pipeline, GST_STATE_PLAYING);
+
+  caps = gst_caps_from_string ("application/x-test");
+  gst_app_src_set_caps (GST_APP_SRC (app), caps);
+  gst_caps_unref (caps);
+
+  /* Loop runs until the pad block signals it to quit */
+  g_main_loop_run (loop);
+
+  /* appsrc is now blocked - sending EOS should not hang */
+  GstEvent *eos = gst_event_new_eos ();
+  gst_element_send_event (GST_ELEMENT (pipeline), eos);
+
+  /* Pushing a buffer now must return FLOW_EOS */
+  GstBuffer *buf = gst_buffer_new ();
+  GstFlowReturn flow = gst_app_src_push_buffer (GST_APP_SRC (app), buf);
+  fail_unless (flow == GST_FLOW_EOS);
+
+  /* Now unblock and check EOS arrives */
+  gst_pad_remove_probe (pad, block_id);
+
+  GstMessage *msg = gst_bus_timed_pop_filtered (GST_ELEMENT_BUS (pipeline), -1,
+      GST_MESSAGE_EOS | GST_MESSAGE_ERROR);
+  fail_unless (msg);
+  fail_unless (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_EOS);
+  gst_message_unref (msg);
+
+  /* Clean up */
+  gst_object_unref (app);
+  gst_object_unref (pad);
+
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_object_unref (pipeline);
+  g_main_loop_unref (loop);
+}
+
+GST_END_TEST;
+
+
 static guint expect_offset;
 static gboolean chainlist_called;
 static gboolean done;
@@ -1691,6 +1756,7 @@
   tcase_add_test (tc_chain, test_appsrc_set_caps_twice);
   tcase_add_test (tc_chain, test_appsrc_caps_in_push_modes);
   tcase_add_test (tc_chain, test_appsrc_blocked_on_caps);
+  tcase_add_test (tc_chain, test_appsrc_blocked_eos);
   tcase_add_test (tc_chain, test_appsrc_push_buffer_list);
   tcase_add_test (tc_chain, test_appsrc_period_with_custom_segment);
   tcase_add_test (tc_chain, test_appsrc_custom_segment_twice);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/check/gst/typefindfunctions.c 
new/gst-plugins-base-1.28.7/tests/check/gst/typefindfunctions.c
--- old/gst-plugins-base-1.28.6/tests/check/gst/typefindfunctions.c     
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/tests/check/gst/typefindfunctions.c     
2026-09-07 21:11:13.000000000 +0200
@@ -535,108 +535,6 @@
 
 GST_END_TEST;
 
-GST_START_TEST (test_typefind_with_wav_dts_caps)
-{
-  GstTypeFindProbability prob;
-  const gchar *type;
-  GstBuffer *buf;
-  GstCaps *caps;
-  GstCaps *query_caps;
-  GList *factories;
-  guint8 *p;
-
-  /* WAV header (44 bytes) followed by two DTS frames (96 bytes each).
-   *
-   * The DTS typefinder scans within DTS_MAX_FRAMESIZE bytes and will
-   * find the DTS sync words after the WAV header. The WAV typefinder
-   * matches the RIFF/WAVE signature at offset 0.
-   *
-   * This tests the _with_caps scenario like in gstwavparse.c: where
-   * given a WAV stream, check if the content is actually DTS.
-   */
-  guint8 wav_dts_data[44 + 96 + 96];
-
-  p = wav_dts_data;
-
-  /* WAV header */
-  memcpy (p, "RIFF", 4);
-  GST_WRITE_UINT32_LE (p + 4, sizeof (wav_dts_data) - 8);       /* file size - 
8 */
-  memcpy (p + 8, "WAVE", 4);
-  memcpy (p + 12, "fmt ", 4);
-  GST_WRITE_UINT32_LE (p + 16, 16);     /* chunk size */
-  GST_WRITE_UINT16_LE (p + 20, 1);      /* PCM */
-  GST_WRITE_UINT16_LE (p + 22, 1);      /* mono */
-  GST_WRITE_UINT32_LE (p + 24, 44100);  /* sample rate */
-  GST_WRITE_UINT32_LE (p + 28, 88200);  /* byte rate */
-  GST_WRITE_UINT16_LE (p + 32, 2);      /* block align */
-  GST_WRITE_UINT16_LE (p + 34, 16);     /* bits per sample */
-  memcpy (p + 36, "data", 4);
-  GST_WRITE_UINT32_LE (p + 40, 96 * 2); /* data size */
-
-  /* Two DTS frames at offset 44 (inside the WAV data chunk) */
-  GST_WRITE_UINT32_BE (p + 44, 0x7FFE8001);     /* sync */
-  GST_WRITE_UINT16_BE (p + 48, 0x0014); /* num_blocks=5, frame_size high=0 */
-  GST_WRITE_UINT16_BE (p + 50, 0x05F0); /* frame_size low: (95<<4)=0x5F0 */
-  GST_WRITE_UINT16_BE (p + 52, 0x340F); /* sample_rate=48kHz */
-  GST_WRITE_UINT16_BE (p + 54, 0x2400); /* channels=6, lfe=0 */
-  memset (p + 56, 0, 96 - 12);
-
-  /* Second DTS frame at offset 140 */
-  GST_WRITE_UINT32_BE (p + 140, 0x7FFE8001);
-  GST_WRITE_UINT16_BE (p + 144, 0x0014);
-  GST_WRITE_UINT16_BE (p + 146, 0x05F0);
-  GST_WRITE_UINT16_BE (p + 148, 0x340F);
-  GST_WRITE_UINT16_BE (p + 150, 0x2400);
-  memset (p + 152, 0, 96 - 12);
-
-  buf = gst_buffer_new ();
-  gst_buffer_append_memory (buf,
-      gst_memory_new_wrapped (GST_MEMORY_FLAG_READONLY,
-          wav_dts_data, sizeof (wav_dts_data), 0, sizeof (wav_dts_data),
-          NULL, NULL));
-  GST_BUFFER_OFFSET (buf) = 0;
-
-  /* list_factories_for_caps with audio/x-wav should return factories */
-  query_caps = gst_caps_from_string ("audio/x-wav");
-  factories = gst_type_find_list_factories_for_caps (NULL, query_caps);
-  fail_unless (factories != NULL);
-  g_list_free_full (factories, (GDestroyNotify) gst_object_unref);
-
-  /* typefind with audio/x-wav should find WAV */
-  prob = 0;
-  caps = gst_type_find_helper_for_buffer_with_caps (NULL, buf,
-      query_caps, &prob);
-  fail_unless (caps != NULL,
-      "WAV+DTS: typefind with audio/x-wav caps should find WAV");
-  type = gst_structure_get_name (gst_caps_get_structure (caps, 0));
-  fail_unless_equals_string (type, "audio/x-wav");
-  fail_unless (prob == GST_TYPE_FIND_MAXIMUM);
-  gst_caps_unref (caps);
-  gst_caps_unref (query_caps);
-
-  /* list_factories_for_caps with audio/x-dts should return factories */
-  query_caps = gst_caps_from_string ("audio/x-dts");
-  factories = gst_type_find_list_factories_for_caps (NULL, query_caps);
-  fail_unless (factories != NULL);
-  g_list_free_full (factories, (GDestroyNotify) gst_object_unref);
-
-  /* typefind with audio/x-dts should find DTS (inside WAV data chunk) */
-  prob = 0;
-  caps = gst_type_find_helper_for_buffer_with_caps (NULL, buf,
-      query_caps, &prob);
-  fail_unless (caps != NULL,
-      "WAV+DTS: typefind with audio/x-dts caps should find DTS");
-  type = gst_structure_get_name (gst_caps_get_structure (caps, 0));
-  fail_unless_equals_string (type, "audio/x-dts");
-  fail_unless (prob == GST_TYPE_FIND_MAXIMUM);
-  gst_caps_unref (caps);
-  gst_caps_unref (query_caps);
-
-  gst_buffer_unref (buf);
-}
-
-GST_END_TEST;
-
 static Suite *
 typefindfunctions_suite (void)
 {
@@ -656,7 +554,6 @@
   tcase_add_test (tc_chain, test_manifest_typefinding);
   tcase_add_test (tc_chain, test_webvtt);
   tcase_add_test (tc_chain, test_subparse);
-  tcase_add_test (tc_chain, test_typefind_with_wav_dts_caps);
 
   return s;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-base-1.28.6/tests/check/libs/video.c 
new/gst-plugins-base-1.28.7/tests/check/libs/video.c
--- old/gst-plugins-base-1.28.6/tests/check/libs/video.c        2026-08-05 
13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/tests/check/libs/video.c        2026-09-07 
21:11:13.000000000 +0200
@@ -4846,6 +4846,112 @@
 
 GST_END_TEST;
 
+static void
+unpack_u8_pixel (const GstVideoFrame * frame, gint x, gint y, guint8 pixel[4])
+{
+  frame->info.finfo->unpack_func (frame->info.finfo,
+      GST_VIDEO_PACK_FLAG_NONE, pixel, frame->data, frame->info.stride,
+      x, y, 1);
+}
+
+GST_START_TEST (test_video_convert_border_color)
+{
+  const GstVideoFormat formats[] = {
+    GST_VIDEO_FORMAT_RGBA,
+    GST_VIDEO_FORMAT_AYUV,
+    GST_VIDEO_FORMAT_GRAY8,
+  };
+  const guint32 border_argb = 0xff4080c0;
+  GstVideoInfo src_info;
+  GstVideoFrame src_frame;
+  GstBuffer *src_buf;
+  guint i;
+
+  fail_unless (gst_video_info_set_format (&src_info,
+          GST_VIDEO_FORMAT_ARGB, 1, 1));
+
+  src_buf = gst_buffer_new_and_alloc (src_info.size);
+  fail_unless (gst_video_frame_map (&src_frame, &src_info,
+          src_buf, GST_MAP_READWRITE));
+
+  {
+    /* Fill source ARGB */
+    const guint8 argb[] = { 0xff, 0x40, 0x80, 0xc0 };
+    gpointer data[GST_VIDEO_MAX_PLANES] = { NULL, };
+    gint stride[GST_VIDEO_MAX_PLANES] = { 0, };
+
+    data[0] = GST_VIDEO_FRAME_PLANE_DATA (&src_frame, 0);
+    stride[0] = GST_VIDEO_FRAME_PLANE_STRIDE (&src_frame, 0);
+
+    src_info.finfo->pack_func (src_info.finfo, GST_VIDEO_PACK_FLAG_NONE,
+        (gpointer) argb, sizeof (argb), data, stride,
+        GST_VIDEO_CHROMA_SITE_UNKNOWN, 0, 1);
+  }
+
+  for (i = 0; i < G_N_ELEMENTS (formats); i++) {
+    GstVideoInfo ref_info, out_info;
+    GstVideoFrame ref_frame, out_frame;
+    GstBuffer *ref_buf, *out_buf;
+    GstVideoConverter *convert;
+    guint8 ref[4], border[4];
+    guint c;
+
+    /* 1st path, src -> test format to get the computed border color value */
+    fail_unless (gst_video_info_set_format (&ref_info, formats[i], 1, 1));
+
+    ref_buf = gst_buffer_new_and_alloc (ref_info.size);
+    fail_unless (gst_video_frame_map (&ref_frame, &ref_info,
+            ref_buf, GST_MAP_READWRITE));
+
+    convert = gst_video_converter_new (&src_info, &ref_info, NULL);
+    fail_unless (convert);
+
+    gst_video_converter_frame (convert, &src_frame, &ref_frame);
+    gst_video_converter_free (convert);
+
+    /* 2nd path, do actual conversion with border enabled */
+    fail_unless (gst_video_info_set_format (&out_info, formats[i], 3, 3));
+
+    out_buf = gst_buffer_new_and_alloc (out_info.size);
+    gst_buffer_memset (out_buf, 0, 0, out_info.size);
+
+    fail_unless (gst_video_frame_map (&out_frame, &out_info,
+            out_buf, GST_MAP_READWRITE));
+
+    convert = gst_video_converter_new (&src_info, &out_info,
+        gst_structure_new ("options",
+            GST_VIDEO_CONVERTER_OPT_DEST_X, G_TYPE_INT, 1,
+            GST_VIDEO_CONVERTER_OPT_DEST_Y, G_TYPE_INT, 1,
+            GST_VIDEO_CONVERTER_OPT_DEST_WIDTH, G_TYPE_INT, 1,
+            GST_VIDEO_CONVERTER_OPT_DEST_HEIGHT, G_TYPE_INT, 1,
+            GST_VIDEO_CONVERTER_OPT_BORDER_ARGB, G_TYPE_UINT,
+            border_argb, NULL));
+    fail_unless (convert);
+
+    gst_video_converter_frame (convert, &src_frame, &out_frame);
+    gst_video_converter_free (convert);
+
+    /* compare color values between reference (converted via normal conversion
+     * path) and produced borders */
+    unpack_u8_pixel (&ref_frame, 0, 0, ref);
+    unpack_u8_pixel (&out_frame, 0, 1, border);
+    for (c = 0; c < 4; c++) {
+      fail_unless (ref[c] == border[c], "%s comp %u, ref %u, border %u",
+          gst_video_format_to_string (formats[i]), c, ref[c], border[c]);
+    }
+
+    gst_video_frame_unmap (&out_frame);
+    gst_video_frame_unmap (&ref_frame);
+    gst_buffer_unref (out_buf);
+    gst_buffer_unref (ref_buf);
+  }
+
+  gst_video_frame_unmap (&src_frame);
+  gst_buffer_unref (src_buf);
+}
+
+GST_END_TEST;
+
 static Suite *
 video_suite (void)
 {
@@ -4920,6 +5026,7 @@
   tcase_add_test (tc_chain, test_video_meta_transform_matrix_flip_horizontal);
   tcase_add_test (tc_chain, test_video_meta_transform_matrix_flip_vertical);
   tcase_add_test (tc_chain, test_video_meta_transform_matrix_rotation_45);
+  tcase_add_test (tc_chain, test_video_convert_border_color);
 
   return s;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/audiotestsrc/reverse.validatetest 
new/gst-plugins-base-1.28.7/tests/validate/audiotestsrc/reverse.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/audiotestsrc/reverse.validatetest    
    2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/audiotestsrc/reverse.validatetest    
    2026-09-07 21:11:13.000000000 +0200
@@ -1,9 +1,9 @@
 meta,
-    args = {
+    args={
         "audiotestsrc name=src samplesperbuffer=1024 ! 
audio/x-raw,format=S16LE,rate=44100 ! fakesink name=asink sync=true",
     },
-    configs = {
-        "$(validateflow), pad=asink:sink, record-buffers=true",
+    configs={
+        [validateflow, pad=asink:sink, record-buffers=true],
     },
     handles-states=true,
     ignore-eos=true
@@ -19,6 +19,6 @@
 set-property, target-element-name="src", property-name="samplesperbuffer", 
property-value=4410, on-message=eos
 seek, start=0.0, stop=1.0, rate=-1.0, flags=accurate+flush
 crank-clock, expected-elapsed-time=0.0
-crank-clock, repeat=10,  expected-elapsed-time=0.1
+crank-clock, repeat=10, expected-elapsed-time=0.1
 
-stop, on-message=eos;
\ No newline at end of file
+stop, on-message=eos;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/compositor/renogotiate_failing_unsupported_src_format.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/compositor/renogotiate_failing_unsupported_src_format.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/compositor/renogotiate_failing_unsupported_src_format.validatetest
       2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/compositor/renogotiate_failing_unsupported_src_format.validatetest
       2026-09-07 21:11:13.000000000 +0200
@@ -1,5 +1,5 @@
 meta,
-    args = {
+    args={
         "videotestsrc num-buffers=20 ! capsfilter 
caps=\"video/x-raw,format=I420\" ! capssetter name=cs ! compositor name=c ! 
fakesink sync=true\
          videotestsrc num-buffers=20 ! capsfilter 
caps=\"video/x-raw,format=I420\" ! c.",
     },
@@ -7,6 +7,7 @@
 
 play;
 crank-clock, repeat=10;
-set-properties, cs::caps="video/x-raw,format=ARGB64"
+set-properties,
+    cs::caps="video/x-raw,format=ARGB64"
 crank-clock, repeat=11;
 play
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/encodebin/set-encoder-properties.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/encodebin/set-encoder-properties.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/encodebin/set-encoder-properties.validatetest
    2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/encodebin/set-encoder-properties.validatetest
    2026-09-07 21:11:13.000000000 +0200
@@ -1,20 +1,22 @@
 meta,
     seek=false,
     handles-states=true,
-    args = {
+    args={
         "audiotestsrc num-buffers=4 ! encodebin name=ebin 
profile=\"vorbisenc|element-properties,managed=true,name=audioencoder\" ! 
fakesink",
     }
 
 pause
-check-properties, audioencoder::managed=true
+check-properties,
+    audioencoder::managed=true
 
-set-properties, ebin::profile::element-properties=[
-    element-properties-map, map = {
-        [vorbisenc, managed=false],
-        [somethingelse, whatever=false],
-    },
-]
+set-properties,
+    ebin::profile::element-properties=[element-properties-map,
+        map={
+            [vorbisenc, managed=false],
+            [somethingelse, whatever=false],
+        }]
 
-check-properties, audioencoder::managed=false
+check-properties,
+    audioencoder::managed=false
 
-stop
\ No newline at end of file
+stop
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/fakevideodec/encoded.validatetest 
new/gst-plugins-base-1.28.7/tests/validate/fakevideodec/encoded.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/fakevideodec/encoded.validatetest    
    2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/fakevideodec/encoded.validatetest    
    2026-09-07 21:11:13.000000000 +0200
@@ -1,20 +1,35 @@
 # Check that `fakevideodec` works in "encoded video" mode
 meta,
     handles-states=true,
-    args = {
-         "appsrc name=src format=time  ! fakevideodec name=dec ! videoconvert 
! $(videosink)",
+    args={
+        "appsrc name=src format=time  ! fakevideodec name=dec ! videoconvert ! 
$(videosink)",
     },
-    configs = {
-       "$(validateflow), pad=dec:sink, buffers-checksum=as-id, 
ignored-event-types={ tag, stream-start }",
-       "$(validateflow), pad=dec:src, buffers-checksum=as-id, 
ignored-event-types={ tag, stream-start }",
+    configs={
+        [validateflow,
+            pad=dec:sink,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag, stream-start,
+            }],
+        [validateflow,
+            pad=dec:src,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag, stream-start,
+            }],
     }
 
 foreach,
-  i=[0, 20],
-  actions={
-    [appsrc-push, target-element-name=src, fill-mode=counter, pts="$(i)/20", 
duration=1.0, size=8,
-        
caps=(GstCaps)[video/x-h264,framerate=20/1,width=640,height=480,parsed=true]],
-  }
+    i=[0, 20],
+    actions={
+        [appsrc-push,
+            target-element-name=src,
+            fill-mode=counter,
+            pts="$(i)/20",
+            duration=1.0,
+            size=8,
+            caps=(GstCaps)[video/x-h264, framerate=20/1, width=640, 
height=480, parsed=true]],
+    }
 
 appsrc-eos, target-element-name=src
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/fakevideodec/simple.validatetest 
new/gst-plugins-base-1.28.7/tests/validate/fakevideodec/simple.validatetest
--- old/gst-plugins-base-1.28.6/tests/validate/fakevideodec/simple.validatetest 
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/tests/validate/fakevideodec/simple.validatetest 
2026-09-07 21:11:13.000000000 +0200
@@ -1,9 +1,19 @@
 # Check that `fakevideodec` works in "raw video" mode
 meta,
-    args = {
-         "videotestsrc num-buffers=5 ! video/x-raw,format=RGBA ! fakevideodec 
name=dec ! videoconvert ! $(videosink)",
+    args={
+        "videotestsrc num-buffers=5 ! video/x-raw,format=RGBA ! fakevideodec 
name=dec ! videoconvert ! $(videosink)",
     },
-    configs = {
-       "$(validateflow), pad=dec:sink, buffers-checksum=as-id, 
ignored-event-types={ tag, stream-start }",
-       "$(validateflow), pad=dec:src, buffers-checksum=as-id, 
ignored-event-types={ tag, stream-start }",
+    configs={
+        [validateflow,
+            pad=dec:sink,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag, stream-start,
+            }],
+        [validateflow,
+            pad=dec:src,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag, stream-start,
+            }],
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/giosrc/read-growing-file.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/giosrc/read-growing-file.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/giosrc/read-growing-file.validatetest
    2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/giosrc/read-growing-file.validatetest
    2026-09-07 21:11:13.000000000 +0200
@@ -9,13 +9,21 @@
 meta,
     seek=false,
     handles-states=false,
-    args = {
+    args={
         "fakesrc num-buffers=30 datarate=30 filltype=pattern-span 
sizetype=fixed filltype=random format=time ! filesink sync=true 
location=$(growing_file_location) name=filesink buffer-mode=unbuffered \
-         giosrc name=giosrc is-growing=true 
location=file://$(growing_file_location) ! fakesink name=growing-file-sink 
async=false" \
+         giosrc name=giosrc is-growing=true 
location=file://$(growing_file_location) ! fakesink name=growing-file-sink 
async=false",
     },
-    configs = {
-       "$(validateflow), pad=filesink:sink, record-buffers=true, 
ignored-fields=\"stream-start={stream-id,group-id,stream}\", 
buffers-checksum=as-id",
-       "$(validateflow), pad=growing-file-sink:sink, record-buffers=true, 
ignored-fields=\"stream-start={stream-id,group-id,stream}\", 
buffers-checksum=as-id",
+    configs={
+        [validateflow,
+            pad=filesink:sink,
+            record-buffers=true,
+            ignored-fields="stream-start={stream-id,group-id,stream}",
+            buffers-checksum=as-id],
+        [validateflow,
+            pad=growing-file-sink:sink,
+            record-buffers=true,
+            ignored-fields="stream-start={stream-id,group-id,stream}",
+            buffers-checksum=as-id],
     }
 
 
@@ -39,4 +47,5 @@
 checkpoint
 
 # Make sure EOS is outputted now, the scenario will automatically quit on EOS
-set-properties, giosrc::is_growing=false
+set-properties,
+    giosrc::is_growing=false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/uridecodebin/expose_raw_pad_caps.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/uridecodebin/expose_raw_pad_caps.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/uridecodebin/expose_raw_pad_caps.validatetest
    2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/uridecodebin/expose_raw_pad_caps.validatetest
    2026-09-07 21:11:13.000000000 +0200
@@ -1,14 +1,15 @@
 meta,
-    args = {
+    args={
         "uridecodebin uri=testbin://video,num-buffers=1 ! fakesink",
     },
     handles-states=true,
     ignore-eos=true
 
-wait, signal-name="pad-added", target-element-factory-name="uridecodebin", 
non-blocking=true,
-    check=[
-        check-current-pad-caps, expected-caps=[video/x-raw], 
target-element-factory-name="uridecodebin", pad="src_0", 
comparison-mode="intersect",
-    ]
+wait,
+    signal-name="pad-added",
+    target-element-factory-name="uridecodebin",
+    non-blocking=true,
+    check=[check-current-pad-caps, expected-caps=[video/x-raw], 
target-element-factory-name="uridecodebin", pad="src_0", 
comparison-mode="intersect"]
 
 pause
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/10_to_1fps.validatetest 
new/gst-plugins-base-1.28.7/tests/validate/videorate/10_to_1fps.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/10_to_1fps.validatetest    
    2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/10_to_1fps.validatetest    
    2026-09-07 21:11:13.000000000 +0200
@@ -7,4 +7,4 @@
 crank-clock, expected-elapsed-time=0.0
 crank-clock, repeat=4, expected-elapsed-time=1.0
 crank-clock, expected-elapsed-time=1.0
-stop, on-message=eos
\ No newline at end of file
+stop, on-message=eos
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/change_rate_reverse_playback.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/videorate/change_rate_reverse_playback.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/change_rate_reverse_playback.validatetest
      2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/change_rate_reverse_playback.validatetest
      2026-09-07 21:11:13.000000000 +0200
@@ -1,14 +1,23 @@
 meta,
-    # Handle EOS ourself
     ignore-eos=true,
-    args = {
+    args={
         # We just want each frame to be different, and we just check their 
content by 'id'
         "videotestsrc ! 
video/x-raw,format=I420,framerate=10/1,width=320,height=240 ! videorate 
name=videorate ! fakesink sync=true qos=true",
     },
-    configs = {
+    configs={
         # Check dataflow on both videorate pads
-        "$(validateflow), pad=videorate:sink, buffers-checksum=as-id, 
ignored-event-types={ tag }",
-        "$(validateflow), pad=videorate:src, buffers-checksum=as-id, 
ignored-event-types={ tag }",
+        [validateflow,
+            pad=videorate:sink,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
+        [validateflow,
+            pad=videorate:src,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
     }
 
 seek, start=0.0, stop=5.0, flags=accurate+flush, rate=-1.0
@@ -23,18 +32,21 @@
 
 # Set videorate.rate = 0.5 and add that info to the expecation files for 
better readability
 checkpoint, text="Setting videorate.rate=0.5"
-set-property, playback-time=99.0, target-element-name=videorate, 
property-name=rate, property-value=0.5 # playback-time=99.0 so that the action 
is executed asap but no on element addition
+set-property, playback-time=99.0, target-element-name=videorate, 
property-name=rate, property-value=0.5
+# playback-time=99.0 so that the action is executed asap but no on element 
addition
 
 # Cranking 5 times, and let following buffer through
 crank-clock, repeat=5, expected-elapsed-time=0.1
 wait, on-clock=true
-check-position, expected-position=4.0 # seek.stop - (10*(1/10fps)) = 4.0s
+check-position, expected-position=4.0
+# seek.stop - (10*(1/10fps)) = 4.0s
 
 checkpoint, text="Setting videorate.rate=0.1"
 set-property, playback-time=99.0, target-element-name=videorate, 
property-name=rate, property-value=0.1
 crank-clock, repeat=20
 wait, on-clock=true
-check-position, expected-position=2.0 # seek.stop - (20*(1/10fps)) = 2.0s
+check-position, expected-position=2.0
+# seek.stop - (20*(1/10fps)) = 2.0s
 
 # Now setting rate=2.0
 checkpoint, text="Setting videorate.rate=2.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/change_rate_while_playing.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/videorate/change_rate_while_playing.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/change_rate_while_playing.validatetest
 2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/change_rate_while_playing.validatetest
 2026-09-07 21:11:13.000000000 +0200
@@ -1,13 +1,23 @@
 meta,
     handles-states=true,
     ignore-eos=true,
-    args = {
+    args={
         # We just want each frame to be different, and we just check their 
content by 'id'
         "videotestsrc ! 
video/x-raw,format=I420,framerate=10/1,width=320,height=240 ! videorate 
name=videorate drop-out-of-segment=true ! fakesink sync=true qos=true",
     },
-    configs = {
-        "$(validateflow), pad=videorate:src, buffers-checksum=as-id, 
ignored-event-types={ tag }",
-        "$(validateflow), pad=videorate:sink, buffers-checksum=as-id, 
ignored-event-types={ tag }",
+    configs={
+        [validateflow,
+            pad=videorate:src,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
+        [validateflow,
+            pad=videorate:sink,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
     }
 
 play
@@ -40,4 +50,4 @@
 crank-clock, repeat=10
 check-position, expected-position=4.0
 
-stop, on-message=eos
\ No newline at end of file
+stop, on-message=eos
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/drop_out_of_segment.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/videorate/drop_out_of_segment.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/drop_out_of_segment.validatetest
       2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/drop_out_of_segment.validatetest
       2026-09-07 21:11:13.000000000 +0200
@@ -1,23 +1,36 @@
 meta,
-    args = {
-            "appsrc name=src format=time handle-segment-change=true 
automatic-eos=false ! \
+    args={
+        "appsrc name=src format=time handle-segment-change=true 
automatic-eos=false ! \
                 videorate drop-out-of-segment=true name=videorate ! 
video/x-raw,framerate=1/1 ! $(videosink) name=sink",
     },
-    configs = {
-       "$(validateflow), pad=videorate:sink, buffers-checksum=as-id, 
ignored-event-types={ tag }",
-       "$(validateflow), pad=videorate:src, buffers-checksum=as-id, 
ignored-event-types={ tag }",
+    configs={
+        [validateflow,
+            pad=videorate:sink,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
+        [validateflow,
+            pad=videorate:src,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
     },
     handles-states=true
 
 foreach,
-  i=<1.0, 2.0, 3.0, 4.0, 5.0>,
-  actions = {
-    [
-      appsrc-push, target-element-name=src, fill-mode=counter, size=115200, 
pts="$(i)", duration=1.0,
-        
caps=(GstCaps)[video/x-raw,format=I420,framerate=1/1,width=320,height=240],
-        segment=[segment, stop=1.0, format=(GstFormat)time],
-    ],
-  }
+    i=<1.0, 2.0, 3.0, 4.0, 5.0>,
+    actions={
+        [appsrc-push,
+            target-element-name=src,
+            fill-mode=counter,
+            size=115200,
+            pts="$(i)",
+            duration=1.0,
+            caps=(GstCaps)[video/x-raw, format=I420, framerate=1/1, width=320, 
height=240],
+            segment=[segment, stop=1.0, format=(GstFormat)time]],
+    }
 
 play
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/duplicate_on_eos.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/videorate/duplicate_on_eos.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/duplicate_on_eos.validatetest
  2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/duplicate_on_eos.validatetest
  2026-09-07 21:11:13.000000000 +0200
@@ -1,10 +1,20 @@
 meta,
-    args = {
+    args={
         "videotestsrc pattern=ball animation-mode=frames ! 
video/x-raw,format=I420,framerate=1/1,width=320,height=240 ! videorate 
name=videorate ! video/x-raw,framerate=30/1 ! fakesink sync=true qos=true",
     },
-    configs = {
-       "$(validateflow), pad=videorate:sink, buffers-checksum=as-id, 
ignored-event-types={ tag }",
-       "$(validateflow), pad=videorate:src, buffers-checksum=as-id, 
ignored-event-types={ tag }",
+    configs={
+        [validateflow,
+            pad=videorate:sink,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
+        [validateflow,
+            pad=videorate:src,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
     },
     handles-states=true,
     ignore-eos=true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/duplicate_on_eos_disbaled.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/videorate/duplicate_on_eos_disbaled.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/duplicate_on_eos_disbaled.validatetest
 2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/duplicate_on_eos_disbaled.validatetest
 2026-09-07 21:11:13.000000000 +0200
@@ -1,10 +1,20 @@
 meta,
-    args = {
+    args={
         "videotestsrc pattern=ball animation-mode=frames ! 
video/x-raw,format=I420,framerate=1/1,width=320,height=240 ! videorate 
max-closing-segment-duplication-duration=0 name=videorate ! 
video/x-raw,framerate=30/1 ! fakesink sync=true qos=true",
     },
-    configs = {
-       "$(validateflow), pad=videorate:sink, buffers-checksum=as-id, 
ignored-event-types={ tag }",
-       "$(validateflow), pad=videorate:src, buffers-checksum=as-id, 
ignored-event-types={ tag }",
+    configs={
+        [validateflow,
+            pad=videorate:sink,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
+        [validateflow,
+            pad=videorate:src,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
     },
     handles-states=true,
     ignore-eos=true
@@ -16,5 +26,3 @@
 crank-clock, repeat=32
 wait, message-type=eos
 stop
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/duplicate_on_eos_half_sec.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/videorate/duplicate_on_eos_half_sec.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/duplicate_on_eos_half_sec.validatetest
 2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/duplicate_on_eos_half_sec.validatetest
 2026-09-07 21:11:13.000000000 +0200
@@ -1,10 +1,20 @@
 meta,
-    args = {
+    args={
         "videotestsrc pattern=ball animation-mode=frames ! 
video/x-raw,format=I420,framerate=1/1,width=320,height=240 ! videorate 
max-closing-segment-duplication-duration=500000000 name=videorate ! 
video/x-raw,framerate=30/1 ! fakesink sync=true qos=true",
     },
-    configs = {
-       "$(validateflow), pad=videorate:sink, buffers-checksum=as-id, 
ignored-event-types={ tag }",
-       "$(validateflow), pad=videorate:src, buffers-checksum=as-id, 
ignored-event-types={ tag }",
+    configs={
+        [validateflow,
+            pad=videorate:sink,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
+        [validateflow,
+            pad=videorate:src,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
     },
     handles-states=true,
     ignore-eos=true
@@ -20,6 +30,3 @@
 # buffer (which starts at 1) videorate will duplicate the frame for 0.5 secs
 check-position, expected-position=1.5
 stop
-
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/fill_segment_after_caps_changed_before_eos.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/videorate/fill_segment_after_caps_changed_before_eos.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/fill_segment_after_caps_changed_before_eos.validatetest
        2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/fill_segment_after_caps_changed_before_eos.validatetest
        2026-09-07 21:11:13.000000000 +0200
@@ -1,29 +1,50 @@
 meta,
-    args = {
-            "appsrc name=src format=time handle-segment-change=true ! \
+    args={
+        "appsrc name=src format=time handle-segment-change=true ! \
                 videorate 
max-closing-segment-duplication-duration=999999999999999 name=videorate ! 
video/x-raw,framerate=1/1 ! fakesink sync=true",
     },
-    configs = {
-       "$(validateflow), pad=videorate:sink, buffers-checksum=as-id, 
ignored-event-types={ tag }",
-       "$(validateflow), pad=videorate:src, buffers-checksum=as-id, 
ignored-event-types={ tag }",
+    configs={
+        [validateflow,
+            pad=videorate:sink,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
+        [validateflow,
+            pad=videorate:src,
+            buffers-checksum=as-id,
+            ignored-event-types={
+                tag,
+            }],
     },
     handles-states=true,
     ignore-eos=true
 
 
-appsrc-push, target-element-name=src, fill-mode=counter, pts=0.0, 
duration=1.0, size=115200,
-    caps=(GstCaps)[video/x-raw,format=I420,framerate=1/1,width=320,height=240],
+appsrc-push,
+    target-element-name=src,
+    fill-mode=counter,
+    pts=0.0,
+    duration=1.0,
+    size=115200,
+    caps=(GstCaps)[video/x-raw, format=I420, framerate=1/1, width=320, 
height=240],
     segment=[segment, stop=3.0, format=(GstFormat)time]
 
-appsrc-push, target-element-name=src, fill-mode=counter, pts=1.0, 
duration=1.0, size=115200,
-    caps=(GstCaps)[video/x-raw,format=I420,framerate=1/1,width=320,height=240],
+appsrc-push,
+    target-element-name=src,
+    fill-mode=counter,
+    pts=1.0,
+    duration=1.0,
+    size=115200,
+    caps=(GstCaps)[video/x-raw, format=I420, framerate=1/1, width=320, 
height=240],
     segment=[segment, stop=3.0, format=(GstFormat)time]
 
 play
 
 crank-clock, repeat=1
 
-set-properties, src::caps="video/x-raw,width=322,height=244,framerate=1/1"
+set-properties,
+    src::caps="video/x-raw,width=322,height=244,framerate=1/1"
 
 appsrc-eos, target-element-name=src
 crank-clock, repeat=3
@@ -32,6 +53,3 @@
 
 # check-position, expected-position=2.0
 stop
-
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/rate_2_0.validatetest 
new/gst-plugins-base-1.28.7/tests/validate/videorate/rate_2_0.validatetest
--- old/gst-plugins-base-1.28.6/tests/validate/videorate/rate_2_0.validatetest  
2026-08-05 13:59:39.000000000 +0200
+++ new/gst-plugins-base-1.28.7/tests/validate/videorate/rate_2_0.validatetest  
2026-09-07 21:11:13.000000000 +0200
@@ -1,3 +1,3 @@
 set-globals, rate=(string)"2.0"
 
-include, location="check-rate-prop.meta"
\ No newline at end of file
+include, location="check-rate-prop.meta"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/reverse.10_to_30fps.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/videorate/reverse.10_to_30fps.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/reverse.10_to_30fps.validatetest
       2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/reverse.10_to_30fps.validatetest
       2026-09-07 21:11:13.000000000 +0200
@@ -12,4 +12,3 @@
 # Waiting 1 second on EOS
 crank-clock, expected-elapsed-time=(guint64)33333334
 stop, on-message=eos
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/reverse.30fps.validatetest 
new/gst-plugins-base-1.28.7/tests/validate/videorate/reverse.30fps.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/reverse.30fps.validatetest 
    2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/reverse.30fps.validatetest 
    2026-09-07 21:11:13.000000000 +0200
@@ -11,4 +11,4 @@
 
 # Waiting on EOS
 crank-clock, expected-elapsed-time=(guint64)33333334
-stop, on-message=eos
\ No newline at end of file
+stop, on-message=eos
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/reverse.variable_to_10fps.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/videorate/reverse.variable_to_10fps.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/reverse.variable_to_10fps.validatetest
 2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/reverse.variable_to_10fps.validatetest
 2026-09-07 21:11:13.000000000 +0200
@@ -3,12 +3,12 @@
 meta,
     handles-states=true,
     ignore-eos=true,
-    args = {
-         "videotestsrc pattern=ball animation-mode=frames ! 
video/x-raw,format=I420,framerate=30/1 ! capssetter 
caps=\"video/x-raw,framerate=$(in_framerate)\" ! videorate name=videorate ! 
video/x-raw,format=I420,framerate=$(out_framerate) ! fakesink sync=true",
+    args={
+        "videotestsrc pattern=ball animation-mode=frames ! 
video/x-raw,format=I420,framerate=30/1 ! capssetter 
caps=\"video/x-raw,framerate=$(in_framerate)\" ! videorate name=videorate ! 
video/x-raw,format=I420,framerate=$(out_framerate) ! fakesink sync=true",
     },
-    configs = {
-       "$(validateflow), pad=videorate:sink, buffers-checksum=true",
-       "$(validateflow), pad=videorate:src, buffers-checksum=true",
+    configs={
+        [validateflow, pad=videorate:sink, buffers-checksum=true],
+        [validateflow, pad=videorate:src, buffers-checksum=true],
     }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/reverse_fast.variable_to_10fps.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/videorate/reverse_fast.variable_to_10fps.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/reverse_fast.variable_to_10fps.validatetest
    2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/reverse_fast.variable_to_10fps.validatetest
    2026-09-07 21:11:13.000000000 +0200
@@ -3,12 +3,12 @@
 meta,
     handles-states=true,
     ignore-eos=true,
-    args = {
-         "videotestsrc pattern=ball animation-mode=frames ! 
video/x-raw,format=I420,framerate=30/1 ! capssetter 
caps=\"video/x-raw,framerate=$(in_framerate)\" ! videorate name=videorate ! 
video/x-raw,format=I420,framerate=$(out_framerate) ! fakesink sync=true",
+    args={
+        "videotestsrc pattern=ball animation-mode=frames ! 
video/x-raw,format=I420,framerate=30/1 ! capssetter 
caps=\"video/x-raw,framerate=$(in_framerate)\" ! videorate name=videorate ! 
video/x-raw,format=I420,framerate=$(out_framerate) ! fakesink sync=true",
     },
-    configs = {
-       "$(validateflow), pad=videorate:sink, buffers-checksum=true",
-       "$(validateflow), pad=videorate:src, buffers-checksum=true",
+    configs={
+        [validateflow, pad=videorate:sink, buffers-checksum=true],
+        [validateflow, pad=videorate:src, buffers-checksum=true],
     }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-base-1.28.6/tests/validate/videorate/reverse_slow.variable_to_10fps.validatetest
 
new/gst-plugins-base-1.28.7/tests/validate/videorate/reverse_slow.variable_to_10fps.validatetest
--- 
old/gst-plugins-base-1.28.6/tests/validate/videorate/reverse_slow.variable_to_10fps.validatetest
    2026-08-05 13:59:39.000000000 +0200
+++ 
new/gst-plugins-base-1.28.7/tests/validate/videorate/reverse_slow.variable_to_10fps.validatetest
    2026-09-07 21:11:13.000000000 +0200
@@ -3,12 +3,12 @@
 meta,
     handles-states=true,
     ignore-eos=true,
-    args = {
-         "videotestsrc pattern=ball animation-mode=frames ! 
video/x-raw,format=I420,framerate=30/1 ! capssetter 
caps=\"video/x-raw,framerate=$(in_framerate)\" ! videorate name=videorate ! 
video/x-raw,format=I420,framerate=$(out_framerate) ! fakesink sync=true",
+    args={
+        "videotestsrc pattern=ball animation-mode=frames ! 
video/x-raw,format=I420,framerate=30/1 ! capssetter 
caps=\"video/x-raw,framerate=$(in_framerate)\" ! videorate name=videorate ! 
video/x-raw,format=I420,framerate=$(out_framerate) ! fakesink sync=true",
     },
-    configs = {
-       "$(validateflow), pad=videorate:sink, buffers-checksum=true",
-       "$(validateflow), pad=videorate:src, buffers-checksum=true",
+    configs={
+        [validateflow, pad=videorate:sink, buffers-checksum=true],
+        [validateflow, pad=videorate:src, buffers-checksum=true],
     }
 
 

++++++ gst-plugins-base.obsinfo ++++++
--- /var/tmp/diff_new_pack.GS6Tt9/_old  2026-09-11 19:01:38.548396380 +0200
+++ /var/tmp/diff_new_pack.GS6Tt9/_new  2026-09-11 19:01:38.555396672 +0200
@@ -1,5 +1,5 @@
 name: gst-plugins-base
-version: 1.28.6
-mtime: 1785931179
-commit: 2d3e05cbdad68e47d645f548899b432dc9fb4473
+version: 1.28.7
+mtime: 1788808273
+commit: 070125524a8422e29d3b69a372ed4f62fd343ffa
 

Reply via email to