Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gstreamer for openSUSE:Factory checked in at 2026-05-13 17:18:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gstreamer (Old) and /work/SRC/openSUSE:Factory/.gstreamer.new.1966 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gstreamer" Wed May 13 17:18:32 2026 rev:122 rq:1352700 version:1.28.3 Changes: -------- --- /work/SRC/openSUSE:Factory/gstreamer/gstreamer.changes 2026-04-15 16:04:45.415458475 +0200 +++ /work/SRC/openSUSE:Factory/.gstreamer.new.1966/gstreamer.changes 2026-05-13 17:18:44.465807638 +0200 @@ -1,0 +2,49 @@ +Tue May 12 06:52:33 UTC 2026 - Bjørn Lie <[email protected]> + +- Update to version 1.28.3: + + Highlighted bugfixes: + - Various security fixes 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 + - aggregator: Fix documentation + - allocator: Use g_try_malloc() instead of g_malloc() for + sysmem + - baseparse: Fix memory leak when subclass returns error + - bitwriter: Allow unsetting set bits when overwriting them + - devicemonitor: Wait for start thread to finish when listing + devices + - streams: Add METADATA to the valid stream flags for + serialization + - value: On buffer deserialization errors first unmap the + buffer and then unref it + - gst-inspect-1.0: type for string caps fields should be + 'string' not 'gchararray' + +------------------------------------------------------------------- Old: ---- gstreamer-1.28.2.obscpio New: ---- gstreamer-1.28.3.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gstreamer.spec ++++++ --- /var/tmp/diff_new_pack.UmniVP/_old 2026-05-13 17:18:45.361845073 +0200 +++ /var/tmp/diff_new_pack.UmniVP/_new 2026-05-13 17:18:45.361845073 +0200 @@ -19,7 +19,7 @@ %define gst_branch 1.0 Name: gstreamer -Version: 1.28.2 +Version: 1.28.3 Release: 0 Summary: Streaming-Media Framework Runtime License: LGPL-2.1-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.UmniVP/_old 2026-05-13 17:18:45.425847748 +0200 +++ /var/tmp/diff_new_pack.UmniVP/_new 2026-05-13 17:18:45.429847914 +0200 @@ -5,7 +5,7 @@ <param name="url">https://gitlab.freedesktop.org/gstreamer/gstreamer.git</param> <param name="subdir">subprojects/gstreamer</param> <param name="filename">gstreamer</param> - <param name="revision">1.28.2</param> + <param name="revision">1.28.3</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionrewrite-pattern">v?(.*)\+0</param> <param name="versionrewrite-replacement">\1</param> ++++++ gstreamer-1.28.2.obscpio -> gstreamer-1.28.3.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/docs/meson.build new/gstreamer-1.28.3/docs/meson.build --- old/gstreamer-1.28.2/docs/meson.build 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/docs/meson.build 2026-05-11 19:28:12.000000000 +0200 @@ -17,6 +17,15 @@ subdir_done() endif +if get_option('check').disabled() + if get_option('doc').enabled() + error('Documentation enabled but not supported when gstcheck is disabled') + endif + + message('gstcheck is disabled, can\'t build the documentation') + subdir_done() +endif + hotdoc_plugin_scanner = executable('gst-hotdoc-plugins-scanner', 'gst-hotdoc-plugins-scanner.c', c_args : gst_c_args, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/gst/gstallocator.c new/gstreamer-1.28.3/gst/gstallocator.c --- old/gstreamer-1.28.2/gst/gstallocator.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/gst/gstallocator.c 2026-05-11 19:28:12.000000000 +0200 @@ -443,7 +443,7 @@ } slice_size = sizeof (GstMemorySystem) + maxsize; - mem = g_malloc (slice_size); + mem = g_try_malloc (slice_size); if (mem == NULL) return NULL; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/gst/gstdevicemonitor.c new/gstreamer-1.28.3/gst/gstdevicemonitor.c --- old/gstreamer-1.28.2/gst/gstdevicemonitor.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/gst/gstdevicemonitor.c 2026-05-11 19:28:12.000000000 +0200 @@ -105,6 +105,7 @@ { gboolean started; GThread *start_thread; + GCond started_cond; GstBus *bus; @@ -328,6 +329,7 @@ self->priv->started_providers = NULL; self->priv->started = FALSE; self->priv->start_thread = NULL; + g_cond_init (&self->priv->started_cond); self->priv->last_id = 1; } @@ -391,6 +393,8 @@ gst_object_replace ((GstObject **) & self->priv->bus, NULL); + g_cond_clear (&self->priv->started_cond); + G_OBJECT_CLASS (gst_device_monitor_parent_class)->dispose (object); } @@ -401,6 +405,9 @@ * Gets a list of devices from all of the relevant monitors. This may actually * probe the hardware if the monitor is not currently started. * + * Since 1.28.3, this function will block until the monitor has finished + * starting if gst_device_monitor_start() has been called. + * * Returns: (transfer full) (element-type GstDevice) (nullable): a #GList of * #GstDevice * @@ -420,6 +427,10 @@ GST_OBJECT_LOCK (monitor); + while (monitor->priv->start_thread != NULL) { + g_cond_wait (&monitor->priv->started_cond, GST_OBJECT_GET_LOCK (monitor)); + } + if (monitor->priv->filters->len == 0) { GST_OBJECT_UNLOCK (monitor); GST_WARNING_OBJECT (monitor, "No filters have been set"); @@ -557,6 +568,7 @@ } g_clear_pointer (&monitor->priv->start_thread, g_thread_unref); + g_cond_broadcast (&monitor->priv->started_cond); GST_OBJECT_UNLOCK (monitor); done: @@ -669,6 +681,7 @@ /* Steal GThread reference from the monitor */ thread = monitor->priv->start_thread; monitor->priv->start_thread = NULL; + g_cond_broadcast (&monitor->priv->started_cond); GST_OBJECT_UNLOCK (monitor); if (thread != NULL) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/gst/gstmacros.h new/gstreamer-1.28.3/gst/gstmacros.h --- old/gstreamer-1.28.2/gst/gstmacros.h 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/gst/gstmacros.h 2026-05-11 19:28:12.000000000 +0200 @@ -41,17 +41,6 @@ # undef GST_CAN_INLINE #endif -/* MSVC defines 'restrict' as a keyword and not a define */ -#if (!defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L) && !defined(restrict) -# if defined(__GNUC__) && __GNUC__ >= 4 -# define restrict __restrict__ -# elif defined(_MSC_VER) -# define restrict __restrict -# else -# define restrict -# endif -#endif - #if defined(G_DISABLE_CHECKS) #define GST_UNUSED_CHECKS G_GNUC_UNUSED #else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/gst/gstpad.c new/gstreamer-1.28.3/gst/gstpad.c --- old/gstreamer-1.28.2/gst/gstpad.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/gst/gstpad.c 2026-05-11 19:28:12.000000000 +0200 @@ -5172,6 +5172,8 @@ GST_CAT_LEVEL_LOG (GST_CAT_SCHEDULING, (ret >= GST_FLOW_EOS) ? GST_LEVEL_INFO : GST_LEVEL_WARNING, pad, "getrange failed, flow: %s", gst_flow_get_name (ret)); + if (*buffer == NULL) + gst_clear_buffer (&res_buf); return ret; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/gst/gststreams.c new/gstreamer-1.28.3/gst/gststreams.c --- old/gstreamer-1.28.2/gst/gststreams.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/gst/gststreams.c 2026-05-11 19:28:12.000000000 +0200 @@ -575,7 +575,8 @@ (GST_STREAM_TYPE_AUDIO \ | GST_STREAM_TYPE_VIDEO \ | GST_STREAM_TYPE_CONTAINER \ - | GST_STREAM_TYPE_TEXT) + | GST_STREAM_TYPE_TEXT \ + | GST_STREAM_TYPE_METADATA) if ((stype & (~_GST_STREAM_TYPE_ALL)) != 0) break; @@ -591,7 +592,8 @@ if ((stype & GST_STREAM_TYPE_METADATA) != 0) g_strlcat (str, "+metadata", sizeof (str)); - g_assert (str[0] != '\0'); + if (str[0] == '\0') + break; return g_intern_string (str + 1); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/gst/gstvalue.c new/gstreamer-1.28.3/gst/gstvalue.c --- old/gstreamer-1.28.2/gst/gstvalue.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/gst/gstvalue.c 2026-05-11 19:28:12.000000000 +0200 @@ -3663,12 +3663,13 @@ } map_failed: { + gst_buffer_unref (buffer); return FALSE; } wrong_char: { - gst_buffer_unref (buffer); gst_buffer_unmap (buffer, &info); + gst_buffer_unref (buffer); return FALSE; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/gstreamer.doap new/gstreamer-1.28.3/gstreamer.doap --- old/gstreamer-1.28.2/gstreamer.doap 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/gstreamer.doap 2026-05-11 19:28:12.000000000 +0200 @@ -40,6 +40,16 @@ <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/gstreamer/gstreamer-1.28.3.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.28.2</revision> <branch>1.28</branch> <name></name> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/libs/gst/base/gstaggregator.c new/gstreamer-1.28.3/libs/gst/base/gstaggregator.c --- old/gstreamer-1.28.2/libs/gst/base/gstaggregator.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/libs/gst/base/gstaggregator.c 2026-05-11 19:28:12.000000000 +0200 @@ -4162,6 +4162,8 @@ /** * gst_aggregator_update_segment: + * @self: A #GstAggregator + * @segment: The new #GstSegment * * Subclasses should use this to update the segment on their * source pad, instead of directly pushing new segment events @@ -4192,6 +4194,7 @@ /** * gst_aggregator_selected_samples: + * @self: A #GstAggregator * @pts: The presentation timestamp of the next output buffer * @dts: The decoding timestamp of the next output buffer * @duration: The duration of the next output buffer @@ -4228,6 +4231,7 @@ /** * gst_aggregator_set_ignore_inactive_pads: + * @self: A #GstAggregator * @ignore: whether inactive pads should not be waited on * * Subclasses should call this when they don't want to time out @@ -4251,6 +4255,7 @@ /** * gst_aggregator_get_ignore_inactive_pads: + * @self: A #GstAggregator * * Returns: whether inactive pads will not be waited on * Since: 1.20 @@ -4271,6 +4276,7 @@ /** * gst_aggregator_get_force_live: + * @self: A #GstAggregator * * Subclasses may use the return value to inform whether they should return * %GST_FLOW_EOS from their aggregate implementation. @@ -4287,6 +4293,8 @@ /** * gst_aggregator_set_force_live: + * @self: A #GstAggregator + * @force_live: The new value * * Subclasses should call this at construction time in order for @self to * aggregate on a timeout even when no live source is connected. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/libs/gst/base/gstbaseparse.c new/gstreamer-1.28.3/libs/gst/base/gstbaseparse.c --- old/gstreamer-1.28.2/libs/gst/base/gstbaseparse.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/libs/gst/base/gstbaseparse.c 2026-05-11 19:28:12.000000000 +0200 @@ -3250,6 +3250,7 @@ parse->priv->detect_buffers_size = 0; if (ret != GST_FLOW_OK) { + gst_buffer_unref (buffer); return ret; } @@ -3259,6 +3260,7 @@ if (parse->priv->drain) { GST_DEBUG_OBJECT (parse, "Draining but did not detect format yet"); + gst_buffer_unref (buffer); return GST_FLOW_ERROR; } else if (parse->priv->flushing) { g_list_foreach (parse->priv->detect_buffers, (GFunc) gst_buffer_unref, @@ -3274,6 +3276,12 @@ } } else { /* Something went wrong, subclass responsible for error reporting */ + gst_buffer_unref (buffer); + g_list_foreach (parse->priv->detect_buffers, (GFunc) gst_buffer_unref, + NULL); + g_list_free (parse->priv->detect_buffers); + parse->priv->detect_buffers = NULL; + parse->priv->detect_buffers_size = 0; return ret; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/libs/gst/base/gstbitwriter.c new/gstreamer-1.28.3/libs/gst/base/gstbitwriter.c --- old/gstreamer-1.28.2/libs/gst/base/gstbitwriter.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/libs/gst/base/gstbitwriter.c 2026-05-11 19:28:12.000000000 +0200 @@ -164,6 +164,8 @@ bitwriter->bit_size = (initialized) ? size << 3 : 0; bitwriter->auto_grow = FALSE; bitwriter->owned = FALSE; + if (!initialized) + memset (data, 0, size); } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/libs/gst/base/gstbitwriter.h new/gstreamer-1.28.3/libs/gst/base/gstbitwriter.h --- old/gstreamer-1.28.2/libs/gst/base/gstbitwriter.h 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/libs/gst/base/gstbitwriter.h 2026-05-11 19:28:12.000000000 +0200 @@ -178,28 +178,29 @@ ) \ { \ guint byte_pos, bit_offset; \ - guint8 *cur_byte; \ + guint8 *cur_byte, mask; \ guint fill_bits; \ \ byte_pos = (bitwriter->bit_size >> 3); \ bit_offset = (bitwriter->bit_size & 0x07); \ cur_byte = bitwriter->data + byte_pos; \ g_assert (nbits <= bits); \ - g_assert( bit_offset < 8 && \ + g_assert (bit_offset < 8 && \ bitwriter->bit_size <= bitwriter->bit_capacity); \ \ while (nbits) { \ fill_bits = ((8 - bit_offset) < nbits ? (8 - bit_offset) : nbits); \ nbits -= fill_bits; \ bitwriter->bit_size += fill_bits; \ + mask = _gst_bit_writer_bit_filling_mask[fill_bits] << (8 - bit_offset - fill_bits); \ \ - *cur_byte |= (((value >> nbits) & _gst_bit_writer_bit_filling_mask[fill_bits]) \ - << (8 - bit_offset - fill_bits)); \ + *cur_byte = ((*cur_byte) & (~mask)) | \ + (((value >> nbits) << (8 - bit_offset - fill_bits)) & mask); \ ++cur_byte; \ bit_offset = 0; \ } \ - g_assert(cur_byte <= \ - (bitwriter->data + (bitwriter->bit_capacity >> 3))); \ + g_assert (cur_byte <= \ + (bitwriter->data + (bitwriter->bit_capacity >> 3))); \ } __GST_BIT_WRITER_WRITE_BITS_UNCHECKED (8) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/libs/gst/check/gstcheck.c new/gstreamer-1.28.3/libs/gst/check/gstcheck.c --- old/gstreamer-1.28.2/libs/gst/check/gstcheck.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/libs/gst/check/gstcheck.c 2026-05-11 19:28:12.000000000 +0200 @@ -1104,16 +1104,9 @@ } } -/** - * gst_check_run_suite: (skip) - * @suite: the check test suite - * @name: name - * @fname: file name - * - * Returns: number of failed tests - */ -gint -gst_check_run_suite (Suite * suite, const gchar * name, const gchar * fname) +static gint +gst_check_run_suite_full (Suite * suite, const gchar * name, + const gchar * fname, gboolean fork_allowed) { SRunner *sr; gchar *xmlfilename = NULL; @@ -1121,6 +1114,8 @@ GTimer *timer; sr = srunner_create (suite); + if (!fork_allowed) + srunner_set_fork_status (sr, CK_NOFORK); if (g_getenv ("GST_CHECK_XML")) { /* how lucky we are to have __FILE__ end in .c */ @@ -1141,6 +1136,39 @@ return nf; } +/** + * gst_check_run_suite: (skip) + * @suite: the check test suite + * @name: name + * @fname: file name + * + * Returns: number of failed tests + */ +gint +gst_check_run_suite (Suite * suite, const gchar * name, const gchar * fname) +{ + return gst_check_run_suite_full (suite, name, fname, TRUE); +} + +/** + * gst_check_run_suite_nofork: (skip) + * @suite: the check test suite + * @name: name + * @fname: file name + * + * Runs a given test suite with fork usage explicitly disabled. + * + * Returns: number of failed tests + * + * Since: 1.28.3 + */ +gint +gst_check_run_suite_nofork (Suite * suite, const gchar * name, + const gchar * fname) +{ + return gst_check_run_suite_full (suite, name, fname, FALSE); +} + static gboolean gst_check_have_checks_list (const gchar * env_var_name) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/libs/gst/check/gstcheck.h new/gstreamer-1.28.3/libs/gst/check/gstcheck.h --- old/gstreamer-1.28.2/libs/gst/check/gstcheck.h 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/libs/gst/check/gstcheck.h 2026-05-11 19:28:12.000000000 +0200 @@ -191,6 +191,10 @@ const gchar * fname); GST_CHECK_API +gint gst_check_run_suite_nofork (Suite * suite, const gchar * name, + const gchar * fname); + +GST_CHECK_API void gst_check_setup_events (GstPad * srcpad, GstElement * element, GstCaps * caps, GstFormat format); @@ -741,6 +745,22 @@ return gst_check_run_suite (s, # name, __FILE__); \ } +/** + * GST_CHECK_MAIN_NOFORK: + * + * Runs a given test suite with fork usage explicitly disabled. + * + * Since: 1.30 + */ +#define GST_CHECK_MAIN_NOFORK(name) \ +int main (int argc, char **argv) \ +{ \ + Suite *s; \ + gst_check_init (&argc, &argv); \ + s = name ## _suite (); \ + return gst_check_run_suite_nofork (s, # name, __FILE__); \ +} + /* Hack to allow run-time selection of unit tests to run via the * GST_CHECKS environment variable (test function names globs, comma * separated), or GST_CHECKS_IGNORE with the same semantics */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/meson.build new/gstreamer-1.28.3/meson.build --- old/gstreamer-1.28.2/meson.build 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/meson.build 2026-05-11 19:28:12.000000000 +0200 @@ -1,8 +1,9 @@ project('gstreamer', 'c', - version : '1.28.2', + version : '1.28.3', 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('.') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/plugins/elements/gsttypefindelement.c new/gstreamer-1.28.3/plugins/elements/gsttypefindelement.c --- old/gstreamer-1.28.2/plugins/elements/gsttypefindelement.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/plugins/elements/gsttypefindelement.c 2026-05-11 19:28:12.000000000 +0200 @@ -1208,8 +1208,10 @@ /* Pull 4k blocks and send downstream */ ret = gst_pad_pull_range (typefind->sink, typefind->offset, 4096, &outbuf); - if (ret != GST_FLOW_OK) + if (ret != GST_FLOW_OK) { + gst_clear_buffer (&outbuf); goto pause; + } typefind->offset += gst_buffer_get_size (outbuf); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/tests/check/gst/gstdevice.c new/gstreamer-1.28.3/tests/check/gst/gstdevice.c --- old/gstreamer-1.28.2/tests/check/gst/gstdevice.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/tests/check/gst/gstdevice.c 2026-05-11 19:28:12.000000000 +0200 @@ -286,6 +286,11 @@ gst_device_provider_device_add (monitor, GST_DEVICE (iter->data)); } + /* This device is only added after starting the monitor. If the monitor is not + * started yet, only devices from gst_test_device_provider_probe() are + * available. */ + gst_device_provider_device_add (monitor, test_device_new ()); + /* Device references were floating, so were transferred in * gst_device_provider_device_add() */ g_list_free (devices); @@ -343,7 +348,7 @@ ck_assert (gst_device_provider_start (dp)); devs = gst_device_provider_get_devices (dp); - ck_assert_int_eq (g_list_length (devs), 1); + ck_assert_int_eq (g_list_length (devs), 2); g_list_free_full (devs, (GDestroyNotify) gst_object_unref); mydev = test_device_new (); @@ -357,8 +362,8 @@ devs = gst_device_provider_get_devices (dp); ASSERT_OBJECT_REFCOUNT (mydev, "dev", 3); - fail_unless_equals_int (g_list_length (devs), 2); - ck_assert_ptr_eq (devs->next->data, mydev); + fail_unless_equals_int (g_list_length (devs), 3); + ck_assert_ptr_eq (g_list_nth_data (devs, 2), mydev); g_list_free_full (devs, (GDestroyNotify) gst_object_unref); ASSERT_OBJECT_REFCOUNT (mydev, "dev", 2); @@ -371,6 +376,11 @@ msg = gst_bus_pop (bus); ck_assert_ptr_ne (msg, NULL); ck_assert (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_DEVICE_ADDED); + gst_message_unref (msg); + + msg = gst_bus_pop (bus); + ck_assert_ptr_ne (msg, NULL); + ck_assert (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_DEVICE_ADDED); gst_message_parse_device_added (msg, &dev); ck_assert_ptr_eq (dev, mydev); @@ -384,7 +394,7 @@ gst_device_provider_device_remove (dp, mydev); devs = gst_device_provider_get_devices (dp); - ck_assert_int_eq (g_list_length (devs), 1); + ck_assert_int_eq (g_list_length (devs), 2); g_list_free_full (devs, (GDestroyNotify) gst_object_unref); msg = gst_bus_pop (bus); @@ -472,7 +482,7 @@ ck_assert (gst_device_monitor_start (mon)); devs = gst_device_monitor_get_devices (mon); - ck_assert_int_eq (g_list_length (devs), 2); + ck_assert_int_eq (g_list_length (devs), 3); ck_assert (GST_IS_DEVICE (devs->data)); g_list_free_full (devs, (GDestroyNotify) gst_object_unref); @@ -494,6 +504,11 @@ msg = gst_bus_timed_pop (bus, GST_CLOCK_TIME_NONE); ck_assert_ptr_ne (msg, NULL); + ck_assert_int_eq (GST_MESSAGE_TYPE (msg), GST_MESSAGE_DEVICE_ADDED); + gst_message_unref (msg); + + msg = gst_bus_timed_pop (bus, GST_CLOCK_TIME_NONE); + ck_assert_ptr_ne (msg, NULL); ck_assert_int_eq (GST_MESSAGE_TYPE (msg), GST_MESSAGE_DEVICE_ADDED); gst_message_unref (msg); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/tests/check/libs/bitwriter.c new/gstreamer-1.28.3/tests/check/libs/bitwriter.c --- old/gstreamer-1.28.2/tests/check/libs/bitwriter.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/tests/check/libs/bitwriter.c 2026-05-11 19:28:12.000000000 +0200 @@ -105,6 +105,45 @@ GST_END_TEST; +GST_START_TEST (test_overwrite_data) +{ + GstBitWriter writer; + GstBitReader reader; + guint8 val_uint8 = 0; + guint16 val_uint16 = 0; + guint32 val_uint32 = 0; + guint64 val_uint64 = 0; + guint8 wdata[8] = { 0x00, 0xf1, 0xfe, 0xef, 0x11, 0x22, 0xae, 0xea }; + + gst_bit_writer_init_with_data (&writer, wdata, sizeof (wdata), TRUE); + gst_bit_writer_set_pos (&writer, 0); + fail_unless_equals_int (gst_bit_writer_get_remaining (&writer), 64); + + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x3f, 6)); + fail_unless (gst_bit_writer_put_bits_uint8 (&writer, 0x3, 2)); + fail_unless (gst_bit_writer_put_bits_uint16 (&writer, 0x15, 5)); + fail_unless (gst_bit_writer_put_bits_uint32 (&writer, 0x31, 10)); + fail_unless (gst_bit_writer_put_bits_uint64 (&writer, 0x45, 41)); + fail_unless (gst_bit_writer_align_bytes (&writer, 0)); + + gst_bit_reader_init (&reader, gst_bit_writer_get_data (&writer), 8); + fail_unless_equals_int (gst_bit_reader_get_size (&reader), 8 * 8); + fail_unless (gst_bit_reader_get_bits_uint8 (&reader, &val_uint8, 6)); + fail_unless_equals_int (val_uint8, 0x3f); + fail_unless (gst_bit_reader_get_bits_uint8 (&reader, &val_uint8, 2)); + fail_unless_equals_int (val_uint8, 0x3); + fail_unless (gst_bit_reader_get_bits_uint16 (&reader, &val_uint16, 5)); + fail_unless_equals_int_hex (val_uint16, 0x15); + fail_unless (gst_bit_reader_get_bits_uint32 (&reader, &val_uint32, 10)); + fail_unless_equals_int_hex (val_uint32, 0x31); + fail_unless (gst_bit_reader_get_bits_uint64 (&reader, &val_uint64, 41)); + fail_unless_equals_int_hex (val_uint64, 0x45); + + gst_bit_writer_reset (&writer); +} + +GST_END_TEST; + GST_START_TEST (test_reset) { GstBitWriter writer, *writer2; @@ -221,6 +260,7 @@ tcase_add_test (tc_chain, test_initialization); tcase_add_test (tc_chain, test_data); + tcase_add_test (tc_chain, test_overwrite_data); tcase_add_test (tc_chain, test_reset); tcase_add_test (tc_chain, test_reset_data_unaligned); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gstreamer-1.28.2/tools/gst-inspect.c new/gstreamer-1.28.3/tools/gst-inspect.c --- old/gstreamer-1.28.2/tools/gst-inspect.c 2026-04-07 21:02:23.000000000 +0200 +++ new/gstreamer-1.28.3/tools/gst-inspect.c 2026-05-11 19:28:12.000000000 +0200 @@ -194,7 +194,14 @@ static gboolean print_field (const GstIdStr * fieldname, const GValue * value, gpointer pfx) { - const gchar *type_name = g_type_name (G_VALUE_TYPE (value)); + const gchar *type_name; + + // gchararray -> string for caps fields + if (G_VALUE_HOLDS (value, G_TYPE_STRING)) { + type_name = "string"; + } else { + type_name = g_type_name (G_VALUE_TYPE (value)); + } if (G_VALUE_HOLDS (value, GST_TYPE_UNIQUE_LIST) && gst_value_unique_list_get_size (value) > 0) { ++++++ gstreamer.obsinfo ++++++ --- /var/tmp/diff_new_pack.UmniVP/_old 2026-05-13 17:18:46.597896714 +0200 +++ /var/tmp/diff_new_pack.UmniVP/_new 2026-05-13 17:18:46.609897216 +0200 @@ -1,5 +1,5 @@ name: gstreamer -version: 1.28.2 -mtime: 1775588543 -commit: 43421c2a5b8ac5cceb52b11749df40301e1de5c0 +version: 1.28.3 +mtime: 1778520492 +commit: 62d8936e70b11a2e21ea3c68b7672b675e142945
