Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gstreamer-plugins-good for 
openSUSE:Factory checked in at 2026-07-12 16:20:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-plugins-good (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-plugins-good.new.1991 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-plugins-good"

Sun Jul 12 16:20:52 2026 rev:132 rq:1364878 version:1.28.5

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-plugins-good/gstreamer-plugins-good.changes
    2026-06-13 18:47:21.093464529 +0200
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-plugins-good.new.1991/gstreamer-plugins-good.changes
  2026-07-12 16:21:30.480718762 +0200
@@ -1,0 +2,25 @@
+Thu Jul  9 17:47:07 UTC 2026 - Bjørn Lie <[email protected]>
+
+- Update to version 1.28.5:
+  + flacenc: Fix g_object_notify on loose-mid-side-stereo property
+  + gdkpixbufdec: Drop rank to NONE and handle resolution/format
+    changes
+  + gdkpixbufdec: stop advertising Sun and Andrew raster formats
+  + gdkpixbufdec announces unsupported raster mediatypes
+  + matroskademux: Don't pass non-GstElement pointers to
+    GST_ELEMENT_ERROR
+  + matroska: Update lzo decompression implementation from latest
+    ffmpeg
+  + mp4mux: fix AC-3 template caps so muxer can accept input from
+    ac3parse
+  + pngdec: fix wrong macro being used for ICC support test
+  + qtmoovrecover: Validate box sizes
+  + rtpceltdepay: error out if anyone tries to use this element
+  + rtpjpegdepay: Ensure that quantization table is big enough
+  + rtpsbcdepay: Check for available data in the adapter before
+    getting data
+  + shapewipe: Fix missing mutex unlock in shutdown path
+  + wavparse: Avoid NULL pointer dereference when parsing adtl in
+    push mode
+
+-------------------------------------------------------------------

Old:
----
  gst-plugins-good-1.28.4.obscpio

New:
----
  gst-plugins-good-1.28.5.obscpio

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

Other differences:
------------------
++++++ gstreamer-plugins-good.spec ++++++
--- /var/tmp/diff_new_pack.T7vOoB/_old  2026-07-12 16:21:31.336747615 +0200
+++ /var/tmp/diff_new_pack.T7vOoB/_new  2026-07-12 16:21:31.336747615 +0200
@@ -33,7 +33,7 @@
 %endif
 
 Name:           gstreamer-plugins-good
-Version:        1.28.4
+Version:        1.28.5
 Release:        0
 Summary:        GStreamer Streaming-Media Framework Plug-Ins
 License:        LGPL-2.1-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.T7vOoB/_old  2026-07-12 16:21:31.372748828 +0200
+++ /var/tmp/diff_new_pack.T7vOoB/_new  2026-07-12 16:21:31.376748963 +0200
@@ -5,7 +5,7 @@
     <param 
name="url">https://gitlab.freedesktop.org/gstreamer/gstreamer.git</param>
     <param name="subdir">subprojects/gst-plugins-good</param>
     <param name="filename">gst-plugins-good</param>
-    <param name="revision">1.28.4</param>
+    <param name="revision">1.28.5</param>
     <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
     <param name="versionrewrite-pattern">v?(.*)\+0</param>
     <param name="versionrewrite-replacement">\1</param>

++++++ gst-plugins-good-1.28.4.obscpio -> gst-plugins-good-1.28.5.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/docs/gst_plugins_cache.json 
new/gst-plugins-good-1.28.5/docs/gst_plugins_cache.json
--- old/gst-plugins-good-1.28.4/docs/gst_plugins_cache.json     2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/docs/gst_plugins_cache.json     2026-07-08 
23:42:39.000000000 +0200
@@ -7682,7 +7682,7 @@
                 "long-name": "GdkPixbuf image decoder",
                 "pad-templates": {
                     "sink": {
-                        "caps": 
"image/png:\nimage/x-icon:\napplication/x-navi-animation:\nimage/x-cmu-raster:\nimage/x-sun-raster:\nimage/x-pixmap:\nimage/tiff:\nimage/x-portable-anymap:\nimage/x-portable-bitmap:\nimage/x-portable-graymap:\nimage/x-portable-pixmap:\nimage/bmp:\nimage/x-bmp:\nimage/x-MS-bmp:\nimage/vnd.wap.wbmp:\nimage/x-bitmap:\nimage/x-tga:\nimage/x-pcx:\nimage/svg:\nimage/svg+xml:\n",
+                        "caps": 
"image/png:\nimage/x-icon:\napplication/x-navi-animation:\nimage/x-pixmap:\nimage/tiff:\nimage/x-portable-anymap:\nimage/x-portable-bitmap:\nimage/x-portable-graymap:\nimage/x-portable-pixmap:\nimage/bmp:\nimage/x-bmp:\nimage/x-MS-bmp:\nimage/vnd.wap.wbmp:\nimage/x-bitmap:\nimage/x-tga:\nimage/x-pcx:\nimage/svg:\nimage/svg+xml:\n",
                         "direction": "sink",
                         "presence": "always"
                     },
@@ -7692,7 +7692,7 @@
                         "presence": "always"
                     }
                 },
-                "rank": "secondary"
+                "rank": "none"
             },
             "gdkpixbufoverlay": {
                 "author": "Tim-Philipp Müller <tim centricular net>",
@@ -8695,7 +8695,7 @@
                 "long-name": "MP4 Muxer",
                 "pad-templates": {
                     "audio_%%u": {
-                        "caps": "audio/mpeg:\n    mpegversion: 1\n          
layer: [ 1, 3 ]\n       channels: [ 1, 2 ]\n           rate: [ 1, 2147483647 
]\naudio/mpeg:\n    mpegversion: 4\n  stream-format: raw\n       channels: [ 1, 
8 ]\n           rate: [ 1, 2147483647 ]\naudio/x-ac3:\n       channels: [ 1, 6 
]\n           rate: [ 1, 2147483647 ]\naudio/x-eac3:\n      alignment: 
iec61937\n         parsed: true\n       channels: [ 1, 16 ]\n           rate: [ 
1, 2147483647 ]\naudio/x-alac:\n       channels: [ 1, 2 ]\n           rate: [ 
1, 2147483647 ]\naudio/x-opus:\nchannel-mapping-family: [ 0, 255 ]\n       
channels: [ 1, 8 ]\n           rate: [ 1, 2147483647 ]\n",
+                        "caps": "audio/mpeg:\n    mpegversion: 1\n          
layer: [ 1, 3 ]\n       channels: [ 1, 2 ]\n           rate: [ 1, 2147483647 
]\naudio/mpeg:\n    mpegversion: 4\n  stream-format: raw\n       channels: [ 1, 
8 ]\n           rate: [ 1, 2147483647 ]\naudio/x-ac3:\n       channels: [ 1, 6 
]\n           rate: [ 1, 2147483647 ]\naudio/x-eac3:\n      alignment: 
iec61937\n         framed: true\n       channels: [ 1, 16 ]\n           rate: [ 
1, 2147483647 ]\naudio/x-alac:\n       channels: [ 1, 2 ]\n           rate: [ 
1, 2147483647 ]\naudio/x-opus:\nchannel-mapping-family: [ 0, 255 ]\n       
channels: [ 1, 8 ]\n           rate: [ 1, 2147483647 ]\n",
                         "direction": "sink",
                         "presence": "request",
                         "type": "GstQTMuxPad"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/ext/flac/gstflacenc.c 
new/gst-plugins-good-1.28.5/ext/flac/gstflacenc.c
--- old/gst-plugins-good-1.28.4/ext/flac/gstflacenc.c   2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/ext/flac/gstflacenc.c   2026-07-08 
23:42:39.000000000 +0200
@@ -1035,24 +1035,24 @@
 
   if (GST_AUDIO_INFO_CHANNELS (info) == 2
       || GST_AUDIO_INFO_CHANNELS (info) == 0) {
-    DO_UPDATE (do_mid_side_stereo, mid_side, "mid_side_stereo");
-    DO_UPDATE (loose_mid_side_stereo, loose_mid_side, "loose_mid_side");
+    DO_UPDATE (do_mid_side_stereo, mid_side, "mid-side-stereo");
+    DO_UPDATE (loose_mid_side_stereo, loose_mid_side, "loose-mid-side-stereo");
   }
 
   DO_UPDATE (blocksize, blocksize, "blocksize");
-  DO_UPDATE (max_lpc_order, max_lpc_order, "max_lpc_order");
-  DO_UPDATE (qlp_coeff_precision, qlp_coeff_precision, "qlp_coeff_precision");
+  DO_UPDATE (max_lpc_order, max_lpc_order, "max-lpc-order");
+  DO_UPDATE (qlp_coeff_precision, qlp_coeff_precision, "qlp-coeff-precision");
   DO_UPDATE (do_qlp_coeff_prec_search, qlp_coeff_prec_search,
-      "qlp_coeff_prec_search");
-  DO_UPDATE (do_escape_coding, escape_coding, "escape_coding");
+      "qlp-coeff-prec-search");
+  DO_UPDATE (do_escape_coding, escape_coding, "escape-coding");
   DO_UPDATE (do_exhaustive_model_search, exhaustive_model_search,
-      "exhaustive_model_search");
+      "exhaustive-model-search");
   DO_UPDATE (min_residual_partition_order, min_residual_partition_order,
-      "min_residual_partition_order");
+      "min-residual-partition-order");
   DO_UPDATE (max_residual_partition_order, max_residual_partition_order,
-      "max_residual_partition_order");
+      "max-residual-partition-order");
   DO_UPDATE (rice_parameter_search_dist, rice_parameter_search_dist,
-      "rice_parameter_search_dist");
+      "rice-parameter-search-dist");
 
 #undef DO_UPDATE
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-good-1.28.4/ext/gdk_pixbuf/gstgdkpixbufdec.c 
new/gst-plugins-good-1.28.5/ext/gdk_pixbuf/gstgdkpixbufdec.c
--- old/gst-plugins-good-1.28.4/ext/gdk_pixbuf/gstgdkpixbufdec.c        
2026-06-12 14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/ext/gdk_pixbuf/gstgdkpixbufdec.c        
2026-07-08 23:42:39.000000000 +0200
@@ -42,8 +42,6 @@
         /*"image/gif; " disabled because we can't handle animated gifs */
         "image/x-icon; "
         "application/x-navi-animation; "
-        "image/x-cmu-raster; "
-        "image/x-sun-raster; "
         "image/x-pixmap; "
         "image/tiff; "
         "image/x-portable-anymap; "
@@ -76,8 +74,7 @@
 #define gst_gdk_pixbuf_dec_parent_class parent_class
 G_DEFINE_TYPE (GstGdkPixbufDec, gst_gdk_pixbuf_dec, GST_TYPE_ELEMENT);
 GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (gdkpixbufdec, "gdkpixbufdec",
-    GST_RANK_SECONDARY, GST_TYPE_GDK_PIXBUF_DEC,
-    gdk_pixbuf_element_init (plugin));
+    GST_RANK_NONE, GST_TYPE_GDK_PIXBUF_DEC, gdk_pixbuf_element_init (plugin));
 
 static gboolean
 gst_gdk_pixbuf_dec_sink_setcaps (GstGdkPixbufDec * filter, GstCaps * caps)
@@ -293,6 +290,7 @@
   gint width, height;
   gint n_channels;
   GstVideoFrame frame;
+  GstVideoFormat fmt;
 
   pixbuf = gdk_pixbuf_loader_get_pixbuf (filter->pixbuf_loader);
   if (pixbuf == NULL)
@@ -301,26 +299,26 @@
   width = gdk_pixbuf_get_width (pixbuf);
   height = gdk_pixbuf_get_height (pixbuf);
 
-  if (GST_VIDEO_INFO_FORMAT (&filter->info) == GST_VIDEO_FORMAT_UNKNOWN) {
+  n_channels = gdk_pixbuf_get_n_channels (pixbuf);
+  switch (n_channels) {
+    case 3:
+      fmt = GST_VIDEO_FORMAT_RGB;
+      break;
+    case 4:
+      fmt = GST_VIDEO_FORMAT_RGBA;
+      break;
+    default:
+      goto channels_not_supported;
+  }
+
+  if (GST_VIDEO_INFO_FORMAT (&filter->info) != fmt ||
+      GST_VIDEO_INFO_WIDTH (&filter->info) != width ||
+      GST_VIDEO_INFO_HEIGHT (&filter->info) != height) {
     GstVideoInfo info;
-    GstVideoFormat fmt;
     GList *l;
 
     GST_DEBUG ("Set size to %dx%d", width, height);
 
-    n_channels = gdk_pixbuf_get_n_channels (pixbuf);
-    switch (n_channels) {
-      case 3:
-        fmt = GST_VIDEO_FORMAT_RGB;
-        break;
-      case 4:
-        fmt = GST_VIDEO_FORMAT_RGBA;
-        break;
-      default:
-        goto channels_not_supported;
-    }
-
-
     gst_video_info_init (&info);
     if (!gst_video_info_set_format (&info, fmt, width, height))
       goto format_not_supported;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/ext/gdk_pixbuf/meson.build 
new/gst-plugins-good-1.28.5/ext/gdk_pixbuf/meson.build
--- old/gst-plugins-good-1.28.4/ext/gdk_pixbuf/meson.build      2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/ext/gdk_pixbuf/meson.build      2026-07-08 
23:42:39.000000000 +0200
@@ -23,7 +23,7 @@
   'gdkpixbuf': pathsep.join(doc_sources)
 }
 
-gdkpixbuf_dep = dependency('gdk-pixbuf-2.0', version : '>=2.8.0', required : 
get_option('gdk-pixbuf'))
+gdkpixbuf_dep = dependency('gdk-pixbuf-2.0', version : '>=2.32.1', required : 
get_option('gdk-pixbuf'))
 
 if gdkpixbuf_dep.found()
   gstgdkpixbuf = library('gstgdkpixbuf',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/ext/libpng/gstpngdec.c 
new/gst-plugins-good-1.28.5/ext/libpng/gstpngdec.c
--- old/gst-plugins-good-1.28.4/ext/libpng/gstpngdec.c  2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/ext/libpng/gstpngdec.c  2026-07-08 
23:42:39.000000000 +0200
@@ -344,7 +344,7 @@
     }
     gst_video_codec_state_unref (pngdec->output_state);
   }
-#ifdef HAVE_LIBPNG_1_5
+#if PNG_LIBPNG_VER >= 10500
   if ((pngdec->color_type & PNG_COLOR_MASK_COLOR)
       && !(pngdec->color_type & PNG_COLOR_MASK_PALETTE)
       && png_get_valid (pngdec->png, pngdec->info, PNG_INFO_iCCP)) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/gst/isomp4/atomsrecovery.c 
new/gst-plugins-good-1.28.5/gst/isomp4/atomsrecovery.c
--- old/gst-plugins-good-1.28.4/gst/isomp4/atomsrecovery.c      2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/gst/isomp4/atomsrecovery.c      2026-07-08 
23:42:39.000000000 +0200
@@ -283,6 +283,8 @@
   if (!read_atom_header (moovrf->file, &fourcc, &size)) {
     return FALSE;
   }
+  if (size < 8)
+    return FALSE;
 
   if (fourcc != FOURCC_ftyp) {
     /* we might have a prefix here */
@@ -294,6 +296,8 @@
     /* now read the ftyp */
     if (!read_atom_header (moovrf->file, &fourcc, &size))
       return FALSE;
+    if (size < 8)
+      return FALSE;
   }
 
   /* this has to be the ftyp */
@@ -315,12 +319,25 @@
   /* check for sanity */
   if (fourcc != FOURCC_mvhd)
     return FALSE;
+  if (size < 8)
+    return FALSE;
 
   moovrf->mvhd_size = size;
   moovrf->mvhd_pos = ftell (moovrf->file) - 8;
 
+  guint8 version;
+  if (fread (&version, 1, 1, moovrf->file) != 1)
+    return FALSE;
+  if (version != 0) {
+    GST_WARNING ("Version %d mvhd not supported", version);
+    return FALSE;
+  }
+
+  if (size != 108)
+    return FALSE;
+
   /* skip the remaining of the mvhd in the file */
-  return fseek (moovrf->file, size - 8, SEEK_CUR) == 0;
+  return fseek (moovrf->file, size - 8 - 1, SEEK_CUR) == 0;
 }
 
 static gboolean
@@ -357,6 +374,8 @@
       case FOURCC_ftyp:
       case FOURCC_free:
       case FOURCC_udta:
+        if (size < 8)
+          return FALSE;
         if (fseek (file, size - 8, SEEK_CUR) != 0) {
           goto file_seek_error;
         }
@@ -486,6 +505,8 @@
     return FALSE;
   if (fourcc != expected_fourcc)
     return FALSE;
+  if (size < 8)
+    return FALSE;
 
   return (fseek (moovrf->file, size - 8, SEEK_CUR) == 0);
 }
@@ -502,11 +523,24 @@
     return FALSE;
   if (fourcc != FOURCC_tkhd)
     return FALSE;
+  if (size < 8)
+    return FALSE;
 
   trakrd->tkhd_file_offset = ftell (moovrf->file) - 8;
 
-  /* move 8 bytes forward to the trak_id pos */
-  if (fseek (moovrf->file, 12, SEEK_CUR) != 0)
+  guint8 version;
+  if (fread (&version, 1, 1, moovrf->file) != 1)
+    return FALSE;
+  if (version != 0) {
+    GST_WARNING ("Version %d tkhd not supported", version);
+    return FALSE;
+  }
+
+  if (size != 92)
+    return FALSE;
+
+  /* move 12-1 bytes forward to the trak_id pos */
+  if (fseek (moovrf->file, 12 - 1, SEEK_CUR) != 0)
     return FALSE;
   if (fread (data, 1, 4, moovrf->file) != 4)
     return FALSE;
@@ -530,6 +564,8 @@
     return FALSE;
   if (fourcc != FOURCC_stbl)
     return FALSE;
+  if (size < 8)
+    return FALSE;
 
   trakrd->stbl_file_offset = ftell (moovrf->file) - 8;
   trakrd->stbl_size = size;
@@ -539,12 +575,17 @@
     return FALSE;
   if (fourcc != FOURCC_stsd)
     return FALSE;
+  if (auxsize < 8)
+    return FALSE;
   if (fseek (moovrf->file, auxsize - 8, SEEK_CUR) != 0)
     return FALSE;
 
   trakrd->stsd_size = auxsize;
   trakrd->post_stsd_offset = ftell (moovrf->file);
 
+  if (trakrd->stbl_size < trakrd->post_stsd_offset - trakrd->stbl_file_offset)
+    return FALSE;
+
   /* as this is the last atom we parse, we don't skip forward */
 
   return TRUE;
@@ -556,11 +597,14 @@
   guint32 size;
   guint32 fourcc;
   guint32 auxsize;
+  guint64 offset;
 
   if (!read_atom_header (moovrf->file, &fourcc, &size))
     return FALSE;
   if (fourcc != FOURCC_minf)
     return FALSE;
+  if (size < 8)
+    return FALSE;
 
   trakrd->minf_file_offset = ftell (moovrf->file) - 8;
   trakrd->minf_size = size;
@@ -571,17 +615,23 @@
   if (fourcc != FOURCC_vmhd && fourcc != FOURCC_smhd && fourcc != FOURCC_hmhd 
&&
       fourcc != FOURCC_gmhd)
     return FALSE;
+  if (auxsize < 8)
+    return FALSE;
   if (fseek (moovrf->file, auxsize - 8, SEEK_CUR))
     return FALSE;
 
   /* skip a possible hdlr and the following dinf */
   if (!read_atom_header (moovrf->file, &fourcc, &auxsize))
     return FALSE;
+  if (auxsize < 8)
+    return FALSE;
   if (fourcc == FOURCC_hdlr) {
     if (fseek (moovrf->file, auxsize - 8, SEEK_CUR))
       return FALSE;
     if (!read_atom_header (moovrf->file, &fourcc, &auxsize))
       return FALSE;
+    if (auxsize < 8)
+      return FALSE;
   }
   if (fourcc != FOURCC_dinf)
     return FALSE;
@@ -592,6 +642,10 @@
   if (!moov_recov_parse_stbl (moovrf, trakrd))
     return FALSE;
 
+  offset = ftell (moovrf->file);
+  if (trakrd->minf_size < offset - trakrd->minf_file_offset)
+    return FALSE;
+
   return TRUE;
 }
 
@@ -607,11 +661,24 @@
     return FALSE;
   if (fourcc != FOURCC_mdhd)
     return FALSE;
+  if (size < 8)
+    return FALSE;
 
   trakrd->mdhd_file_offset = ftell (moovrf->file) - 8;
 
+  guint8 version;
+  if (fread (&version, 1, 1, moovrf->file) != 1)
+    return FALSE;
+  if (version != 0) {
+    GST_WARNING ("Version %d mdhd not supported", version);
+    return FALSE;
+  }
+
+  if (size != 32)
+    return FALSE;
+
   /* get the timescale */
-  if (fseek (moovrf->file, 12, SEEK_CUR) != 0)
+  if (fseek (moovrf->file, 12 - 1, SEEK_CUR) != 0)
     return FALSE;
   if (fread (data, 1, 4, moovrf->file) != 4)
     return FALSE;
@@ -626,12 +693,15 @@
 {
   guint32 size;
   guint32 fourcc;
+  guint64 offset;
 
   /* make sure we are on a tkhd atom */
   if (!read_atom_header (moovrf->file, &fourcc, &size))
     return FALSE;
   if (fourcc != FOURCC_mdia)
     return FALSE;
+  if (size < 8)
+    return FALSE;
 
   trakrd->mdia_file_offset = ftell (moovrf->file) - 8;
   trakrd->mdia_size = size;
@@ -643,6 +713,11 @@
     return FALSE;
   if (!moov_recov_parse_minf (moovrf, trakrd))
     return FALSE;
+
+  offset = ftell (moovrf->file);
+  if (trakrd->mdia_size < offset - trakrd->mdia_file_offset)
+    return FALSE;
+
   return TRUE;
 }
 
@@ -665,6 +740,8 @@
   if (fourcc != FOURCC_trak) {
     return FALSE;
   }
+  if (size < 8)
+    return FALSE;
   trakrd->trak_size = size;
 
   /* now we should have a trak header 'tkhd' */
@@ -683,6 +760,9 @@
     return FALSE;
 
   trakrd->extra_atoms_offset = ftell (moovrf->file);
+  if (trakrd->trak_size < trakrd->extra_atoms_offset - offset)
+    return FALSE;
+
   trakrd->extra_atoms_size = size - (trakrd->extra_atoms_offset - offset);
 
   trakrd->file_offset = offset;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/gst/isomp4/gstqtmuxmap.c 
new/gst-plugins-good-1.28.5/gst/isomp4/gstqtmuxmap.c
--- old/gst-plugins-good-1.28.4/gst/isomp4/gstqtmuxmap.c        2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/gst/isomp4/gstqtmuxmap.c        2026-07-08 
23:42:39.000000000 +0200
@@ -153,7 +153,7 @@
 #define EAC3_CAPS \
   "audio/x-eac3, " \
   "alignment = (string) iec61937, " \
-  "parsed = (boolean) true, " \
+  "framed = (boolean) true, " \
   COMMON_AUDIO_CAPS (16, MAX)
 
 #define AMR_CAPS \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/gst/matroska/lzo.c 
new/gst-plugins-good-1.28.5/gst/matroska/lzo.c
--- old/gst-plugins-good-1.28.4/gst/matroska/lzo.c      2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/gst/matroska/lzo.c      2026-07-08 
23:42:39.000000000 +0200
@@ -18,29 +18,34 @@
  * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
 
 #include <gst/gst.h>
-#include <stdlib.h>
+
+#include <limits.h>
+#include <stdint.h>
 #include <string.h>
+
 #include "lzo.h"
 
-/*! define if we may write up to 12 bytes beyond the output buffer */
-/* #define OUTBUF_PADDED 1 */
-/*! define if we may read up to 8 bytes beyond the input buffer */
-/* #define INBUF_PADDED 1 */
+/// Define if we may write up to 12 bytes beyond the output buffer.
+// #define OUTBUF_PADDED 1
+/// Define if we may read up to 8 bytes beyond the input buffer.
+// #define INBUF_PADDED 1
+
 typedef struct LZOContext
 {
-  const guint8 *in, *in_end;
-  guint8 *out_start, *out, *out_end;
+  const uint8_t *in, *in_end;
+  uint8_t *out_start, *out, *out_end;
   int error;
 } LZOContext;
 
 /*
- * \brief read one byte from input buffer, avoiding overrun
- * \return byte read
+ * @brief Reads one byte from the input buffer, avoiding an overrun.
+ * @return byte read
  */
 static inline int
 get_byte (LZOContext * c)
@@ -58,45 +63,222 @@
 #endif
 
 /*
- * \brief decode a length value in the coding used by lzo
- * \param x previous byte value
- * \param mask bits used from x
- * \return decoded length value
+ * @brief Decodes a length value in the coding used by lzo.
+ * @param x previous byte value
+ * @param mask bits used from x
+ * @return decoded length value
  */
 static inline int
 get_len (LZOContext * c, int x, int mask)
 {
   int cnt = x & mask;
   if (!cnt) {
-    while (!(x = get_byte (c)))
+    while (!(x = get_byte (c))) {
+      if (cnt >= INT_MAX - 1000) {
+        c->error |= LZO_ERROR;
+        break;
+      }
       cnt += 255;
+    }
     cnt += mask + x;
   }
   return cnt;
 }
 
-/*#define UNALIGNED_LOADSTORE */
-#define BUILTIN_MEMCPY
-#ifdef UNALIGNED_LOADSTORE
-#define COPY2(d, s) *(guint16 *)(d) = *(guint16 *)(s);
-#define COPY4(d, s) *(guint32 *)(d) = *(guint32 *)(s);
-#elif defined(BUILTIN_MEMCPY)
-#define COPY2(d, s) memcpy(d, s, 2);
-#define COPY4(d, s) memcpy(d, s, 4);
+#ifndef AV_RB16
+#   define AV_RB16(x)                           \
+    ((((const uint8_t*)(x))[0] << 8) |          \
+      ((const uint8_t*)(x))[1])
+#endif
+#ifndef AV_WB16
+#   define AV_WB16(p, val) do {                 \
+        uint16_t d = (val);                     \
+        ((uint8_t*)(p))[1] = (d);               \
+        ((uint8_t*)(p))[0] = (d)>>8;            \
+    } while(0)
+#endif
+
+#ifndef AV_RL16
+#   define AV_RL16(x)                           \
+    ((((const uint8_t*)(x))[1] << 8) |          \
+      ((const uint8_t*)(x))[0])
+#endif
+#ifndef AV_WL16
+#   define AV_WL16(p, val) do {                 \
+        uint16_t d = (val);                     \
+        ((uint8_t*)(p))[0] = (d);               \
+        ((uint8_t*)(p))[1] = (d)>>8;            \
+    } while(0)
+#endif
+
+#ifndef AV_RB32
+#   define AV_RB32(x)                                \
+    (((uint32_t)((const uint8_t*)(x))[0] << 24) |    \
+               (((const uint8_t*)(x))[1] << 16) |    \
+               (((const uint8_t*)(x))[2] <<  8) |    \
+                ((const uint8_t*)(x))[3])
+#endif
+#ifndef AV_WB32
+#   define AV_WB32(p, val) do {                 \
+        uint32_t d = (val);                     \
+        ((uint8_t*)(p))[3] = (d);               \
+        ((uint8_t*)(p))[2] = (d)>>8;            \
+        ((uint8_t*)(p))[1] = (d)>>16;           \
+        ((uint8_t*)(p))[0] = (d)>>24;           \
+    } while(0)
+#endif
+
+#ifndef AV_RL32
+#   define AV_RL32(x)                                \
+    (((uint32_t)((const uint8_t*)(x))[3] << 24) |    \
+               (((const uint8_t*)(x))[2] << 16) |    \
+               (((const uint8_t*)(x))[1] <<  8) |    \
+                ((const uint8_t*)(x))[0])
+#endif
+#ifndef AV_WL32
+#   define AV_WL32(p, val) do {                 \
+        uint32_t d = (val);                     \
+        ((uint8_t*)(p))[0] = (d);               \
+        ((uint8_t*)(p))[1] = (d)>>8;            \
+        ((uint8_t*)(p))[2] = (d)>>16;           \
+        ((uint8_t*)(p))[3] = (d)>>24;           \
+    } while(0)
+#endif
+
+#ifndef AV_RB64
+#   define AV_RB64(x)                                   \
+    (((uint64_t)((const uint8_t*)(x))[0] << 56) |       \
+     ((uint64_t)((const uint8_t*)(x))[1] << 48) |       \
+     ((uint64_t)((const uint8_t*)(x))[2] << 40) |       \
+     ((uint64_t)((const uint8_t*)(x))[3] << 32) |       \
+     ((uint64_t)((const uint8_t*)(x))[4] << 24) |       \
+     ((uint64_t)((const uint8_t*)(x))[5] << 16) |       \
+     ((uint64_t)((const uint8_t*)(x))[6] <<  8) |       \
+      (uint64_t)((const uint8_t*)(x))[7])
+#endif
+#ifndef AV_WB64
+#   define AV_WB64(p, val) do {                 \
+        uint64_t d = (val);                     \
+        ((uint8_t*)(p))[7] = (d);               \
+        ((uint8_t*)(p))[6] = (d)>>8;            \
+        ((uint8_t*)(p))[5] = (d)>>16;           \
+        ((uint8_t*)(p))[4] = (d)>>24;           \
+        ((uint8_t*)(p))[3] = (d)>>32;           \
+        ((uint8_t*)(p))[2] = (d)>>40;           \
+        ((uint8_t*)(p))[1] = (d)>>48;           \
+        ((uint8_t*)(p))[0] = (d)>>56;           \
+    } while(0)
+#endif
+
+#ifndef AV_RL64
+#   define AV_RL64(x)                                   \
+    (((uint64_t)((const uint8_t*)(x))[7] << 56) |       \
+     ((uint64_t)((const uint8_t*)(x))[6] << 48) |       \
+     ((uint64_t)((const uint8_t*)(x))[5] << 40) |       \
+     ((uint64_t)((const uint8_t*)(x))[4] << 32) |       \
+     ((uint64_t)((const uint8_t*)(x))[3] << 24) |       \
+     ((uint64_t)((const uint8_t*)(x))[2] << 16) |       \
+     ((uint64_t)((const uint8_t*)(x))[1] <<  8) |       \
+      (uint64_t)((const uint8_t*)(x))[0])
+#endif
+#ifndef AV_WL64
+#   define AV_WL64(p, val) do {                 \
+        uint64_t d = (val);                     \
+        ((uint8_t*)(p))[0] = (d);               \
+        ((uint8_t*)(p))[1] = (d)>>8;            \
+        ((uint8_t*)(p))[2] = (d)>>16;           \
+        ((uint8_t*)(p))[3] = (d)>>24;           \
+        ((uint8_t*)(p))[4] = (d)>>32;           \
+        ((uint8_t*)(p))[5] = (d)>>40;           \
+        ((uint8_t*)(p))[6] = (d)>>48;           \
+        ((uint8_t*)(p))[7] = (d)>>56;           \
+    } while(0)
+#endif
+
+#ifndef AV_RB24
+#   define AV_RB24(x)                           \
+    ((((const uint8_t*)(x))[0] << 16) |         \
+     (((const uint8_t*)(x))[1] <<  8) |         \
+      ((const uint8_t*)(x))[2])
+#endif
+#ifndef AV_WB24
+#   define AV_WB24(p, d) do {                   \
+        ((uint8_t*)(p))[2] = (d);               \
+        ((uint8_t*)(p))[1] = (d)>>8;            \
+        ((uint8_t*)(p))[0] = (d)>>16;           \
+    } while(0)
+#endif
+
+#ifndef AV_RL24
+#   define AV_RL24(x)                           \
+    ((((const uint8_t*)(x))[2] << 16) |         \
+     (((const uint8_t*)(x))[1] <<  8) |         \
+      ((const uint8_t*)(x))[0])
+#endif
+#ifndef AV_WL24
+#   define AV_WL24(p, d) do {                   \
+        ((uint8_t*)(p))[0] = (d);               \
+        ((uint8_t*)(p))[1] = (d)>>8;            \
+        ((uint8_t*)(p))[2] = (d)>>16;           \
+    } while(0)
+#endif
+
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+#   define AV_RN(s, p)    AV_RB##s(p)
+#   define AV_WN(s, p, v) AV_WB##s(p, v)
 #else
-#define COPY2(d, s) (d)[0] = (s)[0]; (d)[1] = (s)[1];
-#define COPY4(d, s) (d)[0] = (s)[0]; (d)[1] = (s)[1]; (d)[2] = (s)[2]; (d)[3] 
= (s)[3];
+#   define AV_RN(s, p)    AV_RL##s(p)
+#   define AV_WN(s, p, v) AV_WL##s(p, v)
+#endif
+
+#ifndef AV_RN16
+#   define AV_RN16(p) AV_RN(16, p)
+#endif
+
+#ifndef AV_RN32
+#   define AV_RN32(p) AV_RN(32, p)
+#endif
+
+#ifndef AV_RN64
+#   define AV_RN64(p) AV_RN(64, p)
+#endif
+
+#ifndef AV_WN16
+#   define AV_WN16(p, v) AV_WN(16, p, v)
+#endif
+
+#ifndef AV_WN32
+#   define AV_WN32(p, v) AV_WN(32, p, v)
+#endif
+
+#ifndef AV_WN64
+#   define AV_WN64(p, v) AV_WN(64, p, v)
+#endif
+
+#define AV_COPYU(n, d, s) AV_WN##n(d, AV_RN##n(s));
+
+#ifndef AV_COPY16U
+#   define AV_COPY16U(d, s) AV_COPYU(16, d, s)
+#endif
+
+#ifndef AV_COPY32U
+#   define AV_COPY32U(d, s) AV_COPYU(32, d, s)
+#endif
+
+#ifndef AV_COPY64U
+#   define AV_COPY64U(d, s) AV_COPYU(64, d, s)
 #endif
 
 /*
- * \brief copy bytes from input to output buffer with checking
- * \param cnt number of bytes to copy, must be >= 0
+ * @brief Copies bytes from input to output buffer with checking.
+ * @param cnt number of bytes to copy, must be >= 0
  */
 static inline void
 copy (LZOContext * c, int cnt)
 {
-  register const guint8 *src = c->in;
-  register guint8 *dst = c->out;
+  register const uint8_t *src = c->in;
+  register uint8_t *dst = c->out;
+  g_assert (cnt >= 0);
   if (cnt > c->in_end - src) {
     cnt = MAX (c->in_end - src, 0);
     c->error |= LZO_INPUT_DEPLETED;
@@ -106,7 +288,7 @@
     c->error |= LZO_OUTPUT_FULL;
   }
 #if defined(INBUF_PADDED) && defined(OUTBUF_PADDED)
-  COPY4 (dst, src);
+  COPY32U (dst, src);
   src += 4;
   dst += 4;
   cnt -= 4;
@@ -117,48 +299,112 @@
   c->out = dst + cnt;
 }
 
-/*
- * \brief copy previously decoded bytes to current position
- * \param back how many bytes back we start
- * \param cnt number of bytes to copy, must be >= 0
- *
- * cnt > back is valid, this will copy the bytes we just copied,
- * thus creating a repeating pattern with a period length of back.
- */
-static inline void
-copy_backptr (LZOContext * c, int back, int cnt)
+static void
+fill16 (uint8_t * dst, int len)
 {
-  register const guint8 *src = &c->out[-back];
-  register guint8 *dst = c->out;
-  if (src < c->out_start || src > dst) {
-    c->error |= LZO_INVALID_BACKPTR;
-    return;
+  uint32_t v = AV_RN16 (dst - 2);
+
+  v |= v << 16;
+
+  while (len >= 4) {
+    AV_WN32 (dst, v);
+    dst += 4;
+    len -= 4;
   }
-  if (cnt > c->out_end - dst) {
-    cnt = MAX (c->out_end - dst, 0);
-    c->error |= LZO_OUTPUT_FULL;
+
+  while (len--) {
+    *dst = dst[-2];
+    dst++;
   }
+}
+
+static void
+fill24 (uint8_t * dst, int len)
+{
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+  uint32_t v = AV_RB24 (dst - 3);
+  uint32_t a = v << 8 | v >> 16;
+  uint32_t b = v << 16 | v >> 8;
+  uint32_t c = v << 24 | v;
+#else
+  uint32_t v = AV_RL24 (dst - 3);
+  uint32_t a = v | v << 24;
+  uint32_t b = v >> 8 | v << 16;
+  uint32_t c = v >> 16 | v << 8;
+#endif
+
+  while (len >= 12) {
+    AV_WN32 (dst, a);
+    AV_WN32 (dst + 4, b);
+    AV_WN32 (dst + 8, c);
+    dst += 12;
+    len -= 12;
+  }
+
+  if (len >= 4) {
+    AV_WN32 (dst, a);
+    dst += 4;
+    len -= 4;
+  }
+
+  if (len >= 4) {
+    AV_WN32 (dst, b);
+    dst += 4;
+    len -= 4;
+  }
+
+  while (len--) {
+    *dst = dst[-3];
+    dst++;
+  }
+}
+
+static void
+fill32 (uint8_t * dst, int len)
+{
+  uint32_t v = AV_RN32 (dst - 4);
+
+#if GLIB_SIZEOF_VOID_P >= 8
+  uint64_t v2 = v + ((uint64_t) v << 32);
+  while (len >= 32) {
+    AV_WN64 (dst, v2);
+    AV_WN64 (dst + 8, v2);
+    AV_WN64 (dst + 16, v2);
+    AV_WN64 (dst + 24, v2);
+    dst += 32;
+    len -= 32;
+  }
+#endif
+
+  while (len >= 4) {
+    AV_WN32 (dst, v);
+    dst += 4;
+    len -= 4;
+  }
+
+  while (len--) {
+    *dst = dst[-4];
+    dst++;
+  }
+}
+
+static void
+av_memcpy_backptr (uint8_t * dst, int back, int cnt)
+{
+  const uint8_t *src = &dst[-back];
+  if (!back)
+    return;
+
   if (back == 1) {
     memset (dst, *src, cnt);
-    dst += cnt;
+  } else if (back == 2) {
+    fill16 (dst, cnt);
+  } else if (back == 3) {
+    fill24 (dst, cnt);
+  } else if (back == 4) {
+    fill32 (dst, cnt);
   } else {
-#ifdef OUTBUF_PADDED
-    COPY2 (dst, src);
-    COPY2 (dst + 2, src + 2);
-    src += 4;
-    dst += 4;
-    cnt -= 4;
-    if (cnt > 0) {
-      COPY2 (dst, src);
-      COPY2 (dst + 2, src + 2);
-      COPY2 (dst + 4, src + 4);
-      COPY2 (dst + 6, src + 6);
-      src += 8;
-      dst += 8;
-      cnt -= 8;
-    }
-#endif
-    if (cnt > 0) {
+    if (cnt >= 16) {
       int blocklen = back;
       while (cnt > blocklen) {
         memcpy (dst, src, blocklen);
@@ -167,33 +413,75 @@
         blocklen <<= 1;
       }
       memcpy (dst, src, cnt);
+      return;
     }
-    dst += cnt;
+    if (cnt >= 8) {
+      AV_COPY32U (dst, src);
+      AV_COPY32U (dst + 4, src + 4);
+      src += 8;
+      dst += 8;
+      cnt -= 8;
+    }
+    if (cnt >= 4) {
+      AV_COPY32U (dst, src);
+      src += 4;
+      dst += 4;
+      cnt -= 4;
+    }
+    if (cnt >= 2) {
+      AV_COPY16U (dst, src);
+      src += 2;
+      dst += 2;
+      cnt -= 2;
+    }
+    if (cnt)
+      *dst = *src;
   }
-  c->out = dst;
 }
 
 /*
- * \brief decode LZO 1x compressed data
- * \param out output buffer
- * \param outlen size of output buffer, number of bytes left are returned here
- * \param in input buffer
- * \param inlen size of input buffer, number of bytes left are returned here
- * \return 0 on success, otherwise error flags, see lzo.h
+ * @brief Copies previously decoded bytes to current position.
+ * @param back how many bytes back we start, must be > 0
+ * @param cnt number of bytes to copy, must be > 0
  *
- * make sure all buffers are appropriately padded, in must provide
- * LZO_INPUT_PADDING, out must provide LZO_OUTPUT_PADDING additional bytes
+ * cnt > back is valid, this will copy the bytes we just copied,
+ * thus creating a repeating pattern with a period length of back.
  */
+static inline void
+copy_backptr (LZOContext * c, int back, int cnt)
+{
+  register uint8_t *dst = c->out;
+  g_assert (cnt > 0);
+  if (dst - c->out_start < back) {
+    c->error |= LZO_INVALID_BACKPTR;
+    return;
+  }
+  if (cnt > c->out_end - dst) {
+    cnt = MAX (c->out_end - dst, 0);
+    c->error |= LZO_OUTPUT_FULL;
+  }
+  av_memcpy_backptr (dst, back, cnt);
+  c->out = dst + cnt;
+}
+
 int
 lzo1x_decode (void *out, int *outlen, const void *in, int *inlen)
 {
   int state = 0;
   int x;
   LZOContext c;
+  if (*outlen <= 0 || *inlen <= 0) {
+    int res = 0;
+    if (*outlen <= 0)
+      res |= LZO_OUTPUT_FULL;
+    if (*inlen <= 0)
+      res |= LZO_INPUT_DEPLETED;
+    return res;
+  }
   c.in = in;
-  c.in_end = (const guint8 *) in + *inlen;
+  c.in_end = (const uint8_t *) in + *inlen;
   c.out = c.out_start = out;
-  c.out_end = (guint8 *) out + *outlen;
+  c.out_end = (uint8_t *) out + *outlen;
   c.error = 0;
   x = GETB (c);
   if (x > 17) {
@@ -248,45 +536,3 @@
   *outlen = c.out_end - c.out;
   return c.error;
 }
-
-#ifdef TEST
-#include <stdio.h>
-#include <lzo/lzo1x.h>
-#include "log.h"
-#define MAXSZ (10*1024*1024)
-int
-main (int argc, char *argv[])
-{
-  FILE *in = fopen (argv[1], "rb");
-  guint8 *orig = av_malloc (MAXSZ + 16);
-  guint8 *comp = av_malloc (2 * MAXSZ + 16);
-  guint8 *decomp = av_malloc (MAXSZ + 16);
-  gsize s = fread (orig, 1, MAXSZ, in);
-  lzo_uint clen = 0;
-  long tmp[LZO1X_MEM_COMPRESS];
-  int inlen, outlen;
-  int i;
-  av_log_level = AV_LOG_DEBUG;
-  lzo1x_999_compress (orig, s, comp, &clen, tmp);
-  for (i = 0; i < 300; i++) {
-    START_TIMER inlen = clen;
-    outlen = MAXSZ;
-#ifdef LIBLZO
-    if (lzo1x_decompress_safe (comp, inlen, decomp, &outlen, NULL))
-#elif defined(LIBLZO_UNSAFE)
-    if (lzo1x_decompress (comp, inlen, decomp, &outlen, NULL))
-#else
-    if (lzo1x_decode (decomp, &outlen, comp, &inlen))
-#endif
-      av_log (NULL, AV_LOG_ERROR, "decompression error\n");
-    STOP_TIMER ("lzod")
-  }
-  if (memcmp (orig, decomp, s))
-    av_log (NULL, AV_LOG_ERROR, "decompression incorrect\n");
-  else
-    av_log (NULL, AV_LOG_ERROR, "decompression ok\n");
-
-  fclose (in);
-  return 0;
-}
-#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/gst/matroska/lzo.h 
new/gst-plugins-good-1.28.5/gst/matroska/lzo.h
--- old/gst-plugins-good-1.28.4/gst/matroska/lzo.h      2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/gst/matroska/lzo.h      2026-07-08 
23:42:39.000000000 +0200
@@ -19,17 +19,48 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#ifndef FFMPEG_LZO_H
-#define FFMPEG_LZO_H
+#ifndef AVUTIL_LZO_H
+#define AVUTIL_LZO_H
 
-#define LZO_INPUT_DEPLETED 1
-#define LZO_OUTPUT_FULL 2
+/*
+ * @defgroup lavu_lzo LZO
+ * @ingroup lavu_crypto
+ *
+ * @{
+ */
+
+#include <stdint.h>
+
+/* @name Error flags returned by av_lzo1x_decode
+ * @{ */
+/// end of the input buffer reached before decoding finished
+#define LZO_INPUT_DEPLETED  1
+/// decoded data did not fit into output buffer
+#define LZO_OUTPUT_FULL     2
+/// a reference to previously decoded data was wrong
 #define LZO_INVALID_BACKPTR 4
-#define LZO_ERROR 8
+/// a non-specific error in the compressed bitstream
+#define LZO_ERROR           8
+/* @} */
 
-#define LZO_INPUT_PADDING 8
+#define LZO_INPUT_PADDING   8
 #define LZO_OUTPUT_PADDING 12
 
+/*
+ * @brief Decodes LZO 1x compressed data.
+ * @param out output buffer
+ * @param outlen size of output buffer, number of bytes left are returned here
+ * @param in input buffer
+ * @param inlen size of input buffer, number of bytes left are returned here
+ * @return 0 on success, otherwise a combination of the error flags above
+ *
+ * Make sure all buffers are appropriately padded, in must provide
+ * LZO_INPUT_PADDING, out must provide LZO_OUTPUT_PADDING additional bytes.
+ */
 int lzo1x_decode(void *out, int *outlen, const void *in, int *inlen);
 
-#endif /* FFMPEG_LZO_H */
+/*
+ * @}
+ */
+
+#endif /* AVUTIL_LZO_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-plugins-good-1.28.4/gst/matroska/matroska-read-common.c 
new/gst-plugins-good-1.28.5/gst/matroska/matroska-read-common.c
--- old/gst-plugins-good-1.28.4/gst/matroska/matroska-read-common.c     
2026-06-12 14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/gst/matroska/matroska-read-common.c     
2026-07-08 23:42:39.000000000 +0200
@@ -1609,14 +1609,14 @@
       }
       ret = GST_FLOW_OK;
     } else {
-      GST_ELEMENT_ERROR (common, STREAM, DEMUX, (NULL),
-          ("Demuxer version (2) is too old to read %s version %d",
+      GST_ELEMENT_ERROR (GST_OBJECT_PARENT (common->sinkpad), STREAM, DEMUX,
+          (NULL), ("Demuxer version (2) is too old to read %s version %d",
               GST_STR_NULL (doctype), version));
       ret = GST_FLOW_ERROR;
     }
   } else {
-    GST_ELEMENT_ERROR (common, STREAM, WRONG_TYPE, (NULL),
-        ("Input is not a matroska stream (doctype=%s)", doctype));
+    GST_ELEMENT_ERROR (GST_OBJECT_PARENT (common->sinkpad), STREAM, WRONG_TYPE,
+        (NULL), ("Input is not a matroska stream (doctype=%s)", doctype));
     ret = GST_FLOW_ERROR;
   }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/gst/rtp/gstrtpceltdepay.c 
new/gst-plugins-good-1.28.5/gst/rtp/gstrtpceltdepay.c
--- old/gst-plugins-good-1.28.4/gst/rtp/gstrtpceltdepay.c       2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/gst/rtp/gstrtpceltdepay.c       2026-07-08 
23:42:39.000000000 +0200
@@ -71,6 +71,8 @@
     GstRTPBuffer * rtp);
 static gboolean gst_rtp_celt_depay_setcaps (GstRTPBaseDepayload * depayload,
     GstCaps * caps);
+static GstStateChangeReturn gst_rtp_celt_depay_change_state (GstElement *
+    element, GstStateChange transition);
 
 #define gst_rtp_celt_depay_parent_class parent_class
 G_DEFINE_TYPE (GstRtpCELTDepay, gst_rtp_celt_depay,
@@ -99,6 +101,8 @@
       "Extracts CELT audio from RTP packets",
       "Wim Taymans <[email protected]>");
 
+  gstelement_class->change_state = gst_rtp_celt_depay_change_state;
+
   gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_celt_depay_process;
   gstrtpbasedepayload_class->set_caps = gst_rtp_celt_depay_setcaps;
 }
@@ -108,16 +112,22 @@
 {
 }
 
+#if 0
 /* len 4 bytes LE,
  * vendor string (len bytes),
  * user_len 4 (0) bytes LE
  */
 static const gchar gst_rtp_celt_comment[] =
     "\045\0\0\0Depayloaded with GStreamer celtdepay\0\0\0\0";
+#endif
 
 static gboolean
 gst_rtp_celt_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
 {
+  // See comment below
+  return FALSE;
+
+#if 0
   GstStructure *structure;
   GstRtpCELTDepay *rtpceltdepay;
   gint clock_rate, nb_channels = 0, frame_size = 0;
@@ -194,11 +204,29 @@
     GST_ERROR_OBJECT (depayload, "no clock-rate specified");
     return FALSE;
   }
+#endif
 }
 
 static GstBuffer *
 gst_rtp_celt_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * 
rtp)
 {
+  /* There is no plausible reason this code should ever be executed in 2026
+   * seeing that this was an experimental audio codec that never really gained
+   * adoption and was superseded by (and included in) Opus more than a decade
+   * ago. There are no decoders or encoders in GStreamer for this, and the
+   * RTP mapping RFC never made it out of draft state either.
+   *
+   * We simply return here as defensive measure.
+   *
+   * We post an error message in the state change function, so this processing
+   * function should never be reached, we just ifdef the code out for clarity.
+   *
+   * If anyone actually does have a legitimate need for this and can provide
+   * sample streams, we will happily implement a depayloader in Rust.
+   */
+  return NULL;
+
+#if 0
   GstBuffer *outbuf = NULL;
   guint8 *payload;
   guint offset, pos, payload_len, total_size, size;
@@ -268,4 +296,32 @@
   }
 
   return NULL;
+#endif
+}
+
+static GstStateChangeReturn
+gst_rtp_celt_depay_change_state (GstElement * element,
+    GstStateChange transition)
+{
+  GstStateChangeReturn ret;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      GST_ELEMENT_ERROR (element, STREAM, DECODE,
+          ("This element should not be used."),
+          ("Please report an issue if you encounter this message."));
+      return GST_STATE_CHANGE_FAILURE;
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      break;
+    default:
+      break;
+  }
+  return ret;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/gst/rtp/gstrtpjpegdepay.c 
new/gst-plugins-good-1.28.5/gst/rtp/gstrtpjpegdepay.c
--- old/gst-plugins-good-1.28.4/gst/rtp/gstrtpjpegdepay.c       2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/gst/rtp/gstrtpjpegdepay.c       2026-07-08 
23:42:39.000000000 +0200
@@ -505,7 +505,8 @@
   gint Q;
   guint type, width, height;
   guint16 dri, precision, length;
-  guint8 *qtable;
+  guint8 *qtable = NULL;
+  gsize qtable_len = 0;
 
   rtpjpegdepay = GST_RTP_JPEG_DEPAY (depayload);
 
@@ -611,10 +612,13 @@
     if (length > payload_len)
       goto empty_packet;
 
-    if (length > 0)
+    if (length > 0) {
       qtable = payload;
-    else
+      qtable_len = length;
+    } else {
       qtable = rtpjpegdepay->qtables[Q];
+      qtable_len = 128;
+    }
 
     payload += length;
     header_len += length;
@@ -652,6 +656,7 @@
       if (Q < 128) {
         /* no quant table, see if we have one cached */
         qtable = rtpjpegdepay->qtables[Q];
+        qtable_len = 128;
         if (!qtable) {
           GST_DEBUG_OBJECT (rtpjpegdepay, "making Q %d table", Q);
           /* make and cache the table */
@@ -674,6 +679,10 @@
     if (!qtable)
       goto no_qtable;
 
+    if (((precision & 1) ? 128 : 64) + ((precision & 2) ? 128 : 64) !=
+        qtable_len)
+      goto wrong_qtable;
+
     /* max header length, should be big enough */
     outbuf = gst_buffer_new_and_alloc (1000);
     gst_buffer_map (outbuf, &map, GST_MAP_WRITE);
@@ -756,6 +765,12 @@
     gst_rtp_base_depayload_dropped (depayload);
     return NULL;
   }
+wrong_qtable:
+  {
+    GST_WARNING_OBJECT (rtpjpegdepay, "wrong qtable for precision");
+    gst_rtp_base_depayload_dropped (depayload);
+    return NULL;
+  }
 invalid_packet:
   {
     GST_WARNING_OBJECT (rtpjpegdepay, "invalid packet");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/gst/rtp/gstrtpsbcdepay.c 
new/gst-plugins-good-1.28.5/gst/rtp/gstrtpsbcdepay.c
--- old/gst-plugins-good-1.28.4/gst/rtp/gstrtpsbcdepay.c        2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/gst/rtp/gstrtpsbcdepay.c        2026-07-08 
23:42:39.000000000 +0200
@@ -303,6 +303,8 @@
 
   payload = gst_rtp_buffer_get_payload (rtp);
   payload_len = gst_rtp_buffer_get_payload_len (rtp);
+  if (payload_len < 1)
+    goto bad_packet;
 
   fragment = payload[0] & 0x80;
   start = payload[0] & 0x40;
@@ -331,19 +333,26 @@
     }
 
     gst_adapter_push (depay->adapter, data);
+    data = NULL;
 
     if (last) {
-      gint framelen, samples;
-      guint8 header[4];
-
-      data = gst_adapter_take_buffer (depay->adapter,
-          gst_adapter_available (depay->adapter));
-      gst_rtp_drop_non_audio_meta (depay, data);
-
-      if (gst_buffer_extract (data, 0, &header, 4) != 4 ||
-          gst_rtp_sbc_depay_get_params (depay, header,
-              payload_len, &framelen, &samples) < 0) {
-        gst_buffer_unref (data);
+      if (gst_adapter_available (depay->adapter)) {
+        gint framelen;
+        guint8 header[4];
+
+        data = gst_adapter_take_buffer (depay->adapter,
+            gst_adapter_available (depay->adapter));
+        gst_rtp_drop_non_audio_meta (depay, data);
+
+        if (gst_buffer_extract (data, 0, &header, 4) != 4 ||
+            gst_rtp_sbc_depay_get_params (depay, header,
+                payload_len, &framelen, &samples) < 0) {
+          gst_buffer_unref (data);
+          data = NULL;
+          goto bad_packet;
+        }
+      } else {
+        data = NULL;
         goto bad_packet;
       }
     } else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/gst/shapewipe/gstshapewipe.c 
new/gst-plugins-good-1.28.5/gst/shapewipe/gstshapewipe.c
--- old/gst-plugins-good-1.28.4/gst/shapewipe/gstshapewipe.c    2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/gst/shapewipe/gstshapewipe.c    2026-07-08 
23:42:39.000000000 +0200
@@ -926,6 +926,7 @@
 shutdown:
   {
     GST_DEBUG_OBJECT (self, "Shutting down");
+    g_mutex_unlock (&self->mask_mutex);
     gst_buffer_unref (buffer);
     return GST_FLOW_FLUSHING;
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/gst/wavparse/gstwavparse.c 
new/gst-plugins-good-1.28.5/gst/wavparse/gstwavparse.c
--- old/gst-plugins-good-1.28.4/gst/wavparse/gstwavparse.c      2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/gst/wavparse/gstwavparse.c      2026-07-08 
23:42:39.000000000 +0200
@@ -1614,6 +1614,9 @@
             if (wav->streaming) {
               const guint8 *data = NULL;
 
+              if (!gst_wavparse_peek_chunk (wav, &tag, &size)) {
+                goto exit;
+              }
               gst_adapter_flush (wav->adapter, 12);
               wav->offset += 12;
               data = gst_adapter_map (wav->adapter, data_size);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/gst-plugins-good.doap 
new/gst-plugins-good-1.28.5/gst-plugins-good.doap
--- old/gst-plugins-good-1.28.4/gst-plugins-good.doap   2026-06-12 
14:19:43.000000000 +0200
+++ new/gst-plugins-good-1.28.5/gst-plugins-good.doap   2026-07-08 
23:42:39.000000000 +0200
@@ -34,6 +34,16 @@
 
  <release>
   <Version>
+   <revision>1.28.5</revision>
+   <branch>1.28</branch>
+   <name></name>
+   <created>2026-07-08</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-1.28.5.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.28.4</revision>
    <branch>1.28</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-plugins-good-1.28.4/meson.build 
new/gst-plugins-good-1.28.5/meson.build
--- old/gst-plugins-good-1.28.4/meson.build     2026-06-12 14:19:43.000000000 
+0200
+++ new/gst-plugins-good-1.28.5/meson.build     2026-07-08 23:42:39.000000000 
+0200
@@ -1,5 +1,5 @@
 project('gst-plugins-good', 'c',
-  version : '1.28.4',
+  version : '1.28.5',
   meson_version : '>= 1.4',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized',

++++++ gst-plugins-good.obsinfo ++++++
--- /var/tmp/diff_new_pack.T7vOoB/_old  2026-07-12 16:21:33.564822713 +0200
+++ /var/tmp/diff_new_pack.T7vOoB/_new  2026-07-12 16:21:33.588823522 +0200
@@ -1,5 +1,5 @@
 name: gst-plugins-good
-version: 1.28.4
-mtime: 1781266783
-commit: b46f881eaa8126eddfd21b5ae5512f8d4ff36255
+version: 1.28.5
+mtime: 1783546959
+commit: 727ceb91886862d200f423baf36cde2bb7ce5b4d
 

Reply via email to