diff --git a/MR-221-video-anc-add-two-new-CEA-608-caption-formats.patch b/MR-221-video-anc-add-two-new-CEA-608-caption-formats.patch index 60afd2b..3a9f6d3 100644 --- a/MR-221-video-anc-add-two-new-CEA-608-caption-formats.patch +++ b/MR-221-video-anc-add-two-new-CEA-608-caption-formats.patch @@ -1,10 +1,10 @@ https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/221 -Index: gst-plugins-base-1.22.0/gst-libs/gst/video/video-anc.c +Index: gst-plugins-base-1.24.5/gst-libs/gst/video/video-anc.c =================================================================== ---- gst-plugins-base-1.22.0.orig/gst-libs/gst/video/video-anc.c -+++ gst-plugins-base-1.22.0/gst-libs/gst/video/video-anc.c -@@ -1017,6 +1017,8 @@ gst_buffer_add_video_caption_meta (GstBu +--- gst-plugins-base-1.24.5.orig/gst-libs/gst/video/video-anc.c ++++ gst-plugins-base-1.24.5/gst-libs/gst/video/video-anc.c +@@ -1022,6 +1022,8 @@ gst_buffer_add_video_caption_meta (GstBu switch (caption_type) { case GST_VIDEO_CAPTION_TYPE_CEA608_RAW: case GST_VIDEO_CAPTION_TYPE_CEA608_S334_1A: @@ -13,7 +13,7 @@ Index: gst-plugins-base-1.22.0/gst-libs/gst/video/video-anc.c case GST_VIDEO_CAPTION_TYPE_CEA708_RAW: case GST_VIDEO_CAPTION_TYPE_CEA708_CDP: break; -@@ -1066,6 +1068,10 @@ gst_video_caption_type_from_caps (const +@@ -1071,6 +1073,10 @@ gst_video_caption_type_from_caps (const return GST_VIDEO_CAPTION_TYPE_CEA608_RAW; } else if (g_strcmp0 (format, "s334-1a") == 0) { return GST_VIDEO_CAPTION_TYPE_CEA608_S334_1A; @@ -24,7 +24,7 @@ Index: gst-plugins-base-1.22.0/gst-libs/gst/video/video-anc.c } } else if (gst_structure_has_name (s, "closedcaption/x-cea-708")) { if (g_strcmp0 (format, "cc_data") == 0) { -@@ -1103,6 +1109,14 @@ gst_video_caption_type_to_caps (GstVideo +@@ -1108,6 +1114,14 @@ gst_video_caption_type_to_caps (GstVideo caption_caps = gst_caps_new_simple ("closedcaption/x-cea-608", "format", G_TYPE_STRING, "s334-1a", NULL); break; @@ -39,11 +39,11 @@ Index: gst-plugins-base-1.22.0/gst-libs/gst/video/video-anc.c case GST_VIDEO_CAPTION_TYPE_CEA708_RAW: caption_caps = gst_caps_new_simple ("closedcaption/x-cea-708", "format", G_TYPE_STRING, "cc_data", NULL); -Index: gst-plugins-base-1.22.0/gst-libs/gst/video/video-anc.h +Index: gst-plugins-base-1.24.5/gst-libs/gst/video/video-anc.h =================================================================== ---- gst-plugins-base-1.22.0.orig/gst-libs/gst/video/video-anc.h -+++ gst-plugins-base-1.22.0/gst-libs/gst/video/video-anc.h -@@ -345,7 +345,53 @@ GstVideoBarMeta *gst_buffer_add_video_ba +--- gst-plugins-base-1.24.5.orig/gst-libs/gst/video/video-anc.h ++++ gst-plugins-base-1.24.5/gst-libs/gst/video/video-anc.h +@@ -490,7 +490,53 @@ GstVideoBarMeta *gst_buffer_add_video_ba * offset relative to the base-line of the original image format (line 9 * for 525-line field 1, line 272 for 525-line field 2, line 5 for * 625-line field 1 and line 318 for 625-line field 2). @@ -98,7 +98,7 @@ Index: gst-plugins-base-1.22.0/gst-libs/gst/video/video-anc.h * can also contain 608-in-708 and the first byte of each triplet has to * be inspected for detecting the type. * @GST_VIDEO_CAPTION_TYPE_CEA708_CDP: CEA-708 (and optionally CEA-608) in -@@ -361,7 +407,9 @@ typedef enum { +@@ -506,7 +552,9 @@ typedef enum { GST_VIDEO_CAPTION_TYPE_CEA608_RAW = 1, GST_VIDEO_CAPTION_TYPE_CEA608_S334_1A = 2, GST_VIDEO_CAPTION_TYPE_CEA708_RAW = 3, diff --git a/add_wayland_dep_to_tests.patch b/add_wayland_dep_to_tests.patch index f513b30..eeef689 100644 --- a/add_wayland_dep_to_tests.patch +++ b/add_wayland_dep_to_tests.patch @@ -1,8 +1,8 @@ -Index: gst-plugins-base-1.22.0/tests/check/meson.build +Index: gst-plugins-base-1.24.5/tests/check/meson.build =================================================================== ---- gst-plugins-base-1.22.0.orig/tests/check/meson.build -+++ gst-plugins-base-1.22.0/tests/check/meson.build -@@ -135,7 +135,7 @@ if build_gstgl +--- gst-plugins-base-1.24.5.orig/tests/check/meson.build ++++ gst-plugins-base-1.24.5/tests/check/meson.build +@@ -138,7 +138,7 @@ if build_gstgl test_defines += ['-DTEST_GST_GL_ABI_CHECK'] endif diff --git a/gst-plugins-base-1.24.0.tar.xz b/gst-plugins-base-1.24.0.tar.xz deleted file mode 100644 index e15a59f..0000000 --- a/gst-plugins-base-1.24.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f33774129c437e2207034f8927af4cf7ed8c0f006a4602b5cde2823ec6c0cc07 -size 2414344 diff --git a/gst-plugins-base-1.24.7.tar.xz b/gst-plugins-base-1.24.7.tar.xz new file mode 100644 index 0000000..a7047af --- /dev/null +++ b/gst-plugins-base-1.24.7.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1528d1746a393299f5ac17ebf13a32a660202f1e29d0a852a2250f6a059a2fda +size 2438084 diff --git a/gst-plugins-base-audiobasesink-gap.patch b/gst-plugins-base-audiobasesink-gap.patch deleted file mode 100644 index 40748f1..0000000 --- a/gst-plugins-base-audiobasesink-gap.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/gst-libs/gst/audio/gstaudiobasesink.c b/gst-libs/gst/audio/gstaudiobasesink.c -index 1f843ac..891941d 100644 ---- a/gst-libs/gst/audio/gstaudiobasesink.c -+++ b/gst-libs/gst/audio/gstaudiobasesink.c -@@ -1124,15 +1124,6 @@ gst_audio_base_sink_wait_event (GstBaseSink * bsink, GstEvent * event) - /* Make sure the ringbuffer will start again if interrupted during event_wait() */ - g_atomic_int_set (&sink->eos_rendering, 1); - clear_force_start_flag = TRUE; -- -- /* For gap events, don't actually wait for the clock to -- * reach that time, or it will drain the ringbuffer, just -- * ensure we're prerolled and let the next actual buffer -- * get rendered where it belongs */ -- if (GST_EVENT_TYPE (event) == GST_EVENT_GAP) { -- ret = gst_base_sink_do_preroll (bsink, GST_MINI_OBJECT_CAST (event)); -- goto done; -- } - break; - default: - break; diff --git a/gst-plugins-base-decodebin3-collection-identity-check.patch b/gst-plugins-base-decodebin3-collection-identity-check.patch new file mode 100644 index 0000000..b4ddead --- /dev/null +++ b/gst-plugins-base-decodebin3-collection-identity-check.patch @@ -0,0 +1,67 @@ +From 378e78f285a3f14c0c53473948090464fa48147b Mon Sep 17 00:00:00 2001 +From: Edward Hervey +Date: Wed, 21 Aug 2024 16:29:03 +0200 +Subject: [PATCH] decodebin3: Fix collection identity check + +Collections can be auto-generated from upstream and yet have exactly the same +streams in it. + +Therefore do a more in-depth check for equality. + +Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3742 +--- + .../gst/playback/gstdecodebin3.c | 26 ++++++++++++++++++- + 1 file changed, 25 insertions(+), 1 deletion(-) + +diff --git a/gst/playback/gstdecodebin3.c b/gst/playback/gstdecodebin3.c +index 56ef496468ac..78b79c776ba6 100644 +--- a/gst/playback/gstdecodebin3.c ++++ b/gst/playback/gstdecodebin3.c +@@ -2609,6 +2609,29 @@ db_collection_new (GstStreamCollection * collection) + return db_collection; + } + ++static gboolean ++collections_are_identical (GstStreamCollection * collection, ++ GstStreamCollection * previous) ++{ ++ guint i; ++ ++ if (collection == previous) ++ return TRUE; ++ ++ if (gst_stream_collection_get_size (collection) != ++ gst_stream_collection_get_size (previous)) ++ return FALSE; ++ ++ for (i = 0; i < gst_stream_collection_get_size (previous); i++) { ++ GstStream *stream = gst_stream_collection_get_stream (previous, i); ++ const gchar *sid = gst_stream_get_stream_id (stream); ++ if (!stream_in_collection (collection, (gchar *) sid)) ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ + /** handle_stream_collection_locked: + * @dbin: + * @collection: (transfer none): The new collection for @input. Can be %NULL. +@@ -2683,12 +2706,13 @@ handle_stream_collection_locked (GstDecodebin3 * dbin, + if (dbin->input_collection) { + GstStreamCollection *previous = dbin->input_collection->collection; + +- if (collection == previous) { ++ if (collections_are_identical (collection, previous)) { + GST_DEBUG_OBJECT (dbin, "Collection didn't change"); + gst_object_unref (collection); + SELECTION_UNLOCK (dbin); + return NULL; + } ++ + /* Check if this collection is an update of the previous one */ + if (gst_stream_collection_get_size (collection) > + gst_stream_collection_get_size (previous)) { +-- +GitLab + diff --git a/gstreamer-plugins-base-CVE-2024-4453.patch b/gstreamer-plugins-base-CVE-2024-4453.patch deleted file mode 100644 index bb0c317..0000000 --- a/gstreamer-plugins-base-CVE-2024-4453.patch +++ /dev/null @@ -1,53 +0,0 @@ -commit e68eccff103ab0e91e6d77a892f57131b33902f5 -Author: Sebastian Dröge -Date: Thu Apr 25 15:21:20 2024 +0300 - - exiftag: Prevent integer overflows and out of bounds reads when handling undefined tags - - Fixes ZDI-CAN-23896 - Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3483 - - Part-of: - -diff -Nura gst-plugins-base-1.24.0/gst-libs/gst/tag/gstexiftag.c gst-plugins-base-1.24.0_new/gst-libs/gst/tag/gstexiftag.c ---- gst-plugins-base-1.24.0/gst-libs/gst/tag/gstexiftag.c 2024-03-05 07:51:42.000000000 +0800 -+++ gst-plugins-base-1.24.0_new/gst-libs/gst/tag/gstexiftag.c 2024-05-27 19:25:58.227183616 +0800 -@@ -1383,6 +1383,7 @@ - - if (count > 4) { - GstMapInfo info; -+ gsize alloc_size; - - if (offset < reader->base_offset) { - GST_WARNING ("Offset is smaller (%u) than base offset (%u)", offset, -@@ -1404,14 +1405,28 @@ - return; - } - -+ if (info.size - real_offset < count) { -+ GST_WARNING ("Invalid size %u for buffer of size %" G_GSIZE_FORMAT -+ ", not adding tag %s", count, info.size, tag->gst_tag); -+ gst_buffer_unmap (reader->buffer, &info); -+ return; -+ } -+ -+ if (!g_size_checked_add (&alloc_size, count, 1)) { -+ GST_WARNING ("Invalid size %u for buffer of size %" G_GSIZE_FORMAT -+ ", not adding tag %s", real_offset, info.size, tag->gst_tag); -+ gst_buffer_unmap (reader->buffer, &info); -+ return; -+ } -+ - /* +1 because it could be a string without the \0 */ -- data = malloc (sizeof (guint8) * count + 1); -+ data = malloc (alloc_size); - memcpy (data, info.data + real_offset, count); - data[count] = 0; - - gst_buffer_unmap (reader->buffer, &info); - } else { -- data = malloc (sizeof (guint8) * count + 1); -+ data = malloc (count + 1); - memcpy (data, (guint8 *) offset_as_data, count); - data[count] = 0; - } diff --git a/gstreamer-plugins-base.changes b/gstreamer-plugins-base.changes index 04738cd..433b05f 100644 --- a/gstreamer-plugins-base.changes +++ b/gstreamer-plugins-base.changes @@ -1,3 +1,85 @@ +------------------------------------------------------------------- +Fri Aug 23 07:15:20 UTC 2024 - Bjørn Lie + +- Update to version 1.24.7: + + pbutils: descriptions: use subsampling factor to get YUV + subsampling + + rtspconnection: Handle invalid argument properly + + urisourcebin: + - Actually drop EOS on old-school pad switch + - Don't hold lock when emitting about-to-finish + + gst-launch deadlock with two playbin3s + + xvimagesink: Fix crash in pool on error + +------------------------------------------------------------------- +Wed Aug 21 15:43:45 UTC 2024 - Jonas Kvinge + +- Add gst-plugins-base-decodebin3-collection-identity-check.patch: + - Fixes a assertion causing crash on track change. Upstream bug: + https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3742 + +------------------------------------------------------------------- +Wed Jul 31 13:41:59 UTC 2024 - Dominique Leuenberger + +- Update to version 1.24.6: + + Highlighted bugfixes: + - Fix compatibility with FFmpeg 7.0. + - qmlglsink: Fix failure to display content on recent Android + devices. + - adaptivedemux: Fix handling of closed caption streams. + - cuda: Fix runtime compiler loading with old CUDA tookit. + - decodebin3 stream selection handling fixes. + - d3d11compositor, d3d12compositor: Fix transparent background + mode with YUV output. + - d3d12converter: Make gamma remap work as intended. + - h264decoder: Update output frame duration for interlaced + video when second field frame is discarded. + - macOS audio device provider now listens to audio devices + being added/removed at runtime. + - Rust plugins: audioloudnorm, s3hlssink, gtk4paintablesink, + livesync and webrtcsink fixes. + - videoaggregator: preserve features in non-alpha caps for + subclasses with non-system memory sink caps. + - vtenc: Fix redistribute latency spam. + - v4l2: fixes for complex video formats. + - va: Fix strides when importing DMABUFs, dmabuf handle leaks, + and blocklist unmaintained Intel i965 driver for encoding. + - waylandsink: Fix surface cropping for rotated streams. + - webrtcdsp: Enable multi_channel processing to fix handling of + stereo streams. + - Various bug fixes, memory leak fixes, and other stability and + reliability improvements. + +------------------------------------------------------------------- +Thu Jun 27 18:20:13 UTC 2024 - Bjørn Lie + +- Update to version 1.24.5: + + Highlighted bugfixes: + - webrtcsink: Support for AV1 via nvav1enc, av1enc or rav1enc + encoders + - AV1 RTP payloader/depayloader fixes to work correctly with + Chrome and Pion WebRTC + - av1parse, av1dec error handling/robustness improvements + - av1enc: Handle force-keyunit events properly for WebRTC + - decodebin3: selection and collection handling improvements + - hlsdemux2: Various fixes for discontinuities, variant + switching, playlist updates + - qml6glsink: fix RGB format support + - rtspsrc: more control URL handling fixes + - v4l2src: Interpret V4L2 report of sync loss as video signal + loss + - d3d12 encoder, memory and videosink fixes + - vtdec: more robust error handling, fix regression + - ndi: support for NDI SDK v6 + - Various bug fixes, memory leak fixes, and other stability and + reliability improvements +- Please see https://gstreamer.freedesktop.org/releases/1.24/ for + changes between 1.24.0 and this version and even more in-depth + info. +- Refresh patches with quilt. +- Drop gst-plugins-base-audiobasesink-gap.patch and + gstreamer-plugins-base-CVE-2024-4453.patch: Fixed upstream. + ------------------------------------------------------------------- Wed May 22 12:45:03 UTC 2024 - Cliff Zhao diff --git a/gstreamer-plugins-base.spec b/gstreamer-plugins-base.spec index 9b9e1c0..c4cc441 100644 --- a/gstreamer-plugins-base.spec +++ b/gstreamer-plugins-base.spec @@ -20,7 +20,7 @@ %define gst_branch 1.0 %define gstreamer_req_version %(echo %{version} | sed -e "s/+.*//") Name: gstreamer-plugins-base -Version: 1.24.0 +Version: 1.24.7 Release: 0 Summary: GStreamer Streaming-Media Framework Plug-Ins License: GPL-2.0-or-later AND LGPL-2.1-or-later @@ -31,10 +31,8 @@ Source1: gstreamer-plugins-base.appdata.xml Source2: baselibs.conf Patch1: add_wayland_dep_to_tests.patch Patch2: MR-221-video-anc-add-two-new-CEA-608-caption-formats.patch -# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3303 -Patch3: gst-plugins-base-audiobasesink-gap.patch -# PATCH-FIX-UPSTREAM gstreamer-plugins-base-CVE-2024-4453.patch CVE-2024-4453 ZDI-24-467 ZDI-CAN-23896 bsc#1224806 qzhao@suse.com -- Prevent integer overflows and out of bounds reads when handling undefined tags. -Patch4: gstreamer-plugins-base-CVE-2024-4453.patch +Patch3: gst-plugins-base-decodebin3-collection-identity-check.patch + BuildRequires: Mesa-libGLESv3-devel BuildRequires: cdparanoia-devel BuildRequires: gcc-c++