Projects
Essentials
gstreamer-plugins-ugly-codecs
Sign Up
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
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);
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) +
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
.