Projects
Essentials
gstreamer-plugins-ugly-codecs
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 35
View file
gstreamer-plugins-ugly-codecs.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Tue Jul 14 09:58:14 UTC 2026 - Bjørn Lie <zaitor@opensuse.org> + +- Update to version 1.28.5 + +------------------------------------------------------------------- Thu Apr 16 08:36:06 UTC 2026 - Bjørn Lie <zaitor@opensuse.org> - Update to version 1.28.2
View file
gstreamer-plugins-ugly-codecs.spec
Changed
@@ -7,7 +7,7 @@ %define _version 1.28.0 Name: gstreamer-plugins-ugly-codecs -Version: 1.28.2 +Version: 1.28.5 Release: 0 Summary: Codecs/plugins for gstreamer-plugins-ugly License: LGPL-2.1-or-later
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/ChangeLog -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/ChangeLog
Changed
@@ -1,3 +1,116 @@ +=== release 1.28.5 === + +2026-07-08 23:42:39 +0200 Tim-Philipp Müller <tim@centricular.com> + + * gst-plugins-ugly.doap: + * meson.build: + Release 1.28.5 + +2026-06-23 11:14:59 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/asfdemux/asfpacket.c: + asfdemux: Ensure that enough data is available for reading all replicated extensions + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5159 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12072> + +2026-06-12 13:27:54 +0100 Tim-Philipp Müller <tim@centricular.com> + + * meson.build: + Back to development after 1.28.4 + +=== release 1.28.4 === + +2026-06-12 13:19:43 +0100 Tim-Philipp Müller <tim@centricular.com> + + * gst-plugins-ugly.doap: + * meson.build: + Release 1.28.4 + +2026-06-11 15:38:36 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/realmedia/rmdemux.c: + rmdemux: Keep of copy of the stream's extra_data + The pointer will become invalid after unmapping the adapter. While it is only + accessed before unmapping, let's avoid future mistakes. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> + +2026-06-11 16:23:34 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/realmedia/rmdemux.c: + rmdemux: Check for enough data when descrambling audio packets + And discard broken packets instead of erroring out. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> + +2026-06-11 15:31:55 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/realmedia/rmdemux.c: + * gst/realmedia/rmdemux.h: + rmdemux: Check that enough data is available before parsing header data + And skip over invalid header packets. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5039 + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5038 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> + +2026-06-11 14:25:10 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/realmedia/rmdemux.c: + rmdemux: Use gsize for length parameters + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> + +2026-06-11 14:17:05 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/realmedia/rmdemux.c: + rmdemux: Catch short reads instead of reading from less data than expected + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> + +2026-06-11 13:51:03 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/realmedia/rademux.c: + rademux: Make sure enough data is actually available to parse the packet header + Unlikely that we don't have 64 bytes more in the adapter but better safe than sorry. + Also add FIXME about broken but harmless code. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> + +2026-06-11 12:40:05 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/realmedia/rmdemux.c: + * gst/realmedia/rmutils.c: + * gst/realmedia/rmutils.h: + realmedia: Use gsize for indexes and avoid integer overflows + One length variable stays a signed integer together with range checks because + it's used in decreasing loops that can end up with negative numbers in valid + situations. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826> + +2026-05-11 18:33:25 +0100 Tim-Philipp Müller <tim@centricular.com> + + * meson.build: + Back to development after 1.28.3 + +=== release 1.28.3 === + +2026-05-11 18:28:12 +0100 Tim-Philipp Müller <tim@centricular.com> + + * gst-plugins-ugly.doap: + * meson.build: + Release 1.28.3 + +2026-04-07 13:09:24 +0100 Nirbheek Chauhan <nirbheek@centricular.com> + + * meson.build: + meson: Require C std gnu11 or c11 + When using gcc or clang, gnu11 will be used, and when using MSVC c11 + will be used which will pass /std:c11. This provides us with the + `restrict` keyword on all supported platforms. + We can do this now because we require Visual Studio 2019. + This feature was added in Meson 1.3 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11563> + +2026-04-07 20:07:19 +0100 Tim-Philipp Müller <tim@centricular.com> + + * meson.build: + Back to development after 1.28.2 + === release 1.28.2 === 2026-04-07 20:02:23 +0100 Tim-Philipp Müller <tim@centricular.com>
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/RELEASE -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/RELEASE
Changed
@@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-ugly 1.28.2 +This is GStreamer gst-plugins-ugly 1.28.5 The GStreamer team is thrilled to announce a new major feature release of your favourite cross-platform multimedia framework!
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/gst-plugins-ugly.doap -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/gst-plugins-ugly.doap
Changed
@@ -35,6 +35,36 @@ <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-ugly/gst-plugins-ugly-1.28.5.tar.xz" /> + </Version> + </release> + + <release> + <Version> + <revision>1.28.4</revision> + <branch>1.28</branch> + <name></name> + <created>2026-06-12</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.28.4.tar.xz" /> + </Version> + </release> + + <release> + <Version> + <revision>1.28.3</revision> + <branch>1.28</branch> + <name></name> + <created>2026-05-11</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-1.28.3.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.28.2</revision> <branch>1.28</branch> <name></name>
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/gst/asfdemux/asfpacket.c -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/gst/asfdemux/asfpacket.c
Changed
@@ -289,6 +289,10 @@ for (ext = stream->ext_props.payload_extensions; ext->len > 0; ++ext) { ext_len = ext->len; if (ext_len == 0xFFFF) { /* extension length is determined by first two bytes in replicated data */ + if (off + 2 > payload->rep_data_len) { + GST_WARNING ("not enough replicated data for reading extension length"); + return; + } ext_len = GST_READ_UINT16_LE (payload->rep_data + off); off += 2; } @@ -317,7 +321,7 @@ GST_DEBUG ("SYSTEM_CONTENT: interlaced:%d, rff:%d, tff:%d", payload->interlaced, payload->rff, payload->tff); } else { - GST_WARNING ("unexpected SYSTEM_CONTE extensions len %u", ext_len); + GST_WARNING ("unexpected SYSTEM_CONTENT extensions len %u", ext_len); } break; case ASF_PAYLOAD_EXTENSION_SYSTEM_PIXEL_ASPECT_RATIO: @@ -331,14 +335,17 @@ } break; case ASF_PAYLOAD_EXTENSION_TIMING: - { - /* dvr-ms timing - this will override packet timestamp */ - guint64 time = GST_READ_UINT64_LE (payload->rep_data + off + 8); - if (time != 0xFFFFFFFFFFFFFFFF) - payload->ts = time * 100; - else - payload->ts = GST_CLOCK_TIME_NONE; - } + /* FIXME: Is this always 48 bytes? */ + if (G_LIKELY (ext_len >= 16)) { + /* dvr-ms timing - this will override packet timestamp */ + guint64 time = GST_READ_UINT64_LE (payload->rep_data + off + 8); + if (time != 0xFFFFFFFFFFFFFFFF) + payload->ts = time * 100; + else + payload->ts = GST_CLOCK_TIME_NONE; + } else { + GST_WARNING ("unexpected TIMING extensions len %u", ext_len); + } break; default: GST_LOG ("UNKNOWN PAYLOAD EXTENSION!"); @@ -396,8 +403,15 @@ return FALSE; } - memcpy (payload.rep_data, *p_data, - MIN (sizeof (payload.rep_data), payload.rep_data_len)); + /* FIXME: The specification says that this is a uint16 but all our code here + * assumes it's at most 255 bytes */ + if (G_UNLIKELY (payload.rep_data_len > G_MAXUINT8)) { + GST_WARNING_OBJECT (demux, "Too long rep data! rep_data_len=%u", + payload.rep_data_len); + return FALSE; + } + + memcpy (payload.rep_data, *p_data, payload.rep_data_len); *p_data += payload.rep_data_len; *p_size -= payload.rep_data_len;
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/gst/realmedia/rademux.c -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/gst/realmedia/rademux.c
Changed
@@ -342,6 +342,30 @@ return GST_FLOW_OK; } + /* Check if enough data is available to parse the header */ + switch (demux->ra_version) { + case 3: + /* Nothing is parsed */ + break; + case 4: + if (avail < demux->data_offset - 6 + 63) { + GST_DEBUG_OBJECT (demux, "Need %u bytes, but only %u available now", + demux->data_offset - 6 + 63, avail); + return GST_FLOW_OK; + } + break; + case 5: +#if 0 + /* Unsupported for now */ + if (avail < demux->data_offset - 6 + 64) { + GST_DEBUG_OBJECT (demux, "Need %u bytes, but only %u available now", + demux->data_offset - 6 + 64, avail); + return GST_FLOW_OK; + } +#endif + break; + } + data = gst_adapter_map (demux->adapter, demux->data_offset - 6); g_assert (data); @@ -366,6 +390,9 @@ demux->sample_width = GST_READ_UINT16_BE (data + 46); demux->channels = GST_READ_UINT16_BE (data + 48); demux->fourcc = GST_READ_UINT32_LE (data + 56); + // FIXME: This is broken. We need to make sure that the whole packet + // is available to be sure we can actually read all tags. This now + // randomly cuts off the tags depending on input buffer chunking. demux->pending_tags = gst_rm_utils_read_tags (data + 63, demux->data_offset - 63, gst_rm_utils_read_string8); if (demux->pending_tags)
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/gst/realmedia/rmdemux.c -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/gst/realmedia/rmdemux.c
Changed
@@ -74,8 +74,9 @@ guint16 leaf_size; /* subpacket_size */ guint32 packet_size; /* coded_frame_size */ guint16 version; - guint32 extra_data_size; /* codec_data_length */ + gsize extra_data_size; /* codec_data_length */ guint8 *extra_data; /* extras */ + gsize extra_data_offset; /* offset into extra_data */ guint32 bitrate; gboolean needs_descrambling; @@ -150,22 +151,22 @@ static gboolean gst_rmdemux_perform_seek (GstRMDemux * rmdemux, GstEvent * event); -static void gst_rmdemux_parse__rmf (GstRMDemux * rmdemux, const guint8 * data, - int length); -static void gst_rmdemux_parse_prop (GstRMDemux * rmdemux, const guint8 * data, - int length); -static void gst_rmdemux_parse_mdpr (GstRMDemux * rmdemux, - const guint8 * data, int length); -static guint gst_rmdemux_parse_indx (GstRMDemux * rmdemux, const guint8 * data, - int length); -static void gst_rmdemux_parse_data (GstRMDemux * rmdemux, const guint8 * data, - int length); -static void gst_rmdemux_parse_cont (GstRMDemux * rmdemux, const guint8 * data, - int length); +static gboolean gst_rmdemux_parse__rmf (GstRMDemux * rmdemux, + const guint8 * data, gsize length); +static gboolean gst_rmdemux_parse_prop (GstRMDemux * rmdemux, + const guint8 * data, gsize length); +static gboolean gst_rmdemux_parse_mdpr (GstRMDemux * rmdemux, + const guint8 * data, gsize length); +static gboolean gst_rmdemux_parse_indx (GstRMDemux * rmdemux, + const guint8 * data, gsize length, gsize * index_length); +static gboolean gst_rmdemux_parse_data (GstRMDemux * rmdemux, + const guint8 * data, gsize length); +static gboolean gst_rmdemux_parse_cont (GstRMDemux * rmdemux, + const guint8 * data, gsize length); static GstFlowReturn gst_rmdemux_parse_packet (GstRMDemux * rmdemux, GstBuffer * in, guint16 version); -static void gst_rmdemux_parse_indx_data (GstRMDemux * rmdemux, - const guint8 * data, int length); +static gboolean gst_rmdemux_parse_indx_data (GstRMDemux * rmdemux, + const guint8 * data, gsize length); static void gst_rmdemux_stream_clear_cached_subpackets (GstRMDemux * rmdemux, GstRMDemuxStream * stream); static GstRMDemuxStream *gst_rmdemux_get_stream_by_id (GstRMDemux * rmdemux, @@ -373,6 +374,11 @@ rmdemux->offset); return FALSE; } + if (gst_buffer_get_size (buffer) < 4) { + gst_buffer_unref (buffer); + GST_DEBUG_OBJECT (rmdemux, "Short read at offset %d", rmdemux->offset); + return FALSE; + } /* TODO: Can we also be seeking to a 'DATA' chunk header? Check this. * Also, for the case we currently handle, can we check any more? It's pretty * sucky to not be validating a little more heavily than this... */ @@ -727,6 +733,7 @@ if (stream->subpackets) g_ptr_array_free (stream->subpackets, TRUE); g_free (stream->index); + g_free (stream->extra_data); g_free (stream); } @@ -1060,13 +1067,22 @@ switch (rmdemux->state) { case RMDEMUX_STATE_HEADER: { + guint32 size; if (gst_adapter_available (rmdemux->adapter) < HEADER_SIZE) goto unlock; data = gst_adapter_map (rmdemux->adapter, HEADER_SIZE); rmdemux->object_id = RMDEMUX_FOURCC_GET (data + 0); - rmdemux->size = RMDEMUX_GUINT32_GET (data + 4) - HEADER_SIZE; + size = RMDEMUX_GUINT32_GET (data + 4); + if (size < HEADER_SIZE) { + GST_WARNING_OBJECT (rmdemux, "Bogus looking header, too small size"); + gst_adapter_unmap (rmdemux->adapter); + gst_adapter_flush (rmdemux->adapter, 4); + + break; + } + rmdemux->size = size - HEADER_SIZE; rmdemux->object_version = RMDEMUX_GUINT16_GET (data + 8); /* Sanity-check. We assume that the FOURCC is printable ASCII */ @@ -1085,7 +1101,7 @@ GST_LOG_OBJECT (rmdemux, "header found with object_id=%" GST_FOURCC_FORMAT - " size=%08x object_version=%d", + " size=%08" G_GSIZE_FORMAT " object_version=%d", GST_FOURCC_ARGS (rmdemux->object_id), rmdemux->size, rmdemux->object_version); @@ -1136,7 +1152,8 @@ if ((rmdemux->object_version == 0) || (rmdemux->object_version == 1)) { data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - gst_rmdemux_parse__rmf (rmdemux, data, rmdemux->size); + if (!gst_rmdemux_parse__rmf (rmdemux, data, rmdemux->size)) + GST_WARNING_OBJECT (rmdemux, "Failed parsing _rmf"); gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, rmdemux->size); } else { @@ -1151,7 +1168,8 @@ goto unlock; data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - gst_rmdemux_parse_prop (rmdemux, data, rmdemux->size); + if (!gst_rmdemux_parse_prop (rmdemux, data, rmdemux->size)) + GST_WARNING_OBJECT (rmdemux, "Failed parsing prop"); gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, rmdemux->size); @@ -1164,7 +1182,8 @@ goto unlock; data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - gst_rmdemux_parse_mdpr (rmdemux, data, rmdemux->size); + if (!gst_rmdemux_parse_mdpr (rmdemux, data, rmdemux->size)) + GST_WARNING_OBJECT (rmdemux, "Failed parsing mdpr"); gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, rmdemux->size); @@ -1177,7 +1196,8 @@ goto unlock; data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - gst_rmdemux_parse_cont (rmdemux, data, rmdemux->size); + if (!gst_rmdemux_parse_cont (rmdemux, data, rmdemux->size)) + GST_WARNING_OBJECT (rmdemux, "Failed parsing cont"); gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, rmdemux->size); @@ -1186,6 +1206,8 @@ } case RMDEMUX_STATE_HEADER_DATA: { + gsize orig_size; + /* If we haven't already done so then signal there are no more pads */ if (!rmdemux->have_pads) { GST_LOG_OBJECT (rmdemux, "no more pads"); @@ -1194,6 +1216,7 @@ } /* The actual header is only 8 bytes */ + orig_size = rmdemux->size; rmdemux->size = DATA_SIZE; GST_LOG_OBJECT (rmdemux, "data available %" G_GSIZE_FORMAT, gst_adapter_available (rmdemux->adapter)); @@ -1201,7 +1224,14 @@ goto unlock; data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - gst_rmdemux_parse_data (rmdemux, data, rmdemux->size); + if (!gst_rmdemux_parse_data (rmdemux, data, rmdemux->size)) { + GST_WARNING_OBJECT (rmdemux, "Failed parsing header data"); + gst_adapter_unmap (rmdemux->adapter); + /* skip over whole packet size */ + gst_adapter_flush (rmdemux->adapter, orig_size); + rmdemux->state = RMDEMUX_STATE_HEADER; + break; + } gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, rmdemux->size); @@ -1214,7 +1244,15 @@ goto unlock; data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - rmdemux->size = gst_rmdemux_parse_indx (rmdemux, data, rmdemux->size); + if (!gst_rmdemux_parse_indx (rmdemux, data, rmdemux->size, + &rmdemux->size)) { + GST_WARNING_OBJECT (rmdemux, "Failed parsing header indx"); + gst_adapter_unmap (rmdemux->adapter); + /* skip over whole packet size */ + gst_adapter_flush (rmdemux->adapter, rmdemux->size); + rmdemux->state = RMDEMUX_STATE_HEADER; + break; + } /* Only flush the header */ gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, HEADER_SIZE); @@ -1230,7 +1268,8 @@ goto unlock; data = gst_adapter_map (rmdemux->adapter, rmdemux->size); - gst_rmdemux_parse_indx_data (rmdemux, data, rmdemux->size); + if (!gst_rmdemux_parse_indx_data (rmdemux, data, rmdemux->size)) + GST_WARNING_OBJECT (rmdemux, "Failed parsing indx data"); gst_adapter_unmap (rmdemux->adapter); gst_adapter_flush (rmdemux->adapter, rmdemux->size); } @@ -1450,8 +1489,7 @@ (int) 4, "framed", G_TYPE_BOOLEAN, TRUE, NULL); if (stream->extra_data_size > 0) { /* strip off an unknown byte in the extra data */ - stream->extra_data_size--; - stream->extra_data++; + stream->extra_data_offset++; } stream->needs_descrambling = TRUE; stream->subpackets_needed = 1; @@ -1544,15 +1582,21 @@ if (stream->pad && stream_caps) { GstEvent *event; - GST_LOG_OBJECT (rmdemux, "%d bytes of extra data for stream %s", - stream->extra_data_size, GST_PAD_NAME (stream->pad)); + GST_LOG_OBJECT (rmdemux, + "%" G_GSIZE_FORMAT " bytes of extra data for stream %s", + stream->extra_data_size - stream->extra_data_offset, + GST_PAD_NAME (stream->pad)); /* add codec_data if there is any */ - if (stream->extra_data_size > 0) { + if (stream->extra_data_size - stream->extra_data_offset > 0) { GstBuffer *buffer; - buffer = gst_buffer_new_and_alloc (stream->extra_data_size); - gst_buffer_fill (buffer, 0, stream->extra_data, stream->extra_data_size); + buffer = + gst_buffer_new_and_alloc (stream->extra_data_size - + stream->extra_data_offset); + gst_buffer_fill (buffer, 0, + stream->extra_data + stream->extra_data_offset, + stream->extra_data_size - stream->extra_data_offset); gst_caps_set_simple (stream_caps, "codec_data", GST_TYPE_BUFFER, buffer, NULL); @@ -1617,26 +1661,34 @@ gst_caps_unref (stream_caps); } -static int +static gsize re_skip_pascal_string (const guint8 * ptr) { - int length; + gsize length; length = ptr0; return length + 1; } -static void -gst_rmdemux_parse__rmf (GstRMDemux * rmdemux, const guint8 * data, int length) +static gboolean +gst_rmdemux_parse__rmf (GstRMDemux * rmdemux, const guint8 * data, gsize length) { + if (length < 8) + return FALSE; + GST_LOG_OBJECT (rmdemux, "file_version: %d", RMDEMUX_GUINT32_GET (data)); GST_LOG_OBJECT (rmdemux, "num_headers: %d", RMDEMUX_GUINT32_GET (data + 4)); + + return TRUE; } -static void -gst_rmdemux_parse_prop (GstRMDemux * rmdemux, const guint8 * data, int length) +static gboolean +gst_rmdemux_parse_prop (GstRMDemux * rmdemux, const guint8 * data, gsize length) { + if (length < 40) + return FALSE; + GST_LOG_OBJECT (rmdemux, "max bitrate: %d", RMDEMUX_GUINT32_GET (data)); GST_LOG_OBJECT (rmdemux, "avg bitrate: %d", RMDEMUX_GUINT32_GET (data + 4)); GST_LOG_OBJECT (rmdemux, "max packet size: %d", @@ -1658,20 +1710,24 @@ rmdemux->data_offset); GST_LOG_OBJECT (rmdemux, "n streams: %d", RMDEMUX_GUINT16_GET (data + 36)); GST_LOG_OBJECT (rmdemux, "flags: 0x%04x", RMDEMUX_GUINT16_GET (data + 38)); + + return TRUE; } -static void -gst_rmdemux_parse_mdpr (GstRMDemux * rmdemux, const guint8 * data, int length) +static gboolean +gst_rmdemux_parse_mdpr (GstRMDemux * rmdemux, const guint8 * data, gsize length) { GstRMDemuxStream *stream; char *stream1_type_string; char *stream2_type_string; - guint str_len = 0; + gsize str_len = 0; int stream_type; - int offset; guint32 max_bitrate; guint32 avg_bitrate; + if (length < 10) + return FALSE; + stream = g_new0 (GstRMDemuxStream, 1); stream->id = RMDEMUX_GUINT16_GET (data); @@ -1702,13 +1758,18 @@ GST_TAG_BITRATE, avg_bitrate, NULL); } - offset = 30; - stream1_type_string = gst_rm_utils_read_string8 (data + offset, - length - offset, &str_len); - offset += str_len; - stream2_type_string = gst_rm_utils_read_string8 (data + offset, - length - offset, &str_len); - offset += str_len; + if (length < 30) { + gst_rmdemux_free_stream (rmdemux, stream); + return FALSE; + } + data += 30; + length -= 30; + stream1_type_string = gst_rm_utils_read_string8 (data, length, &str_len); + data += str_len; + length -= str_len; + stream2_type_string = gst_rm_utils_read_string8 (data, length, &str_len); + data += str_len; + length -= str_len; /* stream1_type_string for audio and video stream is a "put_whatever_you_want" field : * observed values : @@ -1718,6 +1779,13 @@ * so, we should not rely on it to know which stream type it is */ + if (!stream1_type_string || !stream2_type_string) { + g_free (stream1_type_string); + g_free (stream2_type_string); + gst_rmdemux_free_stream (rmdemux, stream); + return FALSE; + } + GST_LOG_OBJECT (rmdemux, "stream type: %s", stream1_type_string); GST_LOG_OBJECT (rmdemux, "MIME type=%s", stream2_type_string); @@ -1748,27 +1816,36 @@ g_free (stream1_type_string); g_free (stream2_type_string); - offset += 4; + if (length < 4) { + gst_rmdemux_free_stream (rmdemux, stream); + return FALSE; + } + data += 4; + length -= 4; stream->subtype = stream_type; switch (stream_type) { case GST_RMDEMUX_STREAM_VIDEO: + if (length < 34) { + gst_rmdemux_free_stream (rmdemux, stream); + return FALSE; + } /* RV10/RV20/RV30/RV40 => video/x-pn-realvideo, version=1,2,3,4 */ - stream->fourcc = RMDEMUX_FOURCC_GET (data + offset + 8); - stream->width = RMDEMUX_GUINT16_GET (data + offset + 12); - stream->height = RMDEMUX_GUINT16_GET (data + offset + 14); - stream->rate = RMDEMUX_GUINT16_GET (data + offset + 16); - stream->subformat = RMDEMUX_GUINT32_GET (data + offset + 26); - stream->format = RMDEMUX_GUINT32_GET (data + offset + 30); - stream->extra_data_size = length - (offset + 26); - stream->extra_data = (guint8 *) data + offset + 26; + stream->fourcc = RMDEMUX_FOURCC_GET (data + 8); + stream->width = RMDEMUX_GUINT16_GET (data + 12); + stream->height = RMDEMUX_GUINT16_GET (data + 14); + stream->rate = RMDEMUX_GUINT16_GET (data + 16); + stream->subformat = RMDEMUX_GUINT32_GET (data + 26); + stream->format = RMDEMUX_GUINT32_GET (data + 30); + stream->extra_data_size = length - 26; + stream->extra_data = g_memdup2 (data + 26, length - 26); /* Natural way to represent framerates here requires unsigned 32 bit * numerator, which we don't have. For the nasty case, approximate... */ { - guint32 numerator = RMDEMUX_GUINT16_GET (data + offset + 22) * 65536 + - RMDEMUX_GUINT16_GET (data + offset + 24); + guint32 numerator = RMDEMUX_GUINT16_GET (data + 22) * 65536 + + RMDEMUX_GUINT16_GET (data + 24); if (numerator > G_MAXINT) { stream->framerate_numerator = (gint) (numerator >> 1); stream->framerate_denominator = 32768; @@ -1780,14 +1857,18 @@ GST_DEBUG_OBJECT (rmdemux, "Video stream with fourcc=%" GST_FOURCC_FORMAT - " width=%d height=%d rate=%d framerate=%d/%d subformat=%x format=%x extra_data_size=%d", - GST_FOURCC_ARGS (stream->fourcc), stream->width, stream->height, - stream->rate, stream->framerate_numerator, + " width=%d height=%d rate=%d framerate=%d/%d subformat=%x format=%x extra_data_size=%" + G_GSIZE_FORMAT, GST_FOURCC_ARGS (stream->fourcc), stream->width, + stream->height, stream->rate, stream->framerate_numerator, stream->framerate_denominator, stream->subformat, stream->format, stream->extra_data_size); break; case GST_RMDEMUX_STREAM_AUDIO:{ - stream->version = RMDEMUX_GUINT16_GET (data + offset + 4); + if (length < 6) { + gst_rmdemux_free_stream (rmdemux, stream); + return FALSE; + } + stream->version = RMDEMUX_GUINT16_GET (data + 4); GST_INFO ("stream version = %u", stream->version); switch (stream->version) { case 3: @@ -1801,40 +1882,50 @@ stream->height = 0; break; case 4: - stream->flavor = RMDEMUX_GUINT16_GET (data + offset + 22); - stream->packet_size = RMDEMUX_GUINT32_GET (data + offset + 24); - /* stream->frame_size = RMDEMUX_GUINT32_GET (data + offset + 42); */ - stream->leaf_size = RMDEMUX_GUINT16_GET (data + offset + 44); - stream->height = RMDEMUX_GUINT16_GET (data + offset + 40); - stream->rate = RMDEMUX_GUINT16_GET (data + offset + 48); - stream->sample_width = RMDEMUX_GUINT16_GET (data + offset + 52); - stream->n_channels = RMDEMUX_GUINT16_GET (data + offset + 54); - stream->fourcc = RMDEMUX_FOURCC_GET (data + offset + 62); - stream->extra_data_size = RMDEMUX_GUINT32_GET (data + offset + 69); - GST_DEBUG_OBJECT (rmdemux, "%u bytes of extra codec data", + if (length < 73) { + gst_rmdemux_free_stream (rmdemux, stream); + return FALSE; + } + stream->flavor = RMDEMUX_GUINT16_GET (data + 22); + stream->packet_size = RMDEMUX_GUINT32_GET (data + 24); + /* stream->frame_size = RMDEMUX_GUINT32_GET (data + 42); */ + stream->leaf_size = RMDEMUX_GUINT16_GET (data + 44); + stream->height = RMDEMUX_GUINT16_GET (data + 40); + stream->rate = RMDEMUX_GUINT16_GET (data + 48); + stream->sample_width = RMDEMUX_GUINT16_GET (data + 52); + stream->n_channels = RMDEMUX_GUINT16_GET (data + 54); + stream->fourcc = RMDEMUX_FOURCC_GET (data + 62); + stream->extra_data_size = RMDEMUX_GUINT32_GET (data + 69); + GST_DEBUG_OBJECT (rmdemux, + "%" G_GSIZE_FORMAT " bytes of extra codec data", stream->extra_data_size); - if (length - (offset + 73) >= stream->extra_data_size) { - stream->extra_data = (guint8 *) data + offset + 73; + if (length - 73 >= stream->extra_data_size) { + stream->extra_data = g_memdup2 (data + 73, stream->extra_data_size); } else { GST_WARNING_OBJECT (rmdemux, "codec data runs beyond MDPR chunk"); stream->extra_data_size = 0; } break; case 5: - stream->flavor = RMDEMUX_GUINT16_GET (data + offset + 22); - stream->packet_size = RMDEMUX_GUINT32_GET (data + offset + 24); - /* stream->frame_size = RMDEMUX_GUINT32_GET (data + offset + 42); */ - stream->leaf_size = RMDEMUX_GUINT16_GET (data + offset + 44); - stream->height = RMDEMUX_GUINT16_GET (data + offset + 40); - stream->rate = RMDEMUX_GUINT16_GET (data + offset + 54); - stream->sample_width = RMDEMUX_GUINT16_GET (data + offset + 58); - stream->n_channels = RMDEMUX_GUINT16_GET (data + offset + 60); - stream->fourcc = RMDEMUX_FOURCC_GET (data + offset + 66); - stream->extra_data_size = RMDEMUX_GUINT32_GET (data + offset + 74); - GST_DEBUG_OBJECT (rmdemux, "%u bytes of extra codec data", + if (length < 78) { + gst_rmdemux_free_stream (rmdemux, stream); + return FALSE; + } + stream->flavor = RMDEMUX_GUINT16_GET (data + 22); + stream->packet_size = RMDEMUX_GUINT32_GET (data + 24); + /* stream->frame_size = RMDEMUX_GUINT32_GET (data + 42); */ + stream->leaf_size = RMDEMUX_GUINT16_GET (data + 44); + stream->height = RMDEMUX_GUINT16_GET (data + 40); + stream->rate = RMDEMUX_GUINT16_GET (data + 54); + stream->sample_width = RMDEMUX_GUINT16_GET (data + 58); + stream->n_channels = RMDEMUX_GUINT16_GET (data + 60); + stream->fourcc = RMDEMUX_FOURCC_GET (data + 66); + stream->extra_data_size = RMDEMUX_GUINT32_GET (data + 74); + GST_DEBUG_OBJECT (rmdemux, + "%" G_GSIZE_FORMAT " bytes of extra codec data", stream->extra_data_size); - if (length - (offset + 78) >= stream->extra_data_size) { - stream->extra_data = (guint8 *) data + offset + 78; + if (length - 78 >= stream->extra_data_size) { + stream->extra_data = g_memdup2 (data + 78, stream->extra_data_size); } else { GST_WARNING_OBJECT (rmdemux, "codec data runs beyond MDPR chunk"); stream->extra_data_size = 0; @@ -1857,32 +1948,60 @@ { int element_nb; + if (length < 12) { + gst_rmdemux_free_stream (rmdemux, stream); + return FALSE; + } + /* Length of this section */ - GST_DEBUG_OBJECT (rmdemux, "length2: 0x%08x", - RMDEMUX_GUINT32_GET (data + offset)); - offset += 4; + GST_DEBUG_OBJECT (rmdemux, "length2: 0x%08x", RMDEMUX_GUINT32_GET (data)); /* Unknown : 00 00 00 00 */ - offset += 4; /* Number of variables that would follow (loop iterations) */ - element_nb = RMDEMUX_GUINT32_GET (data + offset); - offset += 4; + element_nb = RMDEMUX_GUINT32_GET (data + 8); + + data += 12; + length -= 12; while (element_nb) { + gsize str_len; + /* Category Id : 00 00 00 XX 00 00 */ - offset += 6; + if (length < 6 + 1) { + gst_rmdemux_free_stream (rmdemux, stream); + return FALSE; + } + data += 6; + length -= 6; /* Variable Name */ - offset += re_skip_pascal_string (data + offset); + str_len = re_skip_pascal_string (data); + if (length < str_len) { + gst_rmdemux_free_stream (rmdemux, stream); + return FALSE; + } + data += str_len; + length -= str_len; /* Variable Value Type */ /* 00 00 00 00 00 => integer/boolean, preceded by length */ /* 00 00 00 02 00 => pascal string, preceded by length, no trailing \0 */ - offset += 5; + if (length < 5 + 1) { + gst_rmdemux_free_stream (rmdemux, stream); + return FALSE; + } + data += 5; + length -= 5; /* Variable Value */ - offset += re_skip_pascal_string (data + offset); + str_len = re_skip_pascal_string (data); + if (length < str_len) { + gst_rmdemux_free_stream (rmdemux, stream); + return FALSE; + } + data += str_len; + length -= str_len; element_nb--; } @@ -1894,31 +2013,41 @@ } gst_rmdemux_add_stream (rmdemux, stream); + + return TRUE; } -static guint -gst_rmdemux_parse_indx (GstRMDemux * rmdemux, const guint8 * data, int length) +static gboolean +gst_rmdemux_parse_indx (GstRMDemux * rmdemux, const guint8 * data, gsize length, + gsize * index_length) { int n; int id; + if (length < 10) + return FALSE; + n = RMDEMUX_GUINT32_GET (data); id = RMDEMUX_GUINT16_GET (data + 4); rmdemux->index_offset = RMDEMUX_GUINT32_GET (data + 6); - GST_DEBUG_OBJECT (rmdemux, "Number of indices=%d Stream ID=%d length=%d", n, - id, length); + GST_DEBUG_OBJECT (rmdemux, + "Number of indices=%d Stream ID=%d length=%" G_GSIZE_FORMAT, n, id, + length); /* Point to the next index_stream */ rmdemux->index_stream = gst_rmdemux_get_stream_by_id (rmdemux, id); /* Return the length of the index */ - return 14 * n; + if (!g_size_checked_mul (index_length, 14, n)) + return FALSE; + + return TRUE; } -static void +static gboolean gst_rmdemux_parse_indx_data (GstRMDemux * rmdemux, const guint8 * data, - int length) + gsize length) { int i; int n; @@ -1928,16 +2057,16 @@ n = length / 14; if (rmdemux->index_stream == NULL) - return; + return TRUE; /* don't parse the index a second time when operating pull-based and * reaching the end of the file */ if (rmdemux->index_stream->index_length > 0) { GST_DEBUG_OBJECT (rmdemux, "Already have an index for this stream"); - return; + return TRUE; } - index = g_malloc (sizeof (GstRMDemuxIndex) * n); + index = g_new (GstRMDemuxIndex, n); rmdemux->index_stream->index = index; rmdemux->index_stream->index_length = n; @@ -1950,20 +2079,27 @@ indexi.offset); data += 14; } + + return TRUE; } -static void -gst_rmdemux_parse_data (GstRMDemux * rmdemux, const guint8 * data, int length) +static gboolean +gst_rmdemux_parse_data (GstRMDemux * rmdemux, const guint8 * data, gsize length) { + if (length < 8) + return FALSE; + rmdemux->n_chunks = RMDEMUX_GUINT32_GET (data); rmdemux->data_offset = RMDEMUX_GUINT32_GET (data + 4); rmdemux->chunk_index = 0; GST_DEBUG_OBJECT (rmdemux, "Data chunk found with %d packets " "(next data at 0x%08x)", rmdemux->n_chunks, rmdemux->data_offset); + + return TRUE; } -static void -gst_rmdemux_parse_cont (GstRMDemux * rmdemux, const guint8 * data, int length) +static gboolean +gst_rmdemux_parse_cont (GstRMDemux * rmdemux, const guint8 * data, gsize length) { GstTagList *tags; @@ -1983,6 +2119,8 @@ gst_tag_list_set_scope (rmdemux->pending_tags, GST_TAG_SCOPE_GLOBAL); } + + return TRUE; } static void @@ -2016,8 +2154,15 @@ packet_size, leaf_size, height); if (!g_uint_checked_mul (&size, height, packet_size)) { - GST_ERROR_OBJECT (rmdemux, "overflowing audio packet size"); - return GST_FLOW_ERROR; + GST_WARNING_OBJECT (rmdemux, "overflowing audio packet size"); + gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); + return GST_FLOW_OK; + } + + if (stream->leaf_size == 0) { + GST_WARNING_OBJECT (rmdemux, "invalid audio leaf packet size"); + gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); + return GST_FLOW_OK; } outbuf = gst_buffer_new_and_alloc (size); @@ -2027,6 +2172,14 @@ GstBuffer *b = g_ptr_array_index (stream->subpackets, p); GstMapInfo map; + if (gst_buffer_get_size (b) < packet_size) { + GST_ERROR_OBJECT (rmdemux, "too small audio subpacket"); + gst_buffer_unmap (outbuf, &outmap); + gst_buffer_unref (outbuf); + gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); + return GST_FLOW_OK; + } + gst_buffer_map (b, &map, GST_MAP_READ); if (p == 0) { @@ -2114,12 +2267,32 @@ gst_buffer_map (buf, &map, GST_MAP_READ); timestamp = GST_BUFFER_PTS (buf); + if (map.size < 2) { + GST_WARNING_OBJECT (rmdemux, "Too small mp4a buffer"); + gst_buffer_unmap (buf, &map); + gst_buffer_unref (buf); + return GST_FLOW_OK; + } frames = (map.data1 & 0xf0) >> 4; index = 2 * frames + 2; + if (map.size < 2 * frames + 2) { + GST_WARNING_OBJECT (rmdemux, "Too small mp4a buffer"); + gst_buffer_unmap (buf, &map); + gst_buffer_unref (buf); + return GST_FLOW_OK; + } + for (i = 0; i < frames; i++) { guint len = (map.datai * 2 + 2 << 8) | map.datai * 2 + 3; + if (map.size < index + len) { + GST_WARNING_OBJECT (rmdemux, "Too small mp4a buffer"); + gst_buffer_unmap (buf, &map); + gst_buffer_unref (buf); + return GST_FLOW_OK; + } + outbuf = gst_buffer_copy_region (buf, GST_BUFFER_COPY_ALL, index, len); if (i == 0) { GST_BUFFER_PTS (outbuf) = timestamp; @@ -2159,8 +2332,9 @@ packet_size, stream->leaf_size, height); if (!g_uint_checked_mul (&size, height, packet_size)) { - GST_ERROR_OBJECT (rmdemux, "overflowing SIPR audio packet size"); - return GST_FLOW_ERROR; + GST_WARNING_OBJECT (rmdemux, "overflowing SIPR audio packet size"); + gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); + return GST_FLOW_OK; } outbuf = gst_buffer_new_and_alloc (size); @@ -2174,13 +2348,15 @@ GST_BUFFER_PTS (outbuf) = GST_BUFFER_PTS (b); } - if (gst_buffer_extract (b, 0, outmap.data + packet_size * p, - packet_size) != packet_size) { - GST_ERROR_OBJECT (rmdemux, "not enough SIPR audio data available"); + if (gst_buffer_get_size (b) < packet_size) { + GST_ERROR_OBJECT (rmdemux, "too small sipr audio subpacket"); gst_buffer_unmap (outbuf, &outmap); gst_buffer_unref (outbuf); - return GST_FLOW_ERROR; + gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream); + return GST_FLOW_OK; } + + gst_buffer_extract (b, 0, outmap.data + packet_size * p, packet_size); } gst_buffer_unmap (outbuf, &outmap); @@ -2194,8 +2370,12 @@ } outbuf = gst_rm_utils_descramble_sipr_buffer (outbuf); - - ret = gst_pad_push (stream->pad, outbuf); + if (outbuf) { + ret = gst_pad_push (stream->pad, outbuf); + } else { + GST_WARNING_OBJECT (rmdemux, "failed to descramble buffer"); + ret = GST_FLOW_OK; + } gst_rmdemux_stream_clear_cached_subpackets (rmdemux, stream);
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/gst/realmedia/rmdemux.h -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/gst/realmedia/rmdemux.h
Changed
@@ -128,7 +128,7 @@ int chunk_index; guint32 object_id; - guint32 size; + gsize size; guint16 object_version; /* container tags for all streams */
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/gst/realmedia/rmutils.c -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/gst/realmedia/rmutils.c
Changed
@@ -25,10 +25,10 @@ #include "rmutils.h" gchar * -gst_rm_utils_read_string8 (const guint8 * data, guint datalen, - guint * p_total_len) +gst_rm_utils_read_string8 (const guint8 * data, gsize datalen, + gsize * p_total_len) { - gint length; + gsize length; if (p_total_len) *p_total_len = 0; @@ -47,10 +47,10 @@ } gchar * -gst_rm_utils_read_string16 (const guint8 * data, guint datalen, - guint * p_total_len) +gst_rm_utils_read_string16 (const guint8 * data, gsize datalen, + gsize * p_total_len) { - gint length; + gsize length; if (p_total_len) *p_total_len = 0; @@ -69,7 +69,7 @@ } GstTagList * -gst_rm_utils_read_tags (const guint8 * data, guint datalen, +gst_rm_utils_read_tags (const guint8 * data, gsize datalen, GstRmUtilsStringReadFunc read_string_func) { const gchar *gst_tags = { GST_TAG_TITLE, GST_TAG_ARTIST, @@ -80,13 +80,13 @@ g_assert (read_string_func != NULL); - GST_DEBUG ("File Content : (CONT) len = %d", datalen); + GST_DEBUG ("File Content : (CONT) len = %" G_GSIZE_FORMAT, datalen); tags = gst_tag_list_new_empty (); for (i = 0; i < G_N_ELEMENTS (gst_tags); ++i) { gchar *str = NULL; - guint total_length = 0; + gsize total_length = 0; str = read_string_func (data, datalen, &total_length); data += total_length; @@ -146,7 +146,7 @@ } static void -gst_rm_utils_swap_nibbles (guint8 * data, gint idx1, gint idx2, gint len) +gst_rm_utils_swap_nibbles (guint8 * data, gsize idx1, gsize idx2, gint len) { guint8 *d1, *d2, tmp1 = 0, tmp2, tmp1n, tmp2n; @@ -207,7 +207,7 @@ } } -static const gint sipr_swap_index382 = { +static const gsize sipr_swap_index382 = { {0, 63}, {1, 22}, {2, 44}, {3, 90}, {5, 81}, {7, 31}, {8, 86}, {9, 58}, {10, 36}, {12, 68}, {13, 39}, {14, 73}, @@ -224,15 +224,23 @@ gst_rm_utils_descramble_sipr_buffer (GstBuffer * buf) { GstMapInfo map; - gint n, bs; - gsize size; + gint n; + gsize size, bs; size = gst_buffer_get_size (buf); /* split the packet in 96 blocks of nibbles */ + if (size > G_MAXSIZE / 2) { + gst_buffer_unref (buf); + return NULL; + } bs = size * 2 / 96; if (bs == 0) return buf; + if (bs > G_MAXINT) { + gst_buffer_unref (buf); + return NULL; + } buf = gst_buffer_make_writable (buf); @@ -240,7 +248,7 @@ /* we need to perform 38 swaps on the blocks */ for (n = 0; n < 38; n++) { - gint idx1, idx2; + gsize idx1, idx2; /* get the indexes of the blocks of nibbles that need swapping */ idx1 = bs * sipr_swap_indexn0;
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/gst/realmedia/rmutils.h -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/gst/realmedia/rmutils.h
Changed
@@ -24,18 +24,18 @@ G_BEGIN_DECLS -typedef gchar * (*GstRmUtilsStringReadFunc) (const guint8 * data, guint datalen, guint * p_strlen); +typedef gchar * (*GstRmUtilsStringReadFunc) (const guint8 * data, gsize datalen, gsize * p_strlen); gchar *gst_rm_utils_read_string8 (const guint8 * data, - guint datalen, - guint * p_totallen); + gsize datalen, + gsize * p_totallen); gchar *gst_rm_utils_read_string16 (const guint8 * data, - guint datalen, - guint * p_totallen); + gsize datalen, + gsize * p_totallen); GstTagList *gst_rm_utils_read_tags (const guint8 * data, - guint datalen, + gsize datalen, GstRmUtilsStringReadFunc func); GstBuffer *gst_rm_utils_descramble_dnet_buffer (GstBuffer * buf);
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/meson.build -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/meson.build
Changed
@@ -1,8 +1,9 @@ project('gst-plugins-ugly', 'c', - version : '1.28.2', + version : '1.28.5', meson_version : '>= 1.4', default_options : 'warning_level=1', - 'buildtype=debugoptimized' ) + 'buildtype=debugoptimized', + 'c_std=gnu11,c11' ) gst_version = meson.project_version() version_arr = gst_version.split('.')
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/po/gst-plugins-ugly-1.0.pot -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/po/gst-plugins-ugly-1.0.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly-1.28.2\n" +"Project-Id-Version: gst-plugins-ugly-1.28.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-04-07 20:03+0100\n" +"POT-Creation-Date: 2026-07-08 23:42+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/po/gst-plugins-ugly.pot -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/po/gst-plugins-ugly.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-ugly-1.28.2\n" +"Project-Id-Version: gst-plugins-ugly-1.28.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-04-07 20:03+0100\n" +"POT-Creation-Date: 2026-07-08 23:42+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
View file
_service:download_files:gst-plugins-ugly-1.28.2.tar.xz/release-notes-1.28.md -> _service:download_files:gst-plugins-ugly-1.28.5.tar.xz/release-notes-1.28.md
Changed
@@ -2,11 +2,11 @@ GStreamer 1.28.0 was originally released on 27 January 2026. -The latest bug-fix release in the stable 1.28 series is 1.28.2(#1.28.2) and was released on 07 April 2026. +The latest bug-fix release in the stable 1.28 series is 1.28.5(#1.28.5) and was released on 08 July 2026. See https://gstreamer.freedesktop.org/releases/1.28/latest for the latest version of this document. -*Last updated: Tuesday 07 April 2026, 12:30 UTC (log)gitlog* +*Last updated: Wednesday 08 July 2026, 23:00 UTC (log)gitlog* latest: https://gstreamer.freedesktop.org/releases/1.28/ gitlog: https://gitlab.freedesktop.org/gstreamer/www/commits/main/src/htdocs/releases/1.28/release-notes-1.28.md @@ -1942,7 +1942,653 @@ #### List of merge requests and issues fixed in 1.28.2 - List of Merge Requests applied in 1.28.2(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.2) -- List of Issues fixed in 1.28.2(https://gitlab.freedesktop.org/groups/gstreamer/-/issues?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=1.28.2) +- List of Issues fixed in 1.28.2(https://gitlab.freedesktop.org/groups/gstreamer/-/work_items?sort=created_date&state=closed&milestone_title=1.28.2) + +<a id="1.28.3"></a> + +### 1.28.3 + +The third 1.28 bug-fix release (1.28.3) was released on 11 May 2026. + +This release only contains bugfixes and important security fixessecurity. +It *should* be safe to update from 1.28.x and we recommend you do so at your +earliest convenience. + +security: https://gstreamer.freedesktop.org/security/ + +#### Highlighted bugfixes in 1.28.3 + + - Various security fixessecurity and playback fixes + - applemedia: vtdec stability, MoltenVK integration and planar video format handling fixes + - audioresample: Fix regression on armv7hf + - bpmdetect: Fixes for stereo and multi-channel modes + - devicemonitor: wait for start thread to finish when listing devices so all the info is there for e.g. v4l2 provider + - fallbacksrc: Add fallback-source and enable-dummy properties + - nvidia: fix cudaconvert performance regression and nvdec device creation regression + - opengl: add GBRA swizzle support, and fix glcolorconvert vertical flip issue on crop + - rtspsrc: include user-agent property in HTTP tunnel requests and fix mikey regression + - threadshare: add leaky mode to dataqueue-based elements + - v4l2: fix negotiation error when trying to force stateful decoders to output dmabufs + - webrtcsink: Add support imx8mp vpuenc_hevc hardware H.265 encoder + - cerbero: Extend gst-plugins-rs melding to Darwin platforms for smaller binary sizes and static linking improvements + - inno Windows installer fixes, including silent install mode via the command line + - macOS: provide script to allow uninstalling the package; relocate absolute paths to Python.framework in wheels + - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements + +#### gstreamer + + - pad: fix potential buffer leak in get_range_failed error handler(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11284) + - aggregator: Fix documentation(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11488) + - allocator: Use g_try_malloc() instead of g_malloc() for sysmem(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11569) + - baseparse: Fix memory leak when subclass returns error(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11567) + - bitwriter: Allow unsetting set bits when overwriting them(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11471) + - devicemonitor: Wait for start thread to finish when listing devices(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11554) + - streams: Add METADATA to the valid stream flags for serialization(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11566) + - value: On buffer deserialization errors first unmap the buffer and then unref it(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11590) + - gst-inspect-1.0: type for string caps fields should be 'string' not 'gchararray'(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11460) + +#### gst-plugins-base + + - appsink, appsrc: Allow passing NULL callbacks(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11431) + - appsrc: Fix dropped counting with bufferlist(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11312) + - audioaggregator: Don't drop pending input buffers on sinkpads on srcpad caps changes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11483) + - audioaggregator: Don't reset samples_per_buffer unless sample rate / output-buffer-duration has changed(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11487) + - audioaggregator: Don't try converting buffers on caps changes if impossible(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11479) + - audioresample: Fix extra samples produced at speech-to-silence transitions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11439) + - audio-resampler-neon: fix Thumb encoding and use Clang O2 calculation for strides(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11491) + - audio sounds strange on release 1.28.2 for armv7hf(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5075) + - decodebin2: fix leak of endpads list on shutdown while exposing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11470) + - discoverer: Take the DISCO_LOCK while parsing stream topology(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11539) + - exiftag: Use a hashtable instead of a linked list for storing the pending tags(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11364) + - gl: add GBRA swizzle support(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11422) + - id3v2: Add input validation and refactor id3v2_ununsync_data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11320) + - id3v2: Check valid frame sizes more(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11380) + - opengl: Fix glcolorconvert vertical flip issue on crop(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11413) + - glcolorconvert: GBRA input hits unreachable swizzle path(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5060) + - subparse / samiparse: Various robustness fixes and minor other fixes.(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11362) + - subparse: Fix memory leakage for text colour and background colour(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11359) + - subparse: O(N^2) complexity in SAMI parser causes timeout with crafted large input(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5046) + - tag: Prevent ubsan and wrong fraction usage(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11293) + - tag: Off-by-one checking for id3v2 unnsync tag parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5049) + - video: add precondition check on dma helpers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11451) + - videodmabufpool: Break ref cycle between the pool and its thread(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11337) + +#### gst-plugins-good + + - adaptivedemux/hlsdemux assertions / fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11572) + - avidemux: Fix divide by zero if VPRP contains fields==0(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11305) + - avidemux: Divide-by-Zero in vprp parser(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5027) + - isomp4: Fix memory leak when file is corrupted(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11564) + - isomp4: qtdemux: Add bounds checks for ESDS descriptors(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11382) + - matroska: Fix wrong object type bug(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11561) + - qml6glsink: Fix redraw issues on buffer change(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11338) + - qtdemux: Check for minimum stride requirements and width/height constraints with uncompressed video(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11591) + - rtspsrc: mki is optional upon crypto update(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11448) + - rtspsrc: mikey without mki failure(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5050) + - rtspsrc: include user-agent property in HTTP tunnel requests(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11286) + - v4l2: object: Fix caps filtering in caps negotiation(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11288) + - v4l2transform: release input buffers earlier(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11368) + - wavparse: Remove assertion about upstream file size(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11506) + - wavparse: recover from invalid av_bps instead of failing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11331) + - wavparse: Assert and execute an integer overflow on invalid duration(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5077) + - Require C std gnu11 or c11, remove custom 'restrict' definition, fixing build with Qt 6.11(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11563) + +#### gst-plugins-bad + + - ajasink: Correctly set reference source(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11309) + - analytics: fix meta transform function for copy cases(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11476) + - android: an AMC video decoder is always found, fix decoding of constrained-baseline files(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11551) + - androidmedia: Free element name after use for logging(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11573) + - applemedia: Don't expose unsupported formats for Vulkan/GL(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11498) + - applemedia: Fix MoltenVK usage with vtdec-imported textures(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11285) + - applemedia: Fix test instability and nofork issues(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11461) + - applemedia: Require Xcode 12.4 for all builds(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11369) + - applemedia: fix planar CoreVideo buffer plane offsets(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11432) + - applemedia: Unable to build on MacOS 12 1.28.1(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4941) + - av1parse: Fix null pointer deference(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11529) + - bpmdetect: Fix calculation of number of samples for >1 channels(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11297) + - codecparsers: Stack Buffer Overflow in H.265 Buffering Period SEI Parser(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5036) + - cudaconvert: fix performance regression caused by double precision floating point constants(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11400) + - decklink: Fix various refcount issues and related leaks(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11558) + - h263parse: Fix wrong ratio masking(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11537) + - h263parse: Missing handling of reserved invalid EPAR_D value(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11535) + - h265parser: use sub-layer 0 CPB count in buffering_period SEI loops(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11339) + - h266parser: Add missing clearing function for H266 SEI message(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11571) + - h266parser: Avoid out-of-bounds write when parsing PPS tile slices(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11588) + - mpegdemux: Add various bounds checks related to PES header parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11587) + - interlace: Revert "Drop framerate from query caps of sinkpad"(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11428) + - mpegtsdemux: Various fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11454) + - mpegtspacketizer: Avoid potential overflow(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11307) + - mse: Also disable the library if the meson option is disabled(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11473) + - mxf: Fix multiple writing / parsing issues when handling VANC packets(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11592) + - mxfdemux: Fix reverse temporal offsets array upper bounds check(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11589) + - mxfmux: aes-bwf: Use correct size when serializing user data / channel status mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11345) + - mxf: Theoretical heap Buffer Overflow in MXF AES3 Audio Descriptor write_tags(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5037) + - nvcodec: Fix missing adapter-luid when loading decoders(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11329) + - nvdec regression in 1.28.2: "Couldn't create new device with adapter luid 0"(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5031) + - pngparse: Fix Use-after-free bug(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11531) + - qml6d3d11sink: Clear texture on Paused-to-Ready transition(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11520) + - qt6d3d11: fix null check in SetForceAspectRatio()(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11575) + - tsdemux: Fix parsing of PES ESCR and following PES header fields(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11324) + - tsdemux: Fix segfault when trying to handle SCTE-35 with incorrect program specified(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11294) + - va: do not post error message when push fails(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11504) + - vkupload/vkdownload: Fix possible corrupted image due to mismatched stride/padding(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11387) + - vtdec: Avoid blocking decoder output callback(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11430) + - vtdec: Avoid locking up during a decoder reset(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11395) + - vtdec: deadlock when restarting pipeline(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5029) + - vtdec: fix deadlock when restarting pipeline(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11343) + - webrtc: take ownership of src_bin and sink_bin and don't leak error message(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11420) + - Require C std gnu11 or c11, remove custom 'restrict' definition, fixing build with Qt 6.11(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11563) + +#### gst-plugins-ugly + + - No changes + +#### GStreamer Rust plugins + + - fallbacksrc: Add fallback-source and enable-dummy properties(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3017) + - isobmff: Change caps updates in test to not be delayed(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3041) + - quinn: Disable tests which were flaky(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3030) + - quinnwtsrc/sink: Fix session close(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3034) + - rtpbin2: examples: fix audio resyncs, stream offsets and frame drops(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3029) + - rtprecv: extend jitter accounted for(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3019) + - threadshare: add leaky mode to dataqueue-based elements(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3036) + - tracers: feature gate remaining PluginAPIFlags makers behind doc(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3013) + - webrtcsink: actually allow custom signaller to be set(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3043) + - webrtcsink: Adding imx8mp vpuenc_hevc support for 265(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3044) + - Switch from `std::os::raw` to `std::ffi` for C types(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3011) + - Update dependencies(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3021) + - all: address clippy 1.95.0 suggestions(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3037) + - Fix new 1.95 clippy warnings(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3048) + +#### gst-libav + + - No changes + +#### gst-rtsp-server + + - No changes + +#### gstreamer-sharp + + - No changes + +#### gst-python + + - No changes + +#### gst-editing-services + + - Plug memory leaks reported running valgrind on our testsuite(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11284) + - Fix use-after-free in GESUriSource decodebin callbacks(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11375) + - Fix use-after-free in structured-interface and asset cache(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11349) + +#### gst-devtools, gst-validate + gst-integration-testsuites + + - Plug memory leaks reported running valgrind on our testsuite(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11284) + +#### gst-examples + + - No changes + +#### gstreamer-docs + + - android: trim tutorials by using fewer plugins, ensure that an AMC video decoder is always found, fix decoding of constrained-baseline files(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11551) + +#### Development build environment + + - Add AGENTS.md file to let agents know what the participation rules are(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11475) + - libffi.wrap, proxy-libintl.wrap: switch to wrap-file, g-i: add support for wrap-file libffi/libintl(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11444) + +#### Cerbero build tool and packaging changes in 1.28.3 + + - cerbero: Fix entering into the build environment, add explicit non-interactive mode(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2199) + - cerbero: Fix invalid target_subsystem when targeting Android on macOS(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2209) + - cerbero: Fixes for background build setup(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2201) + - cerbero: Fixes for background mode on macOS(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2183) + - cerbero: Support differently named Xcode for iOS and tvOS builds(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2212) + - cmake: Fix destination for the Java plugin initializers(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2241) + - gst-plugins-rs: Extend melding to Darwin platforms(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2202) + - gst-plugins-rs: fix MSVC link errors for cargo binary consumers(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2237) + - libffi.recipe: Update to latest 3.2.9999.5 release, update proxy-libintl to 0.5(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2210) + - libproxy: add backend, gio module and add to gstreamer-1.0-net.package(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2213) + - osxrelocator: relocate absolute paths to Python.framework(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2211) + - srt: update to 1.5.5(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2219) + - vvdec: upgrade to 3.1.0(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2214) + - wheels: rename and placehold the msvc runtime wheel(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2222) + - wheels must have static dependency metadata, no conditional dep on gstreamer-msvc-runtime(https://gitlab.freedesktop.org/gstreamer/cerbero/-/work_items/573) + - wheels: Version number needs to follow PEP 440(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2223) + - gstreamer_python: hardcoded path for libgstpython.dylib(https://gitlab.freedesktop.org/gstreamer/cerbero/-/work_items/577) + - inno: do not automatically create envvars or Registry keys with portable mode enabled(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2238) + - inno Windows installer: allow setting User or Admin-level install via command line(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2220) + - ios: Execute postinstall template copy only with user level installs(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2226) + - m4: Update to 1.4.21(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2236) + - macos: document or provide a way to uninstall the package(https://gitlab.freedesktop.org/gstreamer/cerbero/-/work_items/370) + - osx: Add uninstaller script via osascript(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2224) + - Update to Rust 1.95 / rustup 1.29.0 / cargo-c 0.10.22(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2230) + +#### Contributors to 1.28.3 + +Anders Hellerup Madsen, Andreas Frisch, Andrew Yooeun Chun, Arthur Chan, +Dennis Han, Bartel Wilhelm, Dominique Leroux, Edward Hervey, Fabian Orccon, +François Laignel, Jan Schmidt, Jeongmin Kwak, Leonardo Salvatore, +L. E. Segovia, Mathieu Duponchelle, Michael Olbrich, Michiel Westerbeek, +Monty C, Nicolas Dufresne, Nirbheek Chauhan, Ognyan Tonchev, Philippe Normand, +Philipp Wallrich, Piotr Brzeziński, Sanchayan Maity, Santiago Carot-Nemesio, +Sebastian Dröge, Seungha Yang, Shigeharu Kamiya, Thibault Saunier, +Tim-Philipp Müller, Tjitte de Wert, Tobias Koenig, Tomasz Bujewski, +Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Xabier Rodriguez Calvar, +Xavier Claessens, + +... and many others who have contributed bug reports, translations, sent +suggestions or helped testing. Thank you all! + +#### List of merge requests and issues fixed in 1.28.3 + +- List of Merge Requests applied in 1.28.3(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.3) +- List of Issues fixed in 1.28.3(https://gitlab.freedesktop.org/groups/gstreamer/-/work_items?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=1.28.3) + +<a id="1.28.4"></a> + +### 1.28.4 + +The fourth 1.28 bug-fix release (1.28.4) was released on 12 June 2026. + +This release only contains bugfixes and important security fixessecurity. +It *should* be safe to update from 1.28.x and we recommend you do so at your +earliest convenience. + +security: https://gstreamer.freedesktop.org/security/ + +#### Highlighted bugfixes in 1.28.4 + + - Various security fixessecurity and playback fixes + - audioaggregator: fixes for conversion of in-progress buffers when input caps change + - audioresample: more armv7 fixes + - camerabin: Fix caps negotiation failure when starting video capture + - Debug logging performance improvements + - fmp4mux: Fix draining in chunk mode after partial GOPs were drained + - gldownload: fix handling of directly imported dmabufs from glupload + - matroskamux: Write ReferenceBlock for non-keyframe video in BlockGroups + - rtp2: session: add "stats" property + - rtspsrc2: handle parse errors with TCP interleaved more gracefully where the server just drops data + - rtspsrc2: implement support for SRTP, authentication, HTTP tunnelling, keep alive, stream selection, TLS validation, latency configuration + - st2038combiner: only forward video pad segment, fixing issues for cases where the ST2038 segment differs + - Wavpack audio: Various channel and channel-mask related fixes + - webrtc, sdp: set level in negotiated caps only if level asymmetry not allowed, fixing an H.264 negotiation regression with higher resolutions + - androidmedia: add various new codec mime / profile mappings (WMV, VC1, AC3/EAC3/AC4, AAC, H265) and support decoding FLAC + - d3d12decoder: Fix decoding on Qualcomm GPUs on ARM64 Windows + - wasapi2src: fix hang when using loopback-target-pid (regression from 1.26) + - cerbero: update to Rust 1.96, plus glib-networking OpenSSL backend fixes + - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements + +#### gstreamer + + - bufferpool: avoid leaking partially preallocated buffers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11664) + - caps: fix multiple caps leaks(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11756) + - datetime: Improve correctness of ISO-8601 string parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11616) + - info: Don't use fwrite() on Windows for debug logging(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11632) + - info: Use stack allocation for messages smaller than 1kB(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11624) + - task: Fix racy tests by making unref deterministic(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11638) + - value: fix crash when converting NULL G_TYPE_VALUE_ARRAY to G_TYPE_STRING(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11737) + - registry: detect libgstreamer load from Android container and skip canonicalization(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11612) + - tests: Fix build with glib <= 2.67.2(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11618) + +#### gst-plugins-base + + - audio-resampler-neon: fix accumulated stride(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11703) + - audio-resampler-neon: re-increment address(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11760) + - audioaggregator: Remove brittle conversion of in-progress buffers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11775) + - discoverer: Lock the DISCO_LOCK whenever accessing the streams list(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11840) + - gl: egl: Set TRANSFER_NEED_DOWNLOAD flag(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11710) + - gldownload: Can't handle directly imported dmabufs from glupload(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4965) + - glupload: fix memleak on failure path(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11640) + - glwindow: Allow setting a NULL window handle(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11611) + - id3v2: Don't modify const data and check for enough data when reading RVA2 tags(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11808) + - id3v2: Don't unnecessarily assert on size==0 when unsyncing data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11641) + - pbutils: Add NULL check for tmpcaps parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11746) + - pbutils: Fix possible null dereference when empty string is provided(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11747) + - rtcpbuffer: Add some missing bounds checks when parsing SDES(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11796) + - sdp: keep level-asymmetry-allowed in the caps(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11727) + - subparse: Avoid zero and extreme fps when parsing mdvdsub subtitles(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11810) + - uridecodebin3: Use PLAY_ITEMS_LOCK for URI-related getter(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11633) + - uridecodebin: Protect missing_plugin_errors list from concurrent access(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11615) + - videodmabufpool: Fix debug category(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11677) + - xmptag: Correctly initialize pointer to the end of the input array(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11806) + +#### gst-plugins-good + + - matroska-mux: Write ReferenceBlock for non-keyframe video in BlockGroups(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11722) + - osxaudio: Fix stack overflow with >64ch audio devices(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11658) + - qtdemux: parse mastering luminance as u32 instead of u16(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11661) + - qt6: remove an unneeded QOpenGLContext->makeCurrent()(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11833) + - rtph265depay: fix memory leak(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11715) + - sbcparse: Add bounds checking to header parsing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11817) + - tests: mpegaudioparse: Fix raciness in the state change handling(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11724) + - v4l2: Fix buffer leak on qbuf failure(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11759) + - wavpack: Various channel / channel-mask related fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11757) + - wavpackdec: Avoid integer overflow when calculating output buffer size and related fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11811) + - wavpackenc fails for channels > 2(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5129) + +#### gst-plugins-bad + + - ahcsrc: Register exposure-mode property for GstPhotography interface(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11613) + - amc: Don't try printing NULL caps(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11688) + - amcvideodec: Don't keep crop-rectangle uninitialized if not specified(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11686) + - androidmedia: Add various new codec mime / profile mappings(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11614) + - androidmedia: Don't print error logs if downstream returns flushing / EOS(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11610) + - androidmedia: Fix typo in error message(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11692) + - androidmedia: support decoding flac(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11647) + - av1parser: Fix bytes/bits confusion when parsing tile data size(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11827) + - camerabin: Fix caps negotiation when starting video capture(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11774) + - d3d12decoder: Fix decoding on Qualcomm GPUs(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11781) + - mpegtspacketizer: Do not seek before the first PCR(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11786) + - mxfdemux: Use unsigned integers in more places and don't truncate 64 bit integers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11837) + - svtav1enc: Scale MDCV and CLL to SVT-AV1's expected units(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11609) + - va: drm: Fix fd leak and return type in create_va_display(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11642) + - vajpegdecoder: Validate that enough data is available for the current JPEG segment(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11834) + - vulkanupload: Don't reallocate the pool when the framerate changes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11628) + - wasapi2: Don't reset process loopback capture client(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11683) + - wasapi2src hangs when using loopback-target-pid in GStreamer 1.28 (regression from 1.26)(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4878) + - tests: Fix build with glib <= 2.67.2(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11618) + - meson: fix building -bad tests with disabled mse(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11617) + +#### gst-plugins-ugly + + - realmedia: Fixes for various out-of-bounds reads(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11826) + +#### GStreamer Rust plugins + + - fmp4mux: Fix draining in chunk mode after partial GOPs were drained(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3062) + - Rtp2Session: add ParamSpec for property stats(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3061) + - rtspsrc2: Add support for SET_PARAMETER and GET_PARAMETER using signals(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3095) + - rtspsrc2: Add support for SRTP(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3086) + - rtspsrc2: Add TLS support(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3064) + - rtspsrc2: handle parse errors with tcp interleaved rtsp more gracefully(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3077) + - rtspsrc2: Implement authentication support(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3063) + - rtspsrc2: Implement support for HTTP tunnelling(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3065) + - rtspsrc2: Implement support for keep alive(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3066) + - rtspsrc2: Implement support for streams(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3078) + - rtspsrc2: Include user-agent property in HTTP tunnel requests(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3067) + - rtspsrc2: Support TLS validation flags for server certificate(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3104) + - rtspsrc2: Support latency configuration property(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3100) + - rtspsrc2: Update README with implemented features(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3069) + - st2038combiner: only forward video pad segment(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3097) + - webrtc: set level in negotiated caps only if level asymmetry not allowed(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3089) + - webrtcsink: handle payloader timestamp-offset prop type variants(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3081) + - webrtcsrc, webrtcsink: Fix SDP renegotiation bugs(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3098) + - Added script to convert git sourced dependencies to crates.io packages(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3084) + - gst-plugin-version-helper: Relax version requirements and update to 0.8.4(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3072) + +#### gst-libav + + - avdemux: Always free AVIOContext and open failure and don't dereference NULL AVFormatContext(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11823) + - avprotocol: Don't free GstFFMpegPipe when closing the AVIOContext(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11820) + +#### gst-rtsp-server + + - RTSPMediaFactory: make create_pipeline virtual method introspectable(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11726) + +#### gstreamer-sharp + + - No changes + +#### gst-python + + - No changes + +#### gst-editing-services + + - No changes + +#### gst-devtools, gst-validate + gst-integration-testsuites + + - use relative paths in the printed validate command, fix flaky tests due to non-deterministic pad task unref(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11646) + +#### gst-examples + + - No changes + +#### gstreamer-docs + + - No changes + +#### Development build environment + + - AGENTS.md: Add explicit exception for including tool output in issue descriptions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11728) + +#### Cerbero build tool and packaging changes in 1.28.4 + + - Update to Rust 1.96 / cargo-c 0.10.23(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2261) + - Read recipe files as UTF-8(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2263) + - glib-networking: Backport various OpenSSL backend fixes(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2251) + - pkg-config.recipe: Never enable --define-prefix(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2259) + - source: serialize tarball extracts that share an unpack path(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2252) + +#### Contributors to 1.28.4 + +Albert Sjölund, Arthur Chan, Carlos Falgueras García, Cheah, Vincent Beng Keat, +dec05eba, Dino Spiller, Edward Hervey, François Laignel, Gordon Smith, Hou Qi, +Jakub Adam, Jan Alexander Steffens (heftig), Jan Schmidt, L. E. Segovia, +Marcus Hanestad, Mathieu Duponchelle, Matthew Waters, Niclas Götting, +Nirbheek Chauhan, Piotr Brzeziński, Qian Hu (胡骞), Rares Branici, Robert Mader, +Sanchayan Maity, Sebastian Dröge, Seungha Yang, Seungmin Lee, Stéphane Cerveau, +Suhwan Choi, Taruntej Kanakamalla, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, +Vivia Nikolaidou, Xavier Claessens, + +... and many others who have contributed bug reports, translations, sent +suggestions or helped testing. Thank you all! + +#### List of merge requests and issues fixed in 1.28.4 + +- List of Merge Requests applied in 1.28.4(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.4) +- List of Issues fixed in 1.28.4(https://gitlab.freedesktop.org/groups/gstreamer/-/work_items?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=1.28.4) + +<a id="1.28.5"></a> + +### 1.28.5 + +The fifth 1.28 bug-fix release (1.28.5) was released on 08 July 2026. + +This release only contains bugfixes and important security fixessecurity. +It *should* be safe to update from 1.28.x and we recommend you do so at your +earliest convenience. + +security: https://gstreamer.freedesktop.org/security/ + +#### Highlighted bugfixes in 1.28.5 + + - Various security fixessecurity and playback fixes + - Fix subtitles cause green flickering with VA decoders on AMD GPUs + - core: Fix sticky event raciness when pads are linked mid-push + - appsrc: Uniformly handle EOS events being pushed + - audio-resampler-neon fails to build for targets with neon but without thumb + - avtp: Correct ptime generation from avtp timestamp + - fmp4mux: Various fixes for splitting at fragment boundaries + - gldownload: fix wrong DRM format negotiation causing R/B channel swap + - gdkpixbufdec: Drop rank to NONE and handle resolution/format changes + - gopbuffer: add support for H.266/VVC + - h265decoder: Fix HEVC with alpha decoding + - mp4mux: fix AC-3 template caps so muxer can accept input from ac3parse + - mpegtsmux: Always assign PTS to output buffers in CBR mode + - mpegtsmux: Output buffers with PCR-only bitrate-padding packets have wrong PTS + - rtcpbuffer: Fix parsing of SR+SDES compound packets (regression from security fix) + - rtspsrc2: Allow disabling SRTP/SRTCP encryption and SRTP authentication + - tsdemux: Improve PTS rollover handling in ignore-pcr mode, fixing intermittent corruption with YouTube HLS streams + - textaccumulate: output joined single buffer, add list as meta + - threadshare: add ts-clocksync + - webrtcsink: negotiation fixes and improvements + - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements + +#### gstreamer + + - caps: fix field name leak in gst_caps_structure_simplify(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11914) + - info: Use a more optimized version of GST_TIME_ARGS(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11995) + - pads: Fix sticky event raciness when linked mid-push(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11948) + - typefindhelper: Drop unnecessary check for factories without a function(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12020) + - Use named pipes when spawning gst-ptp-helper on Windows(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11994) + +#### gst-plugins-base + + - appsink: Clear local sample storage when flushing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11947) + - appsrc: Uniformly handle EOS events being pushed(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11925) + - audio-resampler-neon fails to build for targets with neon but without thumb(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5164) + - encoding-target: Validate that encoding profile name is UTF-8 before using it(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12068) + - gldownload: fix wrong DRM format negotiation causing R/B channel swap(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11997) + - opusdec: Don't use any channel positions for >64 channels(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12067) + - rtcpbuffer: Fix parsing of SR+SDES compound packets (regression from security fix)(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12033) + - subparse: Don't allow very small framerates for microdvd subtitles(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11852) + - typefind: assorted fixes for the image-rs plugin typefinding(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11972) + - typefindhelper: Drop unnecessary check for factories without a function(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12020) + - WBMP typefinding rejects a valid 1280x800 file(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5001) + - typefinding: detect animation on PNG (and WebP, GIF, AVIF)(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/4986) + - typefindfunctions: remove Sun and Andrew raster format typefinders(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11901) + - uridecodebin3: deactivate input_item in erroneous ready->paused transition(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11952) + - vorbistag: Check for enough base64 data before trying to decode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11856) + - xmptag: Don't allocate -1 bytes of memory if there's only a single tag(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11853) + - xmptag: Handle fractions with 0 denominator as invalid(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11922) + +#### gst-plugins-good + + - flacenc: Fix g_object_notify on loose-mid-side-stereo property(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11860) + - gdkpixbufdec: Drop rank to NONE and handle resolution/format changes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12060) + - gdkpixbufdec: stop advertising Sun and Andrew raster formats(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11901) + - gdkpixbufdec announces unsupported raster mediatypes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5004) + - matroskademux: Don't pass non-GstElement pointers to GST_ELEMENT_ERROR(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11918) + - matroska: Update lzo decompression implementation from latest ffmpeg(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12079) + - mp4mux: fix AC-3 template caps so muxer can accept input from ac3parse(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12028) + - pngdec: fix wrong macro being used for ICC support test(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11972) + - qtmoovrecover: Validate box sizes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12058) + - rtpceltdepay: error out if anyone tries to use this element(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12039) + - rtpjpegdepay: Ensure that quantization table is big enough(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12071) + - rtpsbcdepay: Check for available data in the adapter before getting data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12059) + - shapewipe: Fix missing mutex unlock in shutdown path(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12016) + - wavparse: Avoid NULL pointer dereference when parsing adtl in push mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12078) + +#### gst-plugins-bad + + - amcviddec: Fix double-free happening when codec gets reconfigured(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11902) + - avtp: Correct ptime generation from avtp timestamp(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11934) + - ccconverter: Use truncated length when converting CEA608 raw to CEA708 CDP(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12074) + - curlsmtpsink: Use the correct content-type if known(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11991) + - d3d12: Fix command list leak(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12006) + - dtlsconnection: Allocate large enough buffer for the peer certificate subject DN(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12076) + - h264parse: Check for enough slice header data being available(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11941) + - h2654parse: Unset GValue in every code path(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11921) + - h265decoder: Fix HEVC with alpha decoding(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11916) + - h266parser: Avoid out-of-bounds read if too many exp slices are signalled(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12069) + - h266parser: Check bounds before writing to CTU entrypoint array(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12070) + - h266parser: Check aspect ratio index against lookup table length(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11942) + - h266parser: Heap-allocate parameter sets before parse to avoid stack overflow(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11990) + - h266parser: Use long bit skipping function for potentially large values(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11920) + - mpeg4videoparse: Ensure enough config data is available before extracting profile/level(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12057) + - mpegpsdemux: Release stream lock when seeking fails(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11871) + - mpegtsmux: Always assign PTS to output buffers in CBR mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11955) + - mpegtsmux: Output buffers with PCR-only bitrate-padding packets have wrong PTS(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5151) + - mxfdemux: fix essence track offsets array population(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11892) + - netsim: Fix racy test failures(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11933) + - pcapparse: Add missing bounds checks to ensure packets are large enough(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11874) + - pnmdec: Avoid overflows when calculating frame sizes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11926) + - qroverlay: Fix use after free bug(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11960) + - rfbsrc: Use correct bpp for copying hextile data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12077) + - rfbsrc: Validate framebuffer update rectangles against the framebuffer size(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11868) + - rtmp2: Don't retry on G_IO_ERROR_TIMED_OUT(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11889) + - rtmp2: Remove socket timeout after handshake completes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11890) + - rtpsink: fix mutex not unlocked on invalid URI in set_property(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11949) + - tsdemux: YouTube HLS streams have intermittent corruption(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5141) + - tsdemux: Improve PTS rollover handling in ignore-pcr mode(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11905) + - v4l2decoder: Fix media_fd leak when video_fd open fails(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11999) + - va: surfacecopy: get surface's image in `gst_va_surface_copy`(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11935) + - va: VOBSUB: compositing error with VA decoder in NV12(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5014) + - va: radeonsi: subtitles cause green flickering(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/3906) + - va: radeonsi: Subtitles cause green flickering with VA decoders(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5165) + - videoparsers: Always clear LCEVC enhancement data when resetting frame(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11987) + - videoparsers: Leak of LCEVC user data(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5192) + - vnmdec: Avoid integer overflows when rectangle positions and sizes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11876) + - vp9parser: Check that enough data is available for parsing superframe info(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12073) + - webrtcbin: validate remote dtls certificates(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/11963) + - webrtcsdp: Fix inverted fingerprint existence logic(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12075) + +#### gst-plugins-ugly + + - asfdemux: Ensure that enough data is available for reading all replicated extensions(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12072) + +#### GStreamer Rust plugins + + - fmp4mux: Various fixes for splitting at fragment boundaries(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3130) + - gopbuffer: add support for H.266/VVC(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3138) + - onvifmeta2relatiometa: fix inversion between width and height(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3110) + - rtprecv: fix buffer list split handling(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3115) + - rtspsrc2: digest authentication fixes(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3139) + - rtspsrc2: Allow disabling SRTP/SRTCP encryption and SRTP authentication(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3148) + - textaccumulate: output joined single buffer, add list as meta(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3150) + - threadshare: add ts-clocksync(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3136) + - webrtcsink: add support for h264 profile constrained-high(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3126) + - webrtcsink: allow change of interlace-mode in the input caps(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3129) + - webrtcsink: allow renegotiation if caps is missing interlace-mode(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3128) + - webrtcsink: fix negotiation for nvh264enc in the GLMemory case(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3134) + - webrtcsink: read rav1enc bitrate as i32(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3113) + - webrtcsrc, webrtcsink: Fix SDP renegotiation bugs(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3098) + - Update dependencies(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3142) + +#### gst-libav + + - No changes + +#### gst-rtsp-server + + - No changes + +#### gstreamer-sharp + + - No changes + +#### gst-python + + - No changes + +#### gst-editing-services + + - tests: Implement assertion check macros as functions to speed up compilation(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12012) + +#### gst-devtools, gst-validate + gst-integration-testsuites + + - No changes + +#### gst-examples + + - No changes + +#### gstreamer-docs + + - No changes + +#### Development build environment + + - No changes + +#### Cerbero build tool and packaging changes in 1.28.5 + + - No changes + +#### Contributors to 1.28.5 + +Alexei Walisiewicz, Amy Ko, Arthur Chan, Benoît Mauduit, Christopher Meltzer, +Christoph Seitz, Daniel Morin, Diego Nieto, Dominique Leroux, Erik Strandh, +François Laignel, Gordon Smith, Jan Alexander Steffens (heftig), Jan Schmidt, +Jeehyun Lee, Jerome Colle, Julian Bouzas, L. E. Segovia, Marcus Hanestad, +Mathieu Duponchelle, Matthew Waters, Nirbheek Chauhan, Pablo García, +Philippe Normand, Piotr Brzeziński, Qi Hou, Sanchayan Maity, Sebastian Dröge, +Seungha Yang, Taruntej Kanakamalla, Thibault Saunier, Tim-Philipp Müller, +Tomas Granath, Víctor Manuel Jáquez Leal, Xavier Claessens, + +... and many others who have contributed bug reports, translations, sent +suggestions or helped testing. Thank you all! + +#### List of merge requests and issues fixed in 1.28.5 + +- List of Merge Requests applied in 1.28.5(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.5) +- List of Issues fixed in 1.28.5(https://gitlab.freedesktop.org/groups/gstreamer/-/work_items?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=1.28.5) ## Schedule for 1.30
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.