Projects
Essentials
gstreamer-plugins-bad-codecs
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 51
View file
gstreamer-plugins-bad-codecs.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Wed Oct 14 22:27:31 UTC 2026 - Bjørn Lie <zaitor@opensuse.org> + +- Update to version 1.28.8 + +------------------------------------------------------------------- Thu Oct 8 12:39:19 UTC 2026 - Bjørn Lie <zaitor@opensuse.org> - Drop openaptx plugin (and BuildRequires), now available in
View file
gstreamer-plugins-bad-codecs.spec
Changed
@@ -7,7 +7,7 @@ %define _version 1.28.0 Name: gstreamer-plugins-bad-codecs -Version: 1.28.7 +Version: 1.28.8 Release: 0 Summary: Codecs/plugins for gstreamer-plugins-bad License: LGPL-2.1-or-later
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/ChangeLog -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/ChangeLog
Changed
@@ -1,3 +1,347 @@ +=== release 1.28.8 === + +2026-10-08 17:20:32 +0200 Tim-Philipp Müller <tim@centricular.com> + + * gst-plugins-bad.doap: + * meson.build: + Release 1.28.8 + +2026-06-19 09:43:52 -0400 Xavier Claessens <xclaessens@netflix.com> + + * gst-libs/gst/webrtc/nice/nice.c: + webrtc: nice: Fix crash when failing to get local credentials + `nice_agent_get_local_credentials()` can return TRUE while leaving + `ufrag` and `password` uninitialised. See: + https://gitlab.freedesktop.org/libnice/libnice/-/merge_requests/351 + Even when it returns FALSE, there is no guarantee that `ufrag` and + `password` have been set to NULL. Initialize them to NULL to avoid using + uninitialized memory. + Fixes: #5138 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12454> + +2026-09-22 16:56:55 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + + * tests/examples/vulkan/vulkanenc.c: + example: vulkanenc: fix string deallocation + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12573> + +2026-09-15 16:57:31 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + + * tests/check/libs/vkvideoencodeav1.c: + tests: vulkan: free parser only if it's instantiated + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12573> + +2026-09-22 18:04:56 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + + * ext/vulkan/vkh265dec.c: + vulkanh265dec: fix the level conversion + Because the numbers weren't correct. Regardless, in NVIDIA, fluster's number + remains the same. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12575> + +2026-09-22 18:05:16 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + + * ext/vulkan/vkh264dec.c: + vulkanh264dec: use level symbols rather numbers + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12575> + +2026-09-24 14:43:03 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + + * gst-libs/gst/vulkan/gstvkencoder-private.c: + vulkan: encoder: synchronize reference pictures before encoding + Add explicit dependency and frame barriers for each referenced DPB buffer, for + non-layered DPB buffer encoders. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12570> + +2026-09-10 18:01:43 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + + * gst-libs/gst/vulkan/gstvkencoder-private.c: + vulkan: encoder: release DPB slot 0 when clearing a picture + The encode path assigns slot indices starting at 0, but + gst_vulkan_encoder_picture_clear() only released slots whose index was > 0, so + any DBP picture bound to slot 0 is leaked. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12570> + +2026-10-08 12:50:00 +0900 Seungha Yang <seungha@centricular.com> + + * gst-libs/gst/hip/gsthipevent.cpp: + hipevent: Fix device ID getter + Return device ID instead of vendor ID + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12669> + +2026-09-23 21:17:02 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/closedcaption/gstcccombiner.c: + closedcaption: Use truncated length when converting CEA608 S334-1A data too + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5309 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12661> + +2026-09-23 19:22:19 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/closedcaption/ccutils.c: + closedcaption: Use truncated length when converting CEA708 data too + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5264 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12661> + +2026-10-01 16:04:49 -0700 Finlay Moss <fin@cofibrant.ai> + + * ext/rsvg/gstrsvgdec.c: + rsvgdec: Fix out-of-bounds read when scanning for SVG end tag + gst_rsvg_dec_parse() scans backwards for an end tag starting at + i = size - 6. That leaves room for the 6-byte "</svg>" comparison, but + the subsequent comparison against the 10-byte "</svg:svg>" literal reads + 10 bytes from data + i, which runs up to 4 bytes past the end of the + mapped adapter buffer for the first iterations (i > size - 10). + Guard the 10-byte memcmp with an explicit bounds check so it only runs + when at least 10 bytes are available from the current offset. + Found with ASan via the gst-discoverer fuzz target; reproducible with a + 41-byte SVG (e.g. '<svg xmlns="http://www.w3.org/2000/svg"/>'). + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12660> + +2026-10-07 11:43:10 +0900 Seungha Yang <seungha@centricular.com> + + * gst-libs/gst/hip/gsthipmemory.cpp: + hipmemory: Fix typo in doc + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12636> + +2026-10-07 12:05:18 +0900 Seungha Yang <seungha@centricular.com> + + * gst-libs/gst/hip/gsthipmemory.cpp: + hipmemory: Fix possible leak in GstAllocator::mem_copy + Add missing unref in error path + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12636> + +2026-10-03 16:07:31 +0900 Seungha Yang <seungha@centricular.com> + + * sys/nvcodec/gstnvh264dec.cpp: + nvh264dec: Fix top field POC in DPB entry + Fix copy/paste typo. Use top_field_order_cnt when filling + the top field POC from the complementary field. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12608> + +2022-04-13 13:42:14 +0000 Abdulla Anam <abduanam@amazon.com> + + * gst-libs/gst/mpegts/gst-atsc-section.c: + mpegts: fix GError usage in a loop + After the first error occurred, the variable wasn't re-initialized to + NULL for subsequent iterations. + Also narrow the scope of the err variable. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12605> + +2026-10-01 10:40:32 -0600 Jeremy Whiting <jeremy.whiting@collabora.com> + + * ext/analyticsoverlay/gstobjectdetectionoverlay.c: + * ext/analyticsoverlay/gstsegmentationoverlay.c: + analyticsoverlay: Clear pointers in stop to not leak + A CI valgrind test saw object detection overlay isn't properly + clearing the composition pointer. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12595> + +2026-09-29 07:44:04 -0600 Jeremy Whiting <jeremy.whiting@collabora.com> + + * ext/analyticsoverlay/gstsegmentationoverlay.c: + * tests/check/elements/segmentationoverlay.c: + * tests/check/meson.build: + segmentationoverlay: Fix off-by-one bug and add test + Every canvas row was drawn from the mask row meant + for the row below, and the last row was never written, + so it showed uninitialized memory. + The row pointers are now set before each row is drawn instead + of after. + It was introduced in + 2ce06a7736 "segmentationoverlay: Respect video meta strides". + Also adds a test to check that it doesn't regress later. + This bug also is on 1.28 so should be cherry-picked there. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12595> + +2026-09-24 01:28:35 +1000 Jan Schmidt <jan@centricular.com> + + * ext/analyticsoverlay/gstsegmentationoverlay.c: + segmentationoverlay: Respect video meta strides + Don't assume tightly packed data when reading or generating + video buffers. We have video meta, and can use the correct + stride + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12566> + +2026-05-20 13:12:15 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * sys/va/gstvafilter.c: + va: compositor: Fix alpha blending with Intel driver + On Intel driver, the driver will only perform a blend rather then a copy if the + blend state pointer is not null. Pass a pointer to a zero-initialized blend + state in order to enable alpha blending by default. + Fixes #5114 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12557> + +2026-09-25 18:49:16 +0100 Tim-Philipp Müller <tim@centricular.com> + + * ext/vmaf/gstvmafelement.c: + vmaf: use GST_PARAM_DOC_SHOW_DEFAULT for "threads" property + .. so that when the docs get regenerated it doesn't just put in + the number of cores of whatever the CI runner happens to have at + the time. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12556> + +2026-09-25 18:47:29 +0100 Tim-Philipp Müller <tim@centricular.com> + + * ext/vmaf/gstvmafelement.c: + vmaf: use G_PARAM_STATIC_STRINGS for property registrations + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12556> + +2026-03-25 13:21:57 +0000 Tim-Philipp Müller <tim@centricular.com> + + * docs/plugins/gst_plugins_cache.json: + * ext/vmaf/gstvmafelement.c: + vmaf: change "threads" property default to 0 for automatic + .. determination of number of machine CPUs. + Fixes hard-coding the CPU value of the CI runner in the docs. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12556> + +2026-09-24 12:08:36 +0300 Vivia Nikolaidou <vivia@ahiru.eu> + + * gst/closedcaption/ccutils.c: + ccutils: Fix dead code + cc_type was the result of a "& 0x03" operation and then was checked against "& + 0x10", resulting in the check result being dead code, and as a result, a valid + cea608 triplet appearing after a valid cea708 triplet was not discarded as it + should. + The correct value to compare against is 0x02, so the bug was likely the result + of binary vs hex confusion. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12543> + +2026-09-24 12:04:38 +0300 Vivia Nikolaidou <vivia@ahiru.eu> + + * gst/closedcaption/ccutils.c: + ccutils: Fix loop pair parsing indexing + The loop was parsing pairs of data but advancing one item at a time, resulting + in {1, 2, 3, 4} being parsed as {1, 2} and then {2, 3}, resulting in some items + being duplicated and other items being dropped. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12543> + +2026-09-23 10:20:00 +0300 Sebastian Dröge <sebastian@centricular.com> + + * ext/avtp/gstavtpcvfdepay.c: + avtpcvfdepay: Check that enough data is available for reading the H.264 NAL type + Validated packets are always passed to gst_avtp_cvf_depay_get_nal_type() + afterwards, which is reading the first byte to get the NAL type. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12533> + +2026-09-23 10:23:11 +0300 Sebastian Dröge <sebastian@centricular.com> + + * ext/avtp/gstavtprvfdepay.c: + avtprvfdepay: Check that enough data is available for the timestamp and a non-zero fragment size + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12533> + +2026-09-23 09:49:57 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/gdp/dataprotocol.c: + gdp: Check for enough available data before parsing GDP 0.2 seek event + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12533> + +2026-09-22 19:18:34 +0100 Tim-Philipp Müller <tim@centricular.com> + + * gst/jpegformat/gstjpegparse.c: + jpegparse: handle missing NUL terminator in COM segment + Best not to assume that there is a NUL terminator in the segment data. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12526> + +2026-09-20 02:01:30 +0200 Maksim Nikolaev <maksim.nikolaev.dev@gmail.com> + + * sys/amfcodec/gstamfav1enc.cpp: + amfav1enc: Force a key frame on force-key-unit + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12524> + +2026-09-21 10:54:22 +0000 Bruno Fournier <xxtqqtx@gmail.com> + + * gst/adpcmenc/adpcmenc.c: + adpcmenc: reject block sizes that are not a multiple of the chunk size + The IMA encode loop processes 8 samples (4 bytes) per channel per iteration, + so the block must hold the per-channel header plus a whole number of those + chunks. A block size where (block_size - 4 * channels) is not a multiple of + 4 * channels would leave a partial, uninitialized chunk in the output and + does not correspond to any real ADPCM stream. Reject such configurations in + _setup instead of producing a malformed block. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12515> + +2026-09-20 18:50:51 +0000 Bruno Fournier <xxtqqtx@gmail.com> + + * gst/adpcmenc/adpcmenc.c: + adpcmenc: stop the IMA encode loop before reading past the input frame + The while (write_pos < blocksize) loop advances output in fixed + 4 * channels-byte steps and input in CHANNEL_CHUNK_SIZE * channels-sample + steps. When blocksize - HEADER_SIZE * channels is not a multiple of + 4 * channels, the final iteration reads beyond the samples_per_block * + channels samples the base class guarantees, causing an out-of-bounds read + on the input frame (the case the existing "Ran past the end." log flagged). + Bound the loop so it never reads past the available input. The default + blockalign=1024 path is already aligned and is unchanged. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12515> + +2026-09-14 15:36:03 +0200 Piotr Brzeziński <piotr@centricular.com> + + * gst/mxf/mxfmux.c: + mxfmux: Fix possible crash when adding a new segment due to frame reordering + A simple pipeline such as videotestsrc ! x264enc ! queue ! mxfmux ! + fakesink can easily segfault if mxfmux has to add a 'future' segment due + to frame reordering, and the g_array_append_val() call happens to move + the array elsewhere in memory, invalidating our segment pointer. + The fix is simply one more g_array_index() call to get a fresh pointer, + same as it's already done above after the 'normal' segment addition + block. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12506> + +2026-09-14 10:59:39 +0900 Seungha Yang <seungha@centricular.com> + + * sys/d3d12/gstd3d12convert.cpp: + d3d12convert: Fix caps transformation with overlay features + Check for D3D12 memory using contains instead of exact feature + equality when transforming caps + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12480> + +2026-09-13 14:08:48 +0900 Seungha Yang <seungha@centricular.com> + + * sys/d3d12/gstd3d12convert.cpp: + d3d12convert: Handle meta transform + Transform metas depending on geometry changes, instead of + letting it be silently dropped by basetransform + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12480> + +2026-09-13 14:31:04 +0900 Seungha Yang <seungha@centricular.com> + + * sys/d3d12/gstd3d12memorycopy.cpp: + d3d12upload, d3d12download: Preserve overlay composition meta + This behavior wasn't ported when this new upload/download were reimplemented + in https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7119 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12480> + +2026-09-13 14:18:09 +0900 Seungha Yang <seungha@centricular.com> + + * sys/d3d12/gstd3d12memorycopy.cpp: + d3d12upload, d3d12download: Preserve metas with known video tags + Upload and download perform only memory copies without transforms, + so metas with known video tags can be preserved + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12480> + +2026-09-13 15:11:23 +0900 Seungha Yang <seungha@centricular.com> + + * sys/d3d12/gstd3d12basefilter.cpp: + d3d12basefilter: Preserve metas with known video tags + Preserve metas with known video tags by default, with subclass + filtering out or transforming them as needed + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12480> + +2026-05-18 20:48:19 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/mxf/mxfaes-bwf.c: + mxfdemux: Add support for reading AAF AIFF-AIFC audio + This is effectively the same as BWF but with different labels. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12453> + +2026-09-07 20:17:18 +0100 Tim-Philipp Müller <tim@centricular.com> + + * meson.build: + Back to development after 1.28.7 + === release 1.28.7 === 2026-09-07 20:11:13 +0100 Tim-Philipp Müller <tim@centricular.com>
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/RELEASE -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/RELEASE
Changed
@@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-bad 1.28.7 +This is GStreamer gst-plugins-bad 1.28.8 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-bad-1.28.7.tar.xz/docs/plugins/gst_plugins_cache.json -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/docs/plugins/gst_plugins_cache.json
Changed
@@ -256062,12 +256062,12 @@ "writable": true }, "threads": { - "blurb": "The number of threads", + "blurb": "The number of threads (0 = automatic)", "conditionally-available": false, "construct": false, "construct-only": false, "controllable": false, - "default": "8", + "default": "0", "max": "2147483647", "min": "0", "mutable": "null",
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/ext/analyticsoverlay/gstobjectdetectionoverlay.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/ext/analyticsoverlay/gstobjectdetectionoverlay.c
Changed
@@ -714,6 +714,7 @@ g_clear_object (&overlay->pango_layout); g_clear_object (&overlay->pango_context); gst_clear_buffer (&overlay->canvas); + g_clear_pointer (&overlay->composition, gst_video_overlay_composition_unref); return TRUE; }
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/ext/analyticsoverlay/gstsegmentationoverlay.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/ext/analyticsoverlay/gstsegmentationoverlay.c
Changed
@@ -540,6 +540,8 @@ { GstSegmentationOverlay *overlay = GST_SEGMENTATION_OVERLAY (trans); gst_clear_buffer (&overlay->canvas); + g_clear_pointer (&overlay->composition, gst_video_overlay_composition_unref); + overlay->upstream_composition = NULL; g_free (overlay->color_table); overlay->color_table = NULL; g_free (overlay->mask_filter); @@ -638,8 +640,13 @@ GST_VIDEO_OVERLAY_COMPOSITION_FORMAT_RGB, canvas_w, canvas_h); /* Allocate buffer to store canvas */ canvas = gst_buffer_new_and_alloc (canvas_info.size); - cvmeta = gst_buffer_add_video_meta (canvas, GST_VIDEO_FRAME_FLAG_NONE, - GST_VIDEO_OVERLAY_COMPOSITION_FORMAT_RGB, canvas_w, canvas_h); + cvmeta = gst_buffer_add_video_meta_full (canvas, + GST_VIDEO_FRAME_FLAG_NONE, + GST_VIDEO_INFO_FORMAT (&canvas_info), + GST_VIDEO_INFO_WIDTH (&canvas_info), + GST_VIDEO_INFO_HEIGHT (&canvas_info), + GST_VIDEO_INFO_N_PLANES (&canvas_info), + canvas_info.offset, canvas_info.stride); /* Keep an handle on canvas to free it if required */ gst_buffer_replace (&overlay->canvas, canvas); @@ -735,11 +742,11 @@ static void gst_segmentation_overlay_resampling (GstSegmentationOverlay * overlay, - gint32 * canvas_data, guint8 * mask_data, GstVideoMeta * cvmeta, + guint8 * canvas_data, guint8 * mask_data, GstVideoMeta * cvmeta, GstVideoMeta * mvmeta) { gsize mask_col_idx, mask_line_idx, last_mask_line_idx = -1; - gint32 *cline = canvas_data, *pcline = NULL; + gint32 *cline = (gint32 *) canvas_data, *pcline = NULL; guint8 *mline = mask_data; gsize color_count = overlay->color_table_size + 1; guint32 *color_table = overlay->color_table; @@ -749,8 +756,10 @@ #define MASK_FILTER(val) (mask_filter == NULL || mask_filter mline val) for (gint cl = 0; cl < cvmeta->height; cl++) { + cline = (gint32 *) (canvas_data + cl * cvmeta->stride0); mask_line_idx = (cl * mvmeta->height) / cvmeta->height; if (last_mask_line_idx != mask_line_idx) { + mline = mask_data + (mask_line_idx * mvmeta->stride0); mask_col_idx = 0; for (gint cc = 0; cc < cvmeta->width; cc++) { mask_col_idx = (cc * mvmeta->width) / cvmeta->width; @@ -760,16 +769,14 @@ clinecc = overlay->bg_color; } } + last_mask_line_idx = mask_line_idx; + pcline = cline; } else { /* If current line would be generate from the same line from the mask * as the previous line in canvas we can simply copy the previous * line into the current line */ memcpy (cline, pcline, sizeof (guint32) * cvmeta->width); } - last_mask_line_idx = mask_line_idx; - pcline = cline; - cline += cvmeta->width; - mline = (mask_line_idx * mvmeta->width) + mask_data; } } @@ -789,7 +796,7 @@ gst_buffer_map (mask, &mmap, GST_MAP_READ); gst_segmentation_overlay_resampling (overlay, - (gint32 *) cmap->data, mmap.data, cvmeta, mvmeta); + cmap->data, mmap.data, cvmeta, mvmeta); gst_buffer_unmap (mask, &mmap); } gst_buffer_unref (mask);
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/ext/avtp/gstavtpcvfdepay.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/ext/avtp/gstavtpcvfdepay.c
Changed
@@ -196,6 +196,15 @@ goto end; } + /* The H.264 NAL unit type is read from the first byte of h264_data, so we + * need at least one byte of H.264 data in addition to the header */ + if (G_UNLIKELY (map->size < AVTP_CVF_H264_HEADER_SIZE + 1)) { + GST_DEBUG_OBJECT (avtpcvfdepay, + "Incomplete H.264 payload, expected it to have size of %zd, got %zd", + AVTP_CVF_H264_HEADER_SIZE + 1, map->size); + goto end; + } + pdu = (struct avtp_stream_pdu *) map->data; r = avtp_pdu_get ((struct avtp_common_pdu *) pdu, AVTP_FIELD_SUBTYPE, &val32);
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/ext/avtp/gstavtprvfdepay.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/ext/avtp/gstavtprvfdepay.c
Changed
@@ -307,6 +307,14 @@ goto end; } + if (G_UNLIKELY (val <= sizeof (uint64_t))) { + GST_DEBUG_OBJECT (avtprvfdepay, + "Stream data length %" G_GUINT64_FORMAT + " too small, must be greater than %" G_GSIZE_FORMAT, + val, sizeof (uint64_t)); + goto end; + } + GST_DEBUG_OBJECT (avtprvfdepay, "Data length of the video format %" G_GSIZE_FORMAT, val); avtprvfdepay->stream_data_length = (guint) val;
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/ext/rsvg/gstrsvgdec.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/ext/rsvg/gstrsvgdec.c
Changed
@@ -358,7 +358,7 @@ size = i + 6; break; } - if (memcmp (data + i, "</svg:svg>", 10) == 0) { + if (i + 10 <= size && memcmp (data + i, "</svg:svg>", 10) == 0) { completed = TRUE; size = i + 10; break;
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/ext/vmaf/gstvmafelement.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/ext/vmaf/gstvmafelement.c
Changed
@@ -119,7 +119,7 @@ #define DEFAULT_MS_SSIM FALSE #define DEFAULT_FRAME_MESSAGING FALSE #define DEFAULT_POOL_METHOD VMAF_POOL_METHOD_MEAN -#define DEFAULT_NUM_THREADS g_get_num_processors() +#define DEFAULT_NUM_THREADS 0 #define DEFAULT_SUBSAMPLE 1 #define DEFAULT_CONF_INT FALSE #define DEFAULT_VMAF_LOG_LEVEL VMAF_LOG_LEVEL_NONE @@ -338,11 +338,16 @@ gboolean result = TRUE; VmafFeatureDictionary *d = NULL; enum VmafModelFlags flags = VMAF_MODEL_FLAGS_DEFAULT; + guint n_threads = self->vmaf_config_num_threads; + + if (n_threads == 0) { + n_threads = g_get_num_processors (); + } + VmafModelConfig model_cfg = { 0 }; VmafConfiguration cfg = { .log_level = self->vmaf_config_log_level, - .n_threads = - self->vmaf_config_frame_messaging ? 0 : self->vmaf_config_num_threads, + .n_threads = self->vmaf_config_frame_messaging ? 0 : n_threads, .n_subsample = self->vmaf_config_subsample, }; @@ -1111,36 +1116,41 @@ g_param_spec_string ("model-filename", "model-filename", "Model *.pkl abs filename, or file version for built in models", - DEFAULT_MODEL_FILENAME, G_PARAM_READWRITE)); + DEFAULT_MODEL_FILENAME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_DISABLE_CLIP, g_param_spec_boolean ("disable-clip", "disable-clip", "Disable clipping VMAF values", - DEFAULT_DISABLE_CLIP, G_PARAM_READWRITE)); + DEFAULT_DISABLE_CLIP, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_ENABLE_TRANSFORM, g_param_spec_boolean ("enable-transform", "enable-transform", "Enable transform VMAF scores", - DEFAULT_ENABLE_TRANSFORM, G_PARAM_READWRITE)); + DEFAULT_ENABLE_TRANSFORM, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_PHONE_MODEL, g_param_spec_boolean ("phone-model", "phone-model", - "Use VMAF phone model", DEFAULT_PHONE_MODEL, G_PARAM_READWRITE)); + "Use VMAF phone model", DEFAULT_PHONE_MODEL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_PSNR, g_param_spec_boolean ("psnr", "psnr", - "Estimate PSNR", DEFAULT_PSNR, G_PARAM_READWRITE)); + "Estimate PSNR", DEFAULT_PSNR, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_SSIM, g_param_spec_boolean ("ssim", "ssim", - "Estimate SSIM", DEFAULT_SSIM, G_PARAM_READWRITE)); + "Estimate SSIM", DEFAULT_SSIM, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_MS_SSIM, g_param_spec_boolean ("ms-ssim", "ms-ssim", - "Estimate MS-SSIM", DEFAULT_MS_SSIM, G_PARAM_READWRITE)); + "Estimate MS-SSIM", DEFAULT_MS_SSIM, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_POOL_METHOD, g_param_spec_enum ("pool-method", "pool-method", @@ -1150,31 +1160,36 @@ g_object_class_install_property (gobject_class, PROP_NUM_THREADS, g_param_spec_uint ("threads", "threads", - "The number of threads", - 0, G_MAXINT, DEFAULT_NUM_THREADS, G_PARAM_READWRITE)); + "The number of threads (0 = automatic)", + 0, G_MAXINT, DEFAULT_NUM_THREADS, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | + GST_PARAM_DOC_SHOW_DEFAULT)); g_object_class_install_property (gobject_class, PROP_SUBSAMPLE, g_param_spec_uint ("subsample", "subsample", "Computing on one of every N frames", - 1, 128, DEFAULT_SUBSAMPLE, G_PARAM_READWRITE)); + 1, 128, DEFAULT_SUBSAMPLE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_CONF_INT, g_param_spec_boolean ("conf-interval", "conf-interval", - "Enable confidence intervals", DEFAULT_CONF_INT, G_PARAM_READWRITE)); + "Enable confidence intervals", DEFAULT_CONF_INT, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_FRAME_MESSAGING, g_param_spec_boolean ("frame-message", "frame-message", "Enable frame level score messaging", DEFAULT_FRAME_MESSAGING, - G_PARAM_READWRITE)); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_VMAF_RESULTS_FILENAME, g_param_spec_string ("results-filename", "results-filename", "VMAF results filename for scores", - DEFAULT_VMAF_RESULTS_FILENAME, G_PARAM_READWRITE)); + DEFAULT_VMAF_RESULTS_FILENAME, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_VMAF_RESULTS_FORMAT, g_param_spec_enum ("results-format", "results-format",
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/ext/vulkan/vkh264dec.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/ext/vulkan/vkh264dec.c
Changed
@@ -512,44 +512,45 @@ _get_h264_level_idc (int level_idc) { switch (level_idc) { - case 10: + case GST_H264_LEVEL_L1: + case GST_H264_LEVEL_L1B: return STD_VIDEO_H264_LEVEL_IDC_1_0; - case 11: + case GST_H264_LEVEL_L1_1: return STD_VIDEO_H264_LEVEL_IDC_1_1; - case 12: + case GST_H264_LEVEL_L1_2: return STD_VIDEO_H264_LEVEL_IDC_1_2; - case 13: + case GST_H264_LEVEL_L1_3: return STD_VIDEO_H264_LEVEL_IDC_1_3; - case 20: + case GST_H264_LEVEL_L2: return STD_VIDEO_H264_LEVEL_IDC_2_0; - case 21: + case GST_H264_LEVEL_L2_1: return STD_VIDEO_H264_LEVEL_IDC_2_1; - case 22: + case GST_H264_LEVEL_L2_2: return STD_VIDEO_H264_LEVEL_IDC_2_2; - case 30: + case GST_H264_LEVEL_L3: return STD_VIDEO_H264_LEVEL_IDC_3_0; - case 31: + case GST_H264_LEVEL_L3_1: return STD_VIDEO_H264_LEVEL_IDC_3_1; - case 32: + case GST_H264_LEVEL_L3_2: return STD_VIDEO_H264_LEVEL_IDC_3_2; - case 40: + case GST_H264_LEVEL_L4: return STD_VIDEO_H264_LEVEL_IDC_4_0; - case 41: + case GST_H264_LEVEL_L4_1: return STD_VIDEO_H264_LEVEL_IDC_4_1; - case 42: + case GST_H264_LEVEL_L4_2: return STD_VIDEO_H264_LEVEL_IDC_4_2; - case 50: + case GST_H264_LEVEL_L5: return STD_VIDEO_H264_LEVEL_IDC_5_0; - case 51: + case GST_H264_LEVEL_L5_1: return STD_VIDEO_H264_LEVEL_IDC_5_1; - case 52: + case GST_H264_LEVEL_L5_2: return STD_VIDEO_H264_LEVEL_IDC_5_2; - case 60: + case GST_H264_LEVEL_L6: return STD_VIDEO_H264_LEVEL_IDC_6_0; - case 61: + case GST_H264_LEVEL_L6_1: return STD_VIDEO_H264_LEVEL_IDC_6_1; default: - case 62: + case GST_H264_LEVEL_L6_2: return STD_VIDEO_H264_LEVEL_IDC_6_2; } }
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/ext/vulkan/vkh265dec.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/ext/vulkan/vkh265dec.c
Changed
@@ -744,32 +744,32 @@ _get_h265_level_idc (int level_idc) { switch (level_idc) { - case 10: + case GST_H265_LEVEL_L1: return STD_VIDEO_H265_LEVEL_IDC_1_0; - case 20: + case GST_H265_LEVEL_L2: return STD_VIDEO_H265_LEVEL_IDC_2_0; - case 21: + case GST_H265_LEVEL_L2_1: return STD_VIDEO_H265_LEVEL_IDC_2_1; - case 30: + case GST_H265_LEVEL_L3: return STD_VIDEO_H265_LEVEL_IDC_3_0; - case 31: + case GST_H265_LEVEL_L3_1: return STD_VIDEO_H265_LEVEL_IDC_3_1; - case 40: + case GST_H265_LEVEL_L4: return STD_VIDEO_H265_LEVEL_IDC_4_0; - case 41: + case GST_H265_LEVEL_L4_1: return STD_VIDEO_H265_LEVEL_IDC_4_1; - case 50: + case GST_H265_LEVEL_L5: return STD_VIDEO_H265_LEVEL_IDC_5_0; - case 51: + case GST_H265_LEVEL_L5_1: return STD_VIDEO_H265_LEVEL_IDC_5_1; - case 52: + case GST_H265_LEVEL_L5_2: return STD_VIDEO_H265_LEVEL_IDC_5_2; - case 60: + case GST_H265_LEVEL_L6: return STD_VIDEO_H265_LEVEL_IDC_6_0; - case 61: + case GST_H265_LEVEL_L6_1: return STD_VIDEO_H265_LEVEL_IDC_6_1; default: - case 62: + case GST_H265_LEVEL_L6_2: return STD_VIDEO_H265_LEVEL_IDC_6_2; } }
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst-libs/gst/hip/gsthipevent.cpp -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst-libs/gst/hip/gsthipevent.cpp
Changed
@@ -267,7 +267,7 @@ { g_return_val_if_fail (event, G_MAXUINT); - return event->vendor; + return event->device_id; } /**
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst-libs/gst/hip/gsthipmemory.cpp -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst-libs/gst/hip/gsthipmemory.cpp
Changed
@@ -490,6 +490,7 @@ GST_ERROR_OBJECT (self, "Failed to set device"); gst_memory_unmap (mem, &src_info); gst_memory_unmap (copy, &dst_info); + gst_memory_unref (copy); return nullptr; } @@ -863,7 +864,7 @@ /** * gst_hip_allocator_set_active: - * @allocator: a #GstCudaAllocator + * @allocator: a #GstHipAllocator * @active: the new active state * * Controls the active state of @allocator.
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst-libs/gst/mpegts/gst-atsc-section.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst-libs/gst/mpegts/gst-atsc-section.c
Changed
@@ -140,7 +140,6 @@ guint32 tmp32; guint16 descriptors_loop_length, tmp16; guint i; - GError *err = NULL; vct = g_new0 (GstMpegtsAtscVCT, 1); @@ -167,6 +166,7 @@ for (i = 0; i < source_nb; i++) { GstMpegtsAtscVCTSource *source; + GError *err = NULL; /* minimum 32 bytes for a entry, 2 bytes second descriptor loop-length, 4 bytes crc */ @@ -182,7 +182,7 @@ GST_WARNING ("Failed to convert VCT Source short_name to utf-8: %d %s", err->code, err->message); GST_MEMDUMP ("UTF-16 string", data, 14); - g_error_free (err); + g_clear_error (&err); } data += 14;
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst-libs/gst/vulkan/gstvkencoder-private.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst-libs/gst/vulkan/gstvkencoder-private.c
Changed
@@ -222,6 +222,9 @@ size_aligned = GST_ROUND_UP_N (size, priv->caps.caps.minBitstreamBufferSizeAlignment); + /* No slot attributed yet; -1 avoids releasing a live slot in clear(). */ + pic->dpb_slot.slotIndex = -1; + if (priv->layered_dpb) { g_assert (priv->layered_buffer); pic->dpb_buffer = gst_buffer_ref (priv->layered_buffer); @@ -275,7 +278,7 @@ priv = gst_vulkan_encoder_get_instance_private (self); - if (pic->dpb_slot.slotIndex > 0) { + if (pic->dpb_slot.slotIndex >= 0) { priv->slotspic->dpb_slot.slotIndex = NULL; pic->dpb_slot.slotIndex = -1; } @@ -1040,6 +1043,24 @@ priv->callbacks_user_data); } +static gboolean +_add_dpb_dependency_and_barrier (GstVulkanOperation * exec, GstBuffer * buffer, + VkAccessFlags2 access) +{ + if (!gst_vulkan_operation_add_dependency_frame (exec, buffer, + VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, + VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR)) + return FALSE; + + if (!gst_vulkan_operation_add_frame_barrier (exec, buffer, + VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, + VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, access, + VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR, NULL)) + return FALSE; + + return TRUE; +} + /** * gst_vulkan_encoder_encode: * @self: a #GstVulkanEncoder @@ -1216,14 +1237,16 @@ VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR, VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR, NULL); - gst_vulkan_operation_add_dependency_frame (priv->exec, pic->dpb_buffer, - VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, - VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR); - gst_vulkan_operation_add_frame_barrier (priv->exec, pic->dpb_buffer, - VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, - VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, - VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR, - VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR, NULL); + /* this also adds the layered dpb if it's the case */ + _add_dpb_dependency_and_barrier (priv->exec, pic->dpb_buffer, + VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR); + + if (!priv->layered_dpb) { + for (i = 0; i < nb_refs; i++) { + _add_dpb_dependency_and_barrier (priv->exec, ref_picsi->dpb_buffer, + VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR); + } + } barriers = gst_vulkan_operation_retrieve_image_barriers (priv->exec);
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst-libs/gst/webrtc/nice/nice.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst-libs/gst/webrtc/nice/nice.c
Changed
@@ -636,13 +636,14 @@ { if (!candidate->username || !candidate->password) { - gboolean got_credentials; - gchar *ufrag, *password; + gchar *ufrag = NULL, *password = NULL; - got_credentials = - nice_agent_get_local_credentials (agent, candidate->stream_id, &ufrag, - &password); - g_warn_if_fail (got_credentials); + if (!nice_agent_get_local_credentials (agent, candidate->stream_id, &ufrag, + &password)) { + g_warning ("Failed to get local credentials for stream %u", + candidate->stream_id); + return; + } if (!candidate->username) candidate->username = ufrag;
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst-plugins-bad.doap -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst-plugins-bad.doap
Changed
@@ -35,6 +35,16 @@ <release> <Version> + <revision>1.28.8</revision> + <branch>1.28</branch> + <name></name> + <created>2026-10-08</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.28.8.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.28.7</revision> <branch>1.28</branch> <name></name>
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst/adpcmenc/adpcmenc.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst/adpcmenc/adpcmenc.c
Changed
@@ -152,6 +152,19 @@ switch (enc->layout) { case LAYOUT_ADPCM_DVI: layout = "dvi"; + /* The encode loop writes 4 bytes per channel (8 samples) per + * iteration, so the block must hold the per-channel header plus a + * whole number of those chunks. Non-aligned block sizes would leave a + * partial, uninitialized chunk and do not correspond to any real + * ADPCM stream. */ + if (enc->blocksize <= DVI_IMA_HEADER_SIZE * enc->channels + || (enc->blocksize - DVI_IMA_HEADER_SIZE * enc->channels) + % (4 * enc->channels) != 0) { + GST_WARNING_OBJECT (enc, + "block size %d is not valid for %d channel(s)", enc->blocksize, + enc->channels); + return FALSE; + } /* IMA ADPCM includes a 4-byte header per channel, */ sample_bytes = enc->blocksize - (DVI_IMA_HEADER_SIZE * enc->channels); /* two samples per byte, plus a single sample in the header. */ @@ -304,7 +317,14 @@ */ write_pos = HEADER_SIZE * enc->channels; read_pos = enc->channels; /* the first sample is in the header. */ - while (write_pos < enc->blocksize) { + /* Each iteration below consumes 8 * channels input samples + * (CHANNEL_CHUNK_SIZE == 8). Stop before an iteration that would read + * past the samples_per_block * channels samples the base class + * provides; otherwise block sizes whose data area is not a multiple + * of the chunk size cause an out-of-bounds read on the input. */ + while (write_pos < enc->blocksize + && read_pos + 8 * enc->channels <= + enc->samples_per_block * enc->channels) { gint8 CHANNEL_CHUNK_SIZE = 8; for (channel = 0; channel < enc->channels; channel++) { /* convert eight samples (four bytes) per channel, then swap */
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst/closedcaption/ccutils.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst/closedcaption/ccutils.c
Changed
@@ -550,7 +550,7 @@ continue; } - if (cc_type & 0x10) + if (cc_type & 0x02) started_ccp = TRUE; if (!cc_valid) @@ -674,13 +674,20 @@ cea608_2_len = MAX_CEA608_LEN; } + if (cc_data_len > MAX_CDP_PACKET_LEN) { + GST_WARNING_OBJECT (buf, + "Truncating CEA708 cc_data of %u bytes to %u bytes", + cc_data_len, MAX_CDP_PACKET_LEN); + cc_data_len = MAX_CDP_PACKET_LEN; + } + if (cea608_1 && cea608_1_len > 0) { guint out_i = 0; for (i = 0; i < cea608_1_len / 2; i++) { - if (!remove_cea608_padding || cea608_1i != 0x80 - || cea608_1i + 1 != 0x80) { - cea608_1_copyout_i++ = cea608_1i; - cea608_1_copyout_i++ = cea608_1i + 1; + if (!remove_cea608_padding || cea608_1i * 2 != 0x80 + || cea608_1i * 2 + 1 != 0x80) { + cea608_1_copyout_i++ = cea608_1i * 2; + cea608_1_copyout_i++ = cea608_1i * 2 + 1; } } cea608_1_len = out_i; @@ -691,10 +698,10 @@ if (cea608_2 && cea608_2_len > 0) { guint out_i = 0; for (i = 0; i < cea608_2_len / 2; i++) { - if (!remove_cea608_padding || cea608_2i != 0x80 - || cea608_2i + 1 != 0x80) { - cea608_2_copyout_i++ = cea608_2i; - cea608_2_copyout_i++ = cea608_2i + 1; + if (!remove_cea608_padding || cea608_2i * 2 != 0x80 + || cea608_2i * 2 + 1 != 0x80) { + cea608_2_copyout_i++ = cea608_2i * 2; + cea608_2_copyout_i++ = cea608_2i * 2 + 1; } } cea608_2_len = out_i; @@ -724,6 +731,13 @@ guint cea608_2_len = MAX_CEA608_LEN; int ccp_offset; + if (cc_data_len > MAX_CDP_PACKET_LEN) { + GST_WARNING_OBJECT (buf, + "Truncating CEA708 cc_data of %u bytes to %u bytes", + cc_data_len, MAX_CDP_PACKET_LEN); + cc_data_len = MAX_CDP_PACKET_LEN; + } + memcpy (cc_data_copy, cc_data, cc_data_len); cc_data_len = compact_cc_data (cc_data_copy, cc_data_len);
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst/closedcaption/gstcccombiner.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst/closedcaption/gstcccombiner.c
Changed
@@ -261,7 +261,7 @@ schedule_cea608_s334_1a (GstCCCombiner * self, guint8 * data, guint len, GstClockTime pts, GstClockTime duration) { - guint8 field0_data3, field1_data3; + guint8 field0_dataMAX_CEA608_LEN, field1_dataMAX_CEA608_LEN; guint field0_len = 0, field1_len = 0; guint i; @@ -271,6 +271,12 @@ len = len - (len % 3); } + if (2 * (len / 3) > MAX_CEA608_LEN) { + GST_WARNING ("Truncating CEA608 s334-1a data of %u bytes to %u bytes", + len, MAX_CEA608_LEN * 3 / 2); + len = MAX_CEA608_LEN * 3 / 2; + } + for (i = 0; i < len / 3; i++) { if (datai * 3 & 0x80) { if (datai * 3 + 1 == 0x80 && datai * 3 + 2 == 0x80)
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst/gdp/dataprotocol.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst/gdp/dataprotocol.c
Changed
@@ -582,6 +582,11 @@ g_return_val_if_fail (payload != NULL, NULL); + if (GST_DP_HEADER_PAYLOAD_LENGTH (header) < 32) { + GST_WARNING ("GDP 0.2 SEEK event payload too short"); + return NULL; + } + /* FIXME, read rate */ rate = 1.0; format = (GstFormat) GST_READ_UINT32_BE (payload);
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst/jpegformat/gstjpegparse.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst/jpegformat/gstjpegparse.c
Changed
@@ -961,9 +961,9 @@ buf = (const gchar *) data; /* buggy avid, it puts EOI only at every 10th frame */ - if (g_str_has_prefix (buf, "AVID")) { + if (size >= 4 && memcmp (buf, "AVID", 4) == 0) { parse_avid (parse, data, size); - } else if (g_str_has_prefix (buf, "MULTISCOPE II")) { + } else if (size >= 13 && memcmp (buf, "MULTISCOPE II", 13) == 0) { parse->par_num = 1; parse->par_den = 2; parse->multiscope = TRUE;
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst/mxf/mxfaes-bwf.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst/mxf/mxfaes-bwf.c
Changed
@@ -1079,6 +1079,11 @@ metadata_class->type = 0x0147; } +static const MXFUL aiff_aifc_essence_container_label = { { + 0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x07, 0x0d, 0x01, 0x13, 0x01, + 0x01, 0x04, 0x01, 0x00} +}; + static gboolean mxf_is_aes_bwf_essence_track (const MXFMetadataFileDescriptor * d) { @@ -1092,7 +1097,9 @@ key->u14 == 0x02 || key->u14 == 0x03 || key->u14 == 0x04 || key->u14 == 0x08 || key->u14 == 0x09 || - key->u14 == 0x0a || key->u14 == 0x0b)); + key->u14 == 0x0a || key->u14 == 0x0b)) || + /* AAF AIFF-AIFC */ + (mxf_ul_is_equal (key, &aiff_aifc_essence_container_label)); } static MXFEssenceWrapping @@ -1175,7 +1182,23 @@ return GST_FLOW_OK; } +static GstFlowReturn +mxf_aiff_handle_essence_element (const MXFUL * key, GstBuffer * buffer, + GstCaps * caps, MXFMetadataTimelineTrack * track, + gpointer mapping_data, GstBuffer ** outbuf) +{ + *outbuf = buffer; + + /* FIXME: Same as BWF? */ + if (key->u12 != 0x16 || (key->u14 != 0x01 && key->u14 != 0x02 + && key->u14 != 0x0b)) { + GST_ERROR ("Invalid AIFF-AIFC essence element"); + return GST_FLOW_ERROR; + } + /* FIXME: check if the size is a multiply of the unit size, ... */ + return GST_FLOW_OK; +} /* SMPTE RP224 */ static const MXFUL mxf_sound_essence_compression_uncompressed = @@ -1384,12 +1407,71 @@ } static GstCaps * +mxf_aiff_create_caps (MXFMetadataTimelineTrack * track, + MXFMetadataGenericSoundEssenceDescriptor * descriptor, GstTagList ** tags, + gboolean * intra_only, MXFEssenceElementHandleFunc * handler, + gpointer * mapping_data) +{ + GstCaps *ret = NULL; + MXFMetadataWaveAudioEssenceDescriptor *wa_descriptor = NULL; + gchar *codec_name = NULL; + GstAudioFormat audio_format; + guint block_align; + + if (MXF_IS_METADATA_WAVE_AUDIO_ESSENCE_DESCRIPTOR (descriptor)) + wa_descriptor = (MXFMetadataWaveAudioEssenceDescriptor *) descriptor; + + /* FIXME: set a channel layout */ + + if (descriptor->channel_count == 0 || + descriptor->quantization_bits == 0 || + descriptor->audio_sampling_rate.n == 0 || + descriptor->audio_sampling_rate.d == 0) { + GST_ERROR ("Invalid descriptor"); + return NULL; + } + if (wa_descriptor && wa_descriptor->block_align != 0) + block_align = wa_descriptor->block_align; + else + block_align = + (GST_ROUND_UP_8 (descriptor->quantization_bits) * + descriptor->channel_count) / 8; + + audio_format = + gst_audio_format_build_integer (block_align != descriptor->channel_count, + G_BIG_ENDIAN, (block_align / descriptor->channel_count) * 8, + (block_align / descriptor->channel_count) * 8); + ret = + mxf_metadata_generic_sound_essence_descriptor_create_caps (descriptor, + &audio_format); + + codec_name = + g_strdup_printf ("Uncompressed %u-bit AIFF-AIFC audio", + (block_align / descriptor->channel_count) * 8); + + if (!*tags) + *tags = gst_tag_list_new_empty (); + + gst_tag_list_add (*tags, GST_TAG_MERGE_APPEND, GST_TAG_AUDIO_CODEC, + codec_name, GST_TAG_BITRATE, + (gint) (block_align * 8 * + mxf_fraction_to_double (&descriptor->audio_sampling_rate)) / + (descriptor->channel_count), NULL); + g_free (codec_name); + + *handler = mxf_aiff_handle_essence_element; + *intra_only = TRUE; + + return ret; +} + +static GstCaps * mxf_aes_bwf_create_caps (MXFMetadataTimelineTrack * track, GstTagList ** tags, gboolean * intra_only, MXFEssenceElementHandleFunc * handler, gpointer * mapping_data) { MXFMetadataGenericSoundEssenceDescriptor *s = NULL; - gboolean bwf = FALSE; + gboolean bwf = FALSE, aiff = FALSE; guint i; g_return_val_if_fail (track != NULL, NULL); @@ -1405,6 +1487,16 @@ if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->parent. descriptori) + && (mxf_ul_is_equal (&track->parent.descriptori->essence_container, + &aiff_aifc_essence_container_label))) { + + s = (MXFMetadataGenericSoundEssenceDescriptor *) track->parent. + descriptori; + bwf = FALSE; + aiff = TRUE; + break; + } else if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->parent. + descriptori) && (track->parent.descriptori->essence_container.u14 == 0x01 || track->parent.descriptori->essence_container.u14 == 0x02 || track->parent.descriptori->essence_container.u14 == 0x08 @@ -1412,6 +1504,7 @@ s = (MXFMetadataGenericSoundEssenceDescriptor *) track->parent. descriptori; bwf = TRUE; + aiff = FALSE; break; } else if (MXF_IS_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (track->parent. @@ -1424,6 +1517,7 @@ s = (MXFMetadataGenericSoundEssenceDescriptor *) track->parent. descriptori; bwf = FALSE; + aiff = FALSE; break; } } @@ -1434,6 +1528,9 @@ } else if (bwf) { return mxf_bwf_create_caps (track, s, tags, intra_only, handler, mapping_data); + } else if (aiff) { + return mxf_aiff_create_caps (track, s, tags, intra_only, handler, + mapping_data); } else { return mxf_aes3_create_caps (track, s, tags, intra_only, handler, mapping_data);
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/gst/mxf/mxfmux.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/gst/mxf/mxfmux.c
Changed
@@ -1390,6 +1390,10 @@ } } + segment = + &g_array_index (mux->index_table, MXFIndexTableSegment, + mux->current_index_pos); + /* Leave temporal offset initialized at 0, above code will set it as necessary */ ; if (is_keyframe)
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/meson.build -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/meson.build
Changed
@@ -1,5 +1,5 @@ project('gst-plugins-bad', 'c', 'cpp', - version : '1.28.7', + version : '1.28.8', meson_version : '>= 1.4', default_options : 'warning_level=1', 'buildtype=debugoptimized',
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/po/gst-plugins-bad-1.0.pot -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/po/gst-plugins-bad-1.0.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-bad-1.28.7\n" +"Project-Id-Version: gst-plugins-bad-1.28.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-07 20:11+0100\n" +"POT-Creation-Date: 2026-10-08 17:20+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-bad-1.28.7.tar.xz/po/gst-plugins-bad.pot -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/po/gst-plugins-bad.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-bad-1.28.7\n" +"Project-Id-Version: gst-plugins-bad-1.28.8\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-09-07 20:11+0100\n" +"POT-Creation-Date: 2026-10-08 17:20+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-bad-1.28.7.tar.xz/release-notes-1.28.md -> _service:download_files:gst-plugins-bad-1.28.8.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.7(#1.28.7) and was released on 07 September 2026. +The latest bug-fix release in the stable 1.28 series is 1.28.8(#1.28.8) and was released on 08 October 2026. See https://gstreamer.freedesktop.org/releases/1.28/latest for the latest version of this document. -*Last updated: Monday 07 September 2026, 20:00 UTC (log)gitlog* +*Last updated: Thursday 08 October 2026, 17: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 @@ -2801,6 +2801,7 @@ - st2038anc: parity bit handling fixes for ST 291 ADF words - video converter and videoconvertscale fixes - mpegdemux: restore gap event sending in MPEG-PS demuxer + - typefinding: fix typefinding regressions for ogg and text files - Fix x264enc high bit depth support in binary packages - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements @@ -2940,6 +2941,189 @@ - List of Merge Requests applied in 1.28.7(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.7) - List of Issues fixed in 1.28.7(https://gitlab.freedesktop.org/groups/gstreamer/-/work_items?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=1.28.7) +<a id="1.28.8"></a> + +### 1.28.8 + +The eight 1.28 bug-fix release (1.28.8) was released on 08 October 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.8 + + - Various security fixessecurity and playback fixes + - Fix adaptivedemux2 HLS and DASH playback regression + - Fix FLAC audio seeking regression + - Various RTP depayloader and RTSP client SDP handling fixes + - MXF demuxer: Added support for reading AAF AIFF-AIFC audio + - VA-API compositor: Fix alpha blending with Intel driver + - Windows media audio/video seeking improvements + - AMD AMF AV1 video encoder force-keyframe fixes + - Fix endless drain in some FFmpeg wrapper audio encoders and support dual mono + - hlssink3 improvements + - ISOBMFF dash/iso/fmp4 muxer fixes for timestamp rollover in 2036 + - cerbero: Rework checksum verification to allow mirror retries + - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements + +#### gstreamer + + - baseparse: Fix accumulating of detection buffers(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12489) + - buffer: Don't leave buffers with dangling memory pointers if appending memory fails(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12616) + - buffer: Prevent NULL pointer dereferences when deserializing reference timestamp meta(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12652) + - value: fix crash when comparing mixed-type lists(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12649) + - ptp: Fix build failures with Rust 1.99(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12617) + +#### gst-plugins-base + + - appsink: Reset EOS state on PAUSED → READY(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12663) + - audio-resampler-neon: handle Thumb1-only builds correctly(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12501) + - audio-resampler-neon: Follow-up from "fix Thumb encoding and use Clang O2 calculation for strides"(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5280) + - audio: video: Validate audio/video meta deserialization & other meta deserialization fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12652) + - audioconverter: guard against NULL input in do_convert_out(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12517) + - sdpmessage: Avoid sign bit when hex-escaping chars(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12532) + - udmabuf: Open device with O_RDONLY instead O_RDWR(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12567) + - videoconvertscale: Take GstVideoMeta into account when converting(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12516) + +#### gst-plugins-good + + - adaptivedemux2: Drain downloadhelper main context with the main context as the thread default(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12472) + - adaptivedemux2: SIGABRT in downloadhelper_stop() draining transfer context(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5296) + - adaptivedemux2: Remove redundant hls_dep fallback, re-enabling unit tests(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12553) + - audiofx: Miscellaneous FIR filter fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12615) + - flacparse: regression since 1.28 - valid FLAC errors out with "Internal data stream error" after a seek(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5314) + - flacparse: Fix resyncing after a seek(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12574) + - matroska: Use the display unit for storing the display aspect ratio more accurately(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12572) + - matroskamux: DisplayWidth rounding loses aspect ratio for non-integer PARs(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5272) + - matroskademux: fix crash caused by bogus xiph codec data packet sizes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12658) + - qtmux: preserve earliest reordered presentation time(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12635) + - rtph265depay: Check for short packets before processing them(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12655) + - rtph265pay: unmap the RTP header before appending the payload(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12547) + - rtpsession: Ignore SDES priv RTCP packets with invalid lengths(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12659) + - rtp: Various small (RTP and not) depayloader fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12533) + - rtpL8depay, rtpL16depay, rtpL24depay: fix out of bounds write for high channel count(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12657) + - rtspsrc: Fix handling of missing control attribute with multiple media sections(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12504) + - rtspsrc: SIGSEGV in gst_rtspsrc_setup_streams_start() when an SDP media section has no a=control attribute(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/work_items/5270) + - v4l2: fix guint overflow in calculate_max_sizeimage(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12494) + - v4l2: object: Don't corrupt the caller's filter caps when probing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12537) + +#### gst-plugins-bad + + - adpcmenc: stop the IMA encode loop before reading past the input frame(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12515) + - amfav1enc: Force a key frame on force-key-unit(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12524) + - ccutils: Miscellaneous parsing fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12543) + - closedcaption: Use truncated length when converting CEA708 / CEA608 S334-1A data too(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12661) + - d3d12: Various GstBaseTransform::transform_meta() related fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12480) + - jpegparse: handle missing NUL terminator in COM segment(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12526) + - hipevent: Fix device ID getter(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12669) + - hipmemory: Fix minor leak and typo(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12636) + - mpegts: fix GError usage in a loop(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12605) + - mxfdemux: Add support for reading AAF AIFF-AIFC audio(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12453) + - mxfmux: Fix possible crash when adding a new segment due to frame reordering(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12506) + - nvh264dec: Fix top field POC in DPB entry(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12608) + - rsvgdec: Fix out-of-bounds read when scanning for SVG end tag(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12660) + - rtp: Various small (RTP and not) depayloader fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12533) + - segmentationoverlay: Fix off-by-one bug and add test(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12595) + - segmentationoverlay: Respect video meta strides(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12566) + - va: compositor: Fix alpha blending with Intel driver(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12557) + - vmaf: use GST_PARAM_DOC_SHOW_DEFAULT for "threads" property(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12556) + - vulkan h26x enc/dec misc fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12575) + - vulkan: encoder: DPB slots and DBP barrier fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12570) + - vulkan: tests: examples fixes(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12573) + - webrtc/nice: Fix crash in nice_candidate_free during gather(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12454) + +#### gst-plugins-ugly + + - asfdemux: Explicitly set packet to zero if seek_time is zero(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12505) + - asfdemux: Clamp simple index entry count against the available data size(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12656) + - rtpasfdepay: Ignore zero-length ASF packets(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12533) + +#### GStreamer Rust plugins + + - fmp4mux: Fix racy test_large_gop_split_at_fragment_boundary_chunked test(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3252) + - gifdec: error out if a frameless GIF is somehow supplied(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3268) + - gifdec: error out if a frameless GIF is somehow supplied, try 2(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3281) + - HLS sink improvements(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3285) + - isobmff: Fix NTP seconds roll-over past 2036(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3288) + - raptorq: Downgrade to 2.0.0 again(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3256) + - reqwesthttpsrc: Handle empty response chunks(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3274) + - rtspsrc2: Fix handling of scheme and parameter parsing(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3237) + - Reapply "Switch to aws-lc-rs"(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3273) + - Update dependencies(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3272) + - meson: Skip validate-plugins if gstreamer-validate-1.0 is missing(https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/3279) + +#### gst-libav + + - avaudenc: Fix endless drain of encoders that support flushing(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12571) + - avcodecmap: Take the dual mono case into account(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12578) + - avenc_tta: Allow up to 16 channels and use that in the 16 channel test(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12590) + - Disable OMX encoders and decoders(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12488) + +#### gst-rtsp-server + + - rtsp-stream: Use updated string length when stripping invalid characters(https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/12654) + +#### gstreamer-sharp + + - No changes + +#### gst-python + + - No changes + +#### gst-editing-services + + - No changes + +#### 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.8 + + - cerbero: Retry in another case when cargo-cinstall fails on Windows(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2351) + - cerbero: Rework checksum verification to allow mirror retries(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2360) + - config, filesprovider: make Python module capture version agnostic(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2359) + - filesprovider seems to only pick up one pyd file when multiple are present(https://gitlab.freedesktop.org/gstreamer/cerbero/-/work_items/572) + - glib-networking: Update to 2.90.0 with OpenSSL backend threading fixes(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2353) + - libpng: fix assorted MSVC linking issues(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2355) + - soundtouch.recipe: Use the fdo mirror for tarballs(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2352) + - util: consider 2025 Server as Windows 11(https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/2349) + +#### Contributors to 1.28.8 + +Abdulla Anam, Amyspark, Brendan McGrath, Bruno Fournier, David Lincoln, +Finlay Moss, Hunter Ford, Jan Schmidt, Jeremy Whiting, Josef Kolář, +Kushal Arora, L. E. Segovia, Maksim Nikolaev, Marcus Hanestad, +Maxandre Ogeret, Nicolas Dufresne, Nirbheek Chauhan, Olivier Crête, +Piotr Brzeziński, Robert Mader, Qi Hou, Remus Lazar, Sanchayan Maity, +Sebastian Dröge, Seungha Yang, Thibault Saunier, Tim-Philipp Müller, +Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Xabier Rodriguez Calvar, +Xavier Claessens, Zhaoxuan Zhai, + +... 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.8 + +- List of Merge Requests applied in 1.28.8(https://gitlab.freedesktop.org/groups/gstreamer/-/merge_requests?scope=all&utf8=%E2%9C%93&state=merged&milestone_title=1.28.8) +- List of Issues fixed in 1.28.8(https://gitlab.freedesktop.org/groups/gstreamer/-/work_items?scope=all&utf8=%E2%9C%93&state=closed&milestone_title=1.28.8) + ## Schedule for 1.30 Our next major feature release will be 1.30, and 1.29 will be the unstable
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/sys/amfcodec/gstamfav1enc.cpp -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/sys/amfcodec/gstamfav1enc.cpp
Changed
@@ -1438,7 +1438,7 @@ AMF_RESULT result; if (GST_VIDEO_CODEC_FRAME_IS_FORCE_KEYFRAME (frame)) { - amf_int64 type = (amf_int64) AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_NONE; + amf_int64 type = (amf_int64) AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_KEY; result = surf->SetProperty (AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE, type); if (result != AMF_OK) { GST_WARNING_OBJECT (encoder, "Failed to set force frame type, result %"
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/sys/d3d12/gstd3d12basefilter.cpp -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/sys/d3d12/gstd3d12basefilter.cpp
Changed
@@ -27,9 +27,6 @@ GST_DEBUG_CATEGORY_STATIC (gst_d3d12_base_filter_debug); #define GST_CAT_DEFAULT gst_d3d12_base_filter_debug -#define META_TAG_VIDEO meta_tag_video_quark -static GQuark meta_tag_video_quark; - enum { PROP_0, @@ -137,7 +134,6 @@ gst_type_mark_as_plugin_api (GST_TYPE_D3D12_BASE_FILTER, (GstPluginAPIFlags) 0); - meta_tag_video_quark = g_quark_from_static_string (GST_META_TAG_VIDEO_STR); } static void @@ -359,14 +355,16 @@ GstBuffer * outbuf, GstMeta * meta, GstBuffer * inbuf) { const GstMetaInfo *info = meta->info; - const gchar *const *tags; - - tags = gst_meta_api_type_get_tags (info->api); - - if (!tags || (g_strv_length ((gchar **) tags) == 1 - && gst_meta_api_type_has_tag (info->api, META_TAG_VIDEO))) { + const gchar *valid_tags = { + GST_META_TAG_VIDEO_STR, + GST_META_TAG_VIDEO_ORIENTATION_STR, + GST_META_TAG_VIDEO_SIZE_STR, + GST_META_TAG_VIDEO_COLORSPACE_STR, + nullptr + }; + + if (gst_meta_api_type_tags_contain_only (info->api, valid_tags)) return TRUE; - } return GST_BASE_TRANSFORM_CLASS (parent_class)->transform_meta (trans, outbuf, meta, inbuf);
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/sys/d3d12/gstd3d12convert.cpp -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/sys/d3d12/gstd3d12convert.cpp
Changed
@@ -114,6 +114,10 @@ GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, GST_D3D12_ALL_FORMATS))); +static GQuark _size_quark; +static GQuark _scale_quark; +static GQuark _matrix_quark; + enum { PROP_SAMPLING_METHOD = 1, @@ -351,6 +355,10 @@ (GstPluginAPIFlags) 0); gst_type_mark_as_plugin_api (GST_TYPE_D3D12_SAMPLING_METHOD, (GstPluginAPIFlags) 0); + + _size_quark = g_quark_from_static_string (GST_META_TAG_VIDEO_SIZE_STR); + _scale_quark = gst_video_meta_transform_scale_get_quark (); + _matrix_quark = gst_video_meta_transform_matrix_get_quark (); } static void @@ -547,8 +555,6 @@ GstCapsFeatures *f; gint i, n; GstCaps *res; - GstCapsFeatures *feature = - gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_D3D12_MEMORY); res = gst_caps_new_empty (); @@ -565,14 +571,13 @@ st = gst_structure_copy (st); /* Only remove format info for the cases when we can actually convert */ if (!gst_caps_features_is_any (f) - && gst_caps_features_is_equal (f, feature)) { + && gst_caps_features_contains (f, GST_CAPS_FEATURE_MEMORY_D3D12_MEMORY)) { gst_structure_remove_fields (st, "format", "colorimetry", "chroma-site", NULL); } gst_caps_append_structure_full (res, st, gst_caps_features_copy (f)); } - gst_caps_features_free (feature); return res; } @@ -584,8 +589,6 @@ GstCapsFeatures *f; gint i, n; GstCaps *res; - GstCapsFeatures *feature = - gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_D3D12_MEMORY); res = gst_caps_new_empty (); @@ -602,7 +605,7 @@ st = gst_structure_copy (st); /* Only remove format info for the cases when we can actually convert */ if (!gst_caps_features_is_any (f) - && gst_caps_features_is_equal (f, feature)) { + && gst_caps_features_contains (f, GST_CAPS_FEATURE_MEMORY_D3D12_MEMORY)) { gst_structure_set (st, "width", GST_TYPE_INT_RANGE, 1, G_MAXINT, "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL); @@ -615,7 +618,6 @@ gst_caps_append_structure_full (res, st, gst_caps_features_copy (f)); } - gst_caps_features_free (feature); return res; } @@ -627,9 +629,6 @@ GstCapsFeatures *f; gint i, n; GstCaps *res; - GstCapsFeatures *feature = - gst_caps_features_new_single_static_str - (GST_CAPS_FEATURE_MEMORY_D3D12_MEMORY); res = gst_caps_new_empty (); @@ -646,7 +645,7 @@ st = gst_structure_copy (st); /* Only remove format info for the cases when we can actually convert */ if (!gst_caps_features_is_any (f) - && gst_caps_features_is_equal (f, feature)) { + && gst_caps_features_contains (f, GST_CAPS_FEATURE_MEMORY_D3D12_MEMORY)) { gst_structure_set (st, "width", GST_TYPE_INT_RANGE, 1, G_MAXINT, "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, nullptr); /* if pixel aspect ratio, make a range of it */ @@ -660,7 +659,6 @@ gst_caps_append_structure_full (res, st, gst_caps_features_copy (f)); } - gst_caps_features_free (feature); return res; } @@ -1849,11 +1847,51 @@ * shader or video processor object. Then the conversion object will * consider source cropping area automatically */ - if (meta->info->api == GST_VIDEO_CROP_META_API_TYPE) + const auto info = meta->info; + if (info->api == GST_VIDEO_CROP_META_API_TYPE) + return FALSE; + + const gchar *valid_tags = { + GST_META_TAG_VIDEO_STR, + GST_META_TAG_VIDEO_ORIENTATION_STR, + GST_META_TAG_VIDEO_SIZE_STR, + nullptr + }; + + if (!gst_meta_api_type_tags_contain_only (info->api, valid_tags)) return FALSE; - return GST_BASE_TRANSFORM_CLASS (parent_class)->transform_meta (trans, - outbuf, meta, inbuf); + if (gst_meta_api_type_has_tag (info->api, _size_quark)) { + if (info->transform_func) { + auto base = GST_D3D12_BASE_FILTER (trans); + auto self = GST_D3D12_BASE_CONVERT (trans); + auto priv = self->priv; + + GstVideoMetaTransformMatrix trans_matrix; + GstVideoMetaTransform trans = { &base->in_info, &base->out_info }; + const GstVideoRectangle in_rectangle = { 0, 0, + GST_VIDEO_INFO_WIDTH (&base->in_info), + GST_VIDEO_INFO_HEIGHT (&base->in_info) + }; + const GstVideoRectangle out_rectangle = { + (gint) priv->out_rect.left, + (gint) priv->out_rect.top, + (gint) (priv->out_rect.right - priv->out_rect.left), + (gint) (priv->out_rect.bottom - priv->out_rect.top), + }; + + gst_video_meta_transform_matrix_init (&trans_matrix, + &base->in_info, &in_rectangle, &base->out_info, &out_rectangle); + + if (!info->transform_func (outbuf, meta, inbuf, _matrix_quark, + &trans_matrix)) + info->transform_func (outbuf, meta, inbuf, _scale_quark, &trans); + } + + return FALSE; + } + + return TRUE; } static void
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/sys/d3d12/gstd3d12memorycopy.cpp -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/sys/d3d12/gstd3d12memorycopy.cpp
Changed
@@ -45,9 +45,6 @@ GST_DEBUG_CATEGORY_STATIC (gst_d3d12_memory_copy_debug); #define GST_CAT_DEFAULT gst_d3d12_memory_copy_debug -#define META_TAG_VIDEO meta_tag_video_quark -static GQuark meta_tag_video_quark; - #ifdef HAVE_GST_D3D11 #define SINK_STATIC_CAPS \ GST_VIDEO_CAPS_MAKE_WITH_FEATURES \ @@ -490,8 +487,6 @@ GST_DEBUG_FUNCPTR (gst_d3d12_memory_copy_before_transform); trans_class->transform = GST_DEBUG_FUNCPTR (gst_d3d12_memory_copy_transform); - meta_tag_video_quark = g_quark_from_static_string (GST_META_TAG_VIDEO_STR); - gst_type_mark_as_plugin_api (GST_TYPE_D3D12_MEMORY_COPY, (GstPluginAPIFlags) 0); gst_type_mark_as_plugin_api (GST_TYPE_D3D12_MEMCPY_CMD_QUEUE_TYPE, @@ -963,8 +958,19 @@ guint i = 0; for (i = 0; i < n; i++) { - gst_caps_set_features (tmp, i, - gst_caps_features_new_single_static_str (feature_name)); + auto orig_features = gst_caps_get_features (tmp, i); + + if (gst_caps_features_is_any (orig_features)) + continue; + + auto features = gst_caps_features_new_static_str (feature_name, nullptr); + if (gst_caps_features_contains (orig_features, + GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION)) { + gst_caps_features_add (features, + GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION); + } + + gst_caps_set_features (tmp, i, features); } return tmp; @@ -1362,14 +1368,16 @@ GstBuffer * outbuf, GstMeta * meta, GstBuffer * inbuf) { const GstMetaInfo *info = meta->info; - const gchar *const *tags; - - tags = gst_meta_api_type_get_tags (info->api); + const gchar *valid_tags = { + GST_META_TAG_VIDEO_STR, + GST_META_TAG_VIDEO_ORIENTATION_STR, + GST_META_TAG_VIDEO_SIZE_STR, + GST_META_TAG_VIDEO_COLORSPACE_STR, + nullptr + }; - if (!tags || (g_strv_length ((gchar **) tags) == 1 - && gst_meta_api_type_has_tag (info->api, META_TAG_VIDEO))) { + if (gst_meta_api_type_tags_contain_only (info->api, valid_tags)) return TRUE; - } return GST_BASE_TRANSFORM_CLASS (parent_class)->transform_meta (trans, outbuf, meta, inbuf);
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/sys/nvcodec/gstnvh264dec.cpp -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/sys/nvcodec/gstnvh264dec.cpp
Changed
@@ -880,7 +880,7 @@ dpb->FieldOrderCnt1 = ref->bottom_field_order_cnt; dpb->used_for_reference = 0x2; if (ref->other_field) { - dpb->FieldOrderCnt0 = ref->other_field->bottom_field_order_cnt; + dpb->FieldOrderCnt0 = ref->other_field->top_field_order_cnt; dpb->used_for_reference |= 0x1; } else { dpb->FieldOrderCnt0 = 0;
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/sys/va/gstvafilter.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/sys/va/gstvafilter.c
Changed
@@ -1883,9 +1883,9 @@ && sample->premultiplied_alpha) { blend.flags |= VA_BLEND_PREMULTIPLIED_ALPHA; } - if (blend.flags != 0) { - params.blend_state = &blend; - } + + /* Ensure we do a blend operation and not a copy blit */ + params.blend_state = &blend; status = vaCreateBuffer (dpy, self->context, VAProcPipelineParameterBufferType, sizeof (params), 1, ¶ms,
View file
_service:download_files:gst-plugins-bad-1.28.8.tar.xz/tests/check/elements/segmentationoverlay.c
Added
@@ -0,0 +1,153 @@ +/* + * GStreamer segmentationoverlay tests + * Copyright (C) 2026 Collabora Ltd. + * author: Jeremy Whiting <jeremy.whiting@collabora.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include <gst/check/gstcheck.h> +#include <gst/check/gstharness.h> +#include <gst/video/video.h> + +#include <gst/analytics/analytics.h> + +#define FRAME_WIDTH 4 +/* Mask rows are 1 pixel wide but padded to a 4 byte stride. */ +#define MASK_STRIDE 4 + +/* Push one black BGRA frame carrying a segmentation mask that covers the + * whole frame, one pixel wide and with the region id of each mask row given in + * @mask_rows, and check each frame row shows the region of the mask row it is + * scaled from: two frame rows must look the same exactly when their mask rows + * carry the same region. */ +static void +check_mask_rows_map_to_frame_rows (const guint8 * mask_rows, + guint mask_height, guint frame_height) +{ + GstHarness *h; + GstBuffer *in, *out, *mask; + GstAnalyticsRelationMeta *rmeta; + GstAnalyticsSegmentationMtd seg_mtd; + guint region_ids256; + gsize region_count = 0; + guint8 *mask_data; + gsize offsetGST_VIDEO_MAX_PLANES = { 0 }; + gint strideGST_VIDEO_MAX_PLANES = { MASK_STRIDE }; + gsize frame_size = FRAME_WIDTH * frame_height * 4; + guint32 *first_pixel; + GstMapInfo map; + gchar *caps; + + h = gst_harness_new ("segmentationoverlay"); + caps = g_strdup_printf ("video/x-raw,format=BGRA,width=%d,height=%u," + "framerate=30/1", FRAME_WIDTH, frame_height); + gst_harness_set_caps_str (h, caps, caps); + g_free (caps); + + mask_data = g_malloc0 (mask_height * MASK_STRIDE); + for (guint r = 0; r < mask_height; r++) { + gboolean seen = FALSE; + + mask_datar * MASK_STRIDE = mask_rowsr; + for (gsize i = 0; i < region_count; i++) + seen |= region_idsi == mask_rowsr; + if (!seen) + region_idsregion_count++ = mask_rowsr; + } + mask = gst_buffer_new_wrapped (mask_data, mask_height * MASK_STRIDE); + gst_buffer_add_video_meta_full (mask, GST_VIDEO_FRAME_FLAG_NONE, + GST_VIDEO_FORMAT_GRAY8, 1, mask_height, 1, offset, stride); + + in = gst_buffer_new_and_alloc (frame_size); + gst_buffer_memset (in, 0, 0, frame_size); + rmeta = gst_buffer_add_analytics_relation_meta (in); + /* Takes ownership of the mask. */ + fail_unless (gst_analytics_relation_meta_add_segmentation_mtd (rmeta, mask, + GST_SEGMENTATION_TYPE_SEMANTIC, region_count, region_ids, 0, 0, + FRAME_WIDTH, frame_height, &seg_mtd)); + + out = gst_harness_push_and_pull (h, in); + fail_unless (out != NULL); + + /* Mask rows are 1 pixel wide, so the first pixel stands for the frame row. */ + first_pixel = g_new (guint32, frame_height); + fail_unless (gst_buffer_map (out, &map, GST_MAP_READ)); + for (guint y = 0; y < frame_height; y++) + memcpy (&first_pixely, map.data + y * FRAME_WIDTH * 4, 4); + gst_buffer_unmap (out, &map); + + for (guint a = 0; a < frame_height; a++) { + guint8 region_a = mask_rows(a * mask_height) / frame_height; + + for (guint b = a + 1; b < frame_height; b++) { + guint8 region_b = mask_rows(b * mask_height) / frame_height; + + if (region_a == region_b) { + fail_unless (first_pixela == first_pixelb, + "frame rows %u and %u should both show region %u, got %08x and " + "%08x", a, b, region_a, first_pixela, first_pixelb); + } else { + fail_if (first_pixela == first_pixelb, + "frame rows %u and %u show the same color but should show " + "regions %u and %u", a, b, region_a, region_b); + } + } + } + + g_free (first_pixel); + gst_buffer_unref (out); + gst_harness_teardown (h); +} + +/* Each mask row covers two frame rows. */ +GST_START_TEST (test_mask_upscale_rows) +{ + static const guint8 mask_rows = { 1, 2, 3, 4 }; + + check_mask_rows_map_to_frame_rows (mask_rows, G_N_ELEMENTS (mask_rows), 8); +} + +GST_END_TEST; + +/* Every other mask row is used. The last frame row repeats the region of the + * first, so it must match it exactly (and cannot be left undrawn). */ +GST_START_TEST (test_mask_downscale_rows) +{ + static const guint8 mask_rows = { 1, 1, 2, 2, 3, 3, 1, 1 }; + + check_mask_rows_map_to_frame_rows (mask_rows, G_N_ELEMENTS (mask_rows), 4); +} + +GST_END_TEST; + +static Suite * +segmentationoverlay_suite (void) +{ + Suite *s; + TCase *tc_chain; + + s = suite_create ("segmentationoverlay"); + tc_chain = tcase_create ("general"); + + suite_add_tcase (s, tc_chain); + tcase_add_test (tc_chain, test_mask_upscale_rows); + tcase_add_test (tc_chain, test_mask_downscale_rows); + + return s; +} + +GST_CHECK_MAIN (segmentationoverlay);
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/tests/check/libs/vkvideoencodeav1.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/tests/check/libs/vkvideoencodeav1.c
Changed
@@ -613,8 +613,10 @@ } gst_clear_object (&video_queue); gst_clear_object (&graphics_queue); - gst_av1_parser_free (parser); - parser = NULL; + if (parser) { + gst_av1_parser_free (parser); + parser = NULL; + } } static void
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/tests/check/meson.build -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/tests/check/meson.build
Changed
@@ -78,6 +78,7 @@ 'elements/rtpsrc.c', get_option('rtp').disabled(), 'elements/rtpsink.c', get_option('rtp').disabled(), 'elements/sdpdemux.c', get_option('sdp').disabled(), gstsdp_dep, + 'elements/segmentationoverlay.c', not gstanalyticsoverlay_ext_dep.found(), gstanalytics_dep, gstvideo_dep, 'elements/srt.c', not srt_dep.found(), srt_dep, 'elements/srtp.c', not srtp_dep.found(), srtp_dep, 'elements/switchbin.c', get_option('switchbin').disabled(),
View file
_service:download_files:gst-plugins-bad-1.28.7.tar.xz/tests/examples/vulkan/vulkanenc.c -> _service:download_files:gst-plugins-bad-1.28.8.tar.xz/tests/examples/vulkan/vulkanenc.c
Changed
@@ -452,13 +452,14 @@ break; } - g_free (codec); - if (idx == G_N_ELEMENTS (elements_map)) { gst_printerrln ("Unsupported codec: %s", codec); + g_free (codec); exit (1); } + g_free (codec); + pipeline = gst_pipeline_new (NULL); MAKE_ELEMENT_AND_ADD (src, "videotestsrc");
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
.