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 39
View file
gstreamer-plugins-bad-codecs.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Tue Sep 23 07:14:47 UTC 2025 - Bjørn Lie <zaitor@opensuse.org> + +- Update to version 1.26.6 + +------------------------------------------------------------------- Thu Aug 14 16:20:34 UTC 2025 - Bjørn Lie <zaitor@opensuse.org> - Update to version 1.26.5
View file
gstreamer-plugins-bad-codecs.spec
Changed
@@ -7,7 +7,7 @@ %define _version 1.26.0 Name: gstreamer-plugins-bad-codecs -Version: 1.26.5 +Version: 1.26.6 Release: 0 Summary: Codecs/plugins for gstreamer-plugins-bad License: LGPL-2.1-or-later
View file
_service
Changed
@@ -2,7 +2,7 @@ <service name="download_url"> <param name="host">gstreamer.freedesktop.org</param> <param name="protocol">https</param> - <param name="path">/src/gst-plugins-bad/gst-plugins-bad-1.26.5.tar.xz</param> + <param name="path">/src/gst-plugins-bad/gst-plugins-bad-1.26.6.tar.xz</param> </service> <service name="set_version" mode="buildtime"/> </services>
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ChangeLog -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ChangeLog
Changed
@@ -1,3 +1,240 @@ +=== release 1.26.6 === + +2025-09-14 13:13:58 +0100 Tim-Philipp Müller <tim@centricular.com> + + * NEWS: + * RELEASE: + * gst-plugins-bad.doap: + * meson.build: + Release 1.26.6 + +2025-09-12 21:35:58 +0900 Seungha Yang <seungha@centricular.com> + + * gst-libs/gst/d3d12/gstd3d12memory-private.h: + * gst-libs/gst/d3d12/gstd3d12memory.cpp: + * sys/dwrite/gstdwriterender_d3d12.cpp: + dwrite: Fix D3D12 critical warning + When using convert + blend mode, the final render target resource + is also used as a source resource owned by our fence data storage. + As a result, the resource may not be writable if the conversion + command has not yet finished. To address this, add a private + method that allows setting the fence without a writability check + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9686> + +2025-07-23 11:37:15 -0400 Xavier Claessens <xclaessens@netflix.com> + + * tests/check/elements/mpegtsmux.c: + mpegtsmux: Caps event fails with stream type change error + If mpegtsmux receives the same caps again, it wrongly claims the stream + type changed: + error: Stream type change from 06 to 8f not supported + This adds a unit test that demonstrate the issue in the very hacky way. + I have seen this happening with the below pipeline when upstream caps + changes. Since the caps filter fixates the caps received by opusenc and + mpegtsmux, the stream type cannot change. + ... + ! audioconvert + ! audio/x-raw,format=S16LE,channels=2,rate=48000 + ! opusenc bitrate=128000 + ! mpegtsmux + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9678> + +2025-08-07 14:31:38 +1000 Jan Schmidt <jan@centricular.com> + + * gst/mpegtsmux/gstbasetsmux.c: + mpegtsmux: Use 'internal' stream_type to detect codec changes + The TsMuxStream internal_stream_type field stores the original + 'full' stream type (such as Opus), while the stream_type field + stores the value that will actually be written into the MPEG-TS + packets according to the codec mappings. When checking if + input caps are changing stream type, check the original type. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9678> + +2025-09-05 08:25:22 +0200 Ola Fornander <ola.fornander@axis.com> + + * ext/curl/gstcurlsmtpsink.c: + curlsmtpsink: adapt to date formatting issue + In glib 2.73.1, padding for %e in gdatetime was changed from "space" + to the Unicode character (U+2007). This violates rfc5322 (Internet + Message Format), which states that a message shall be composed of + characters in the range of 1 through 127 and interpreted as US-ASCII + characters. Hence, when using g_date_time_format, it is necessary to + instead write %_e to enforce space padding. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9645> + +2025-09-02 09:06:20 +0530 Nirbheek Chauhan <nirbheek@centricular.com> + + * ext/openh264/meson.build: + meson: Avoid pulling in gtest for openh264 + Emits a big warning about wrapdbv1 and the updated wrap fails to build + on Windows. We don't need the tests anyway. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9637> + +2025-09-01 21:02:22 +0530 Nirbheek Chauhan <nirbheek@centricular.com> + + * ext/analyticsoverlay/meson.build: + * ext/avtp/meson.build: + * ext/codec2json/meson.build: + * ext/iqa/meson.build: + * ext/mdns/meson.build: + * ext/openh264/meson.build: + * ext/openjpeg/meson.build: + * ext/qroverlay/meson.build: + * ext/soundtouch/meson.build: + * gst-libs/gst/webrtc/nice/meson.build: + * meson.build: + * sys/tinyalsa/meson.build: + meson: Convert all remaining fallback: usages to provide + Only commonly-used plugin deps like pango, orc, openh264, libvpx, + libnice are enabled by default. + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1788 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9637> + +2025-08-26 20:17:36 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + + * ext/vulkan/vkh264dec.c: + * ext/vulkan/vkh265dec.c: + vulkanh26xdec: fix discont state handling + It fixes a couple tests in fluster for H.265 decoding. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9613> + +2025-08-17 15:58:22 -0400 Daniel Morin <daniel.morin@collabora.com> + + * gst-libs/gst/analytics/gsttensormeta.c: + analytics: always add GstTensorMeta + Always add GstTensorMeta to buffer instead of re-using existing GstTensorMeta + when it's already present. The reason for the change is when we have cascaded + inference elements overwriting (tflite) or leaking (ONNX) GstTensorMeta when we + have cascaded inferences. We didn't create and API to append to GstTensorMeta + and I think it's more convenient to have a new GstTensorMeta for each + inferences. It's also more clear that a group of tensor was produced by one + inference but doesn't limit tensordecoders from using tensors produced by + multiple inference. I don't see much value in having all tensors data always + inside one GstTensorMeta since appending would mean re-allocation of the tensors + array anyway. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9601> + +2025-08-19 11:15:29 +0100 Ian Napier <ian@digitaledgesubsea.com> + + * sys/decklink/gstdecklink.h: + * sys/decklink/gstdecklinkvideosrc.cpp: + decklinkvideosrc: fix decklinkvideosrc becomes unrecoverable if it fails to start streaming + See #2611 + When transitioning to PLAYING we call IDeckLinkInput::StartStreams() (via GstDecklinkInput::start_streams). This can + fail for various reasons, including if the hardware device is already in use. + Previously, we logged StartStreams() failure as an element error but otherwise continued to successfully transition to + PLAYING. Now, if StartStreams() returns an error we fail the state change. + If StartStreams() fails then a subsequent call to StopStreams(), when transitioning PAUSED to READY, will also fail. + Previously, if StopStreams() failed then the state change also failed. Unfortunately this prevented the element from + later being disposed, which in turn meant the associated hardware resources was never freed. Consequently, if a + decklinkvideosrc failed to transition PAUSED to READY, then the associated hardware device could not subsequently be + used by any other decklinkvideosrc. + Now, we log an element error if StopStreams() fails but otherwise consider the state change to have succeeded. This + means that the element can be disposed and the associated hardware resource released. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9592> + +2025-08-15 13:02:57 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + + * ext/vulkan/vkh264dec.c: + * ext/vulkan/vkh265dec.c: + vulkanh26xdec: fix debug category name + This is a regression from merge request !78011 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9562> + +2025-08-15 12:06:45 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + + * ext/vulkan/vkh264dec.c: + * ext/vulkan/vkh265dec.c: + vulkanh26xdec: re-negotiate after FLUSH + Vulkan decoders also have the same issue as VA decoders fixed in !9457, where + FLUSH event doesn't renegotiate downstream the pipeline. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9562> + +2025-08-14 15:55:41 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> + + * tests/check/elements/cccombiner.c: + tests: cccombiner: Test durationless buffers + Crashes without the previous fix. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9559> + +2025-07-17 14:40:47 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> + + * ext/closedcaption/gstcccombiner.c: + cccombiner: Don't crash when first frame has no duration + Aggregate again so the code above can determine the end time or EOS. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9559> + +2025-07-17 14:29:07 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> + + * ext/closedcaption/gstcccombiner.c: + cccombiner: Avoid dividing by zero framerate + This was broken in b29262e662b86cd76225894f7504ee505125fa49. + The `gst_util_uint64_scale` emitted a critical warning and returned + `GST_CLOCK_TIME_NONE`, so beyond removing the warning this fix does not + change behavior. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9559> + +2025-08-12 21:27:53 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + + * tests/check/libs/vkimagebufferpool.c: + test: vkimagebufferpool: silence validation + The validation complained with + VUID-VkImageCreateInfo-usage-requiredbitmask: + vkCreateImage(): pCreateInfo->usage is zero. + This patch force to use the internal defaults in vkimagebufferpool if no usage + is defined. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9546> + +2025-08-12 14:24:12 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> + + * gst-libs/gst/vulkan/gstvkphysicaldevice.c: + vkphysicaldevice: silence validation for features + With merge request !9438 the validation layer started to complain with + VUID-VkDeviceCreateInfo-pNext-02829 + This patch fixes this ill-usage of Vulkan API, by removing the feature enabling + of sampler ycbcr conversion, since it was promoted since Vulkan 1.1, and in + GStreamer is only used in Vulkan Video operations, which are only enabled in + Vulkan 1.3+. + Also, these features detection and enabling were moved to a function called when + filling the physical device data, in order to check the API version of the + device driver before adding the enabling of the feature. + Finally, the getters were adapted to use the version feature structure if the + device driver version matches. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9546> + +2025-08-11 22:54:29 +1000 Jan Schmidt <jan@centricular.com> + + * ext/hls/m3u8.c: + hlsdemux: Fix parsing of byterange and init map directives + Don't reuse the same offset and size variables when reading + the byterange out of a MAP directive, as it can overwrite + values from a pending BYTERANGE directive for the next + fragment URI. + Fixes problems where the EXT-X-MAP directive has been written + into the playlist between an EXT-X-BYTERANGE and the fragment + URI it applies to. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9541> + +2025-08-08 17:38:33 +0800 Qian Hu (胡骞) <qian.hu@mediatek.com> + + * gst-libs/gst/wayland/gstwldisplay.c: + waylandsink: add some error handler for event dispatch + if wl client got last_error, wl_display_dispatch_queue_pending + will return -1, may lead to unhandled case, we should quit. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9537> + +2025-08-08 07:13:24 +0200 Jan Alexander Steffens (heftig) <heftig@archlinux.org> + + * tests/check/elements/zbar.c: + zbar: tests: Handle symbol-bytes as not null-terminated + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4592 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9514> + +2025-08-07 19:15:29 +0100 Tim-Philipp Müller <tim@centricular.com> + + * meson.build: + Back to development after 1.26.5 + === release 1.26.5 === 2025-08-07 19:06:46 +0100 Tim-Philipp Müller <tim@centricular.com>
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/NEWS -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/NEWS
Changed
@@ -2,11 +2,11 @@ GStreamer 1.26.0 was originally released on 11 March 2025. -The latest bug-fix release in the stable 1.26 series is 1.26.5 and was released on 07 August 2025. +The latest bug-fix release in the stable 1.26 series is 1.26.6 and was released on 14 September 2025. See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of this document. -Last updated: Thursday 07 August 2025, 18:00 UTC (log) +Last updated: Sunday 14 September 2025, 12:00 UTC (log) ## Introduction @@ -2198,23 +2198,40 @@ Highlighted bugfixes in 1.26.5 - audioconvert: Fix caps negotiation regression when using a mix matrix + - aws: Add support for brevity in awstranslate and add option to partition speakers in the transcription output of awstranscriber2 + - speechmatics speech-to-text: Expose mask-profanities property + - cea708mux: Add support for discarding select services on each input + - cea608overlay, cea708overlay: Accept GPU memory buffers if downstream supports the overlay composition meta + - d3d12screencapture source element and device provider fixes + - decodebin3: Don’t error on an incoming ONVIF metadata stream + - uridecodebin3: Fix potential crash when adding URIs to messages, e.g. if no decoder is available + - v4l2: Fix memory leak for dynamic resolution change + - VA encoder fixes + - videorate, imagefreeze: Add support for JPEG XS + - Vulkan integration fixes + - wasapi2 audio device monitor improvements + - webrtc: Add WHEP client signaller and add whepclientsrc element on top of webrtcsrc using that + - threadshare: Many improvements and fixes to the generic threadshare and RTP threadshare elements + - rtpbin2 improvements and fixes + - gst-device-monitor-1.0 command line tool improvements + - Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements gstreamer @@ -2260,33 +2277,63 @@ GStreamer Rust plugins -- awstranscriber2,awstranslate: Handle multiple stream-start event -- awstranslate: expose property for turning brevity on -- awstranscriber2: add property for setting show_speaker_labels -- cea708mux: expose “discarded-services” property on sink pads +- Note: This list has been updated, since it originally accidentally included some Merge Requests that only landed in the main + branch, not in the 0.14 branch that ships with our GStreamer 1.26.5 packages. + +- awstranscriber2, awstranslate: Handle multiple stream-start event + +- awstranslate: expose property for turning brevity on) + +- awstranscriber2: add property for setting show_speaker_labels) + +- cea708mux: expose “discarded-services” property on sink pads) + - ceaX08overlay: support ANY caps features, allowing e.g. memory:GLMemory if downstream supports the overlay composition meta + - hlsmultivariantsink: Fix master playlist version + - rtprecv: Drop state lock before chaining RTCP packets from the RTP chain function -- rtpbin2: Add examples + +- Add rtpbin2 examples + - rtpmp4apay2: fix payload size prefix + - rtp: threadshare: fix some property ranges + - mpegtslivesrc: Remove leftover debug message -- speechmatics: expose mask-profanities property + +- speechmatics: expose mask-profanities property) + - ts-audiotestsrc fixes + - threadshare: fix flush for ts-queue ts-proxy & ts-intersrc + - threadshare: fix regression in ts-proxysrc + - threadshare: improvements to some elements -- threadshare: udp: avoid getifaddrs in android + +- threadshare: udp: avoid getifaddrs in android) + - threadshare: Enable windows Win32_Networking feature + - threadshare: queue & proxy: fix race condition stopping + - threadshare: Also enable windows Win32_Networking_WinSock feature + - tracers: pipeline-snapshot: reduce WebSocket connection log level + - tracers: queue-levels: add support for threadshare DataQueue related elements + - tracers: Update to etherparse 0.19 + - transcriberbin: Fix handling of upstream latency query -- webrtc: android example: fix media handling initialization sequence + +- webrtc: android example: fix media handling initialization sequence) + - webrtcsink: Move videorate before videoconvert and videoscale to avoid processing frames that would be dropped + - whep: add WHEP client signaller + - Fix various new clippy 1.89 warnings gst-libav @@ -2352,6 +2399,206 @@ - List of Merge Requests applied in 1.26.5 - List of Issues fixed in 1.26.5 +1.26.6 + +The sixth 1.26 bug-fix release (1.26.6) was released on 14 September 2025. + +This release only contains bugfixes including some important playback fixes, and it should be safe to update from 1.26.x. + +Highlighted bugfixes in 1.26.6 + +- analytics GstTensorMeta handling changes (see note below) +- closed caption combiner and transcriberbin stability fixes +- decklinkvideosrc: fix unrecoverable state after failing to start streaming because device is busy +- decodebin3 tag handling improvements +- fallbacksrc: Fix sources only being restarted once, as well as some deadlocks and race conditions on shutdown +- gtk4paintablesink: Try importing dmabufs withouth DMA_DRM caps +- hlsdemux2: Fix parsing of byterange and init map directives +- rtpmp4gdepay2: allow only constantduration with neither constantsize nor sizelength set +- spotifysrc: update to librespot 0.7 to make work after recent Spotify changes +- threadshare: new blocking adapter element for use in front of block elements such as sinks that sync to the clock +- threadshare: various other threadshare element fixes and improvements +- v4l2: Add support for WVC1 and WMV3 +- videorate: possible performance improvements when operating in drop-only mode +- GstBaseParse fixes +- Vulkan video decoder fixes +- Fix gst-device-monitor-1.0 tool device-path regression on Windows +- Monorepo development environment builds fewer plugins using subprojects by default, those require explicit enablement now +- Python bindings: Handle buffer PTS, DTS, duration, offset, and offset-end as unsigned long long (regression fix) +- Cerbero: Reduce recipe parallelism in various cases and dump cerbero and recipe versions into datadir during packaging +- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements + +Possibly breaking behavioural changes + +- Previously it was guaranteed that there is only ever up to one GstTensorMeta per buffer. This is no longer true and code + working with GstTensorMeta must be able to handle multiple GstTensorMeta now (after this Merge Request). + +gstreamer + +- baseparse: Try harder to fixate caps based on upstream in default negotiation +- gst-discoverer reports 1x1 dimensions for “valid” MP4 files +- baseparse: don’t clear most sticky events after a FLUSH_STOP event +- gstreamer: Disable miniobject inline functions for gobject-introspection for non-subprojects too +- gstreamer: Make sure to zero-initialize the GValue before G_VALUE_COLLECT_INIT +- ptp: Fix a new Rust 1.89 compiler warning on Windows +- ptp: Fix new compiler warning with Rust 1.89 +- Segmentation fault when compiled with “-ftrivial-auto-var-init=pattern”. Use of unitialized GValue. + +gst-plugins-base + +- decodebin3: Update stream tags +- rtpbasedepayload: Avoid potential use-after free +- rtspconnection: Add get_url and get_ip return value annotation +- gst_rtsp_connection_get_url return value transfer annotation missing +- videometa: Fix valgrind warning when deserializing video meta +- videorate: don’t hold the reference to the buffer in drop-only mode +- gst-device-monitor-1.0: Fix device-path regression on Windows +- gst-device-monitor-1.0: Add quoting for powershell and cmd +- Monorepo: opengl, vorbis, plugins require explicit enablement now for a build using the Meson subproject fallback + +gst-plugins-good + +- adaptivedemux2: fix crash due to log +- adaptivedemux2: Crash in logging when “Dropping EOS before next period” +- hlsdemux2: Fix parsing of byterange and init map directives +- mpg123audiodec: Always break the decoding loop and relay downstream flow errors upstream +- v4l2: Add support for WVC1 and WMV3 +- Monorepo: dv plugin requires explicit enablement now for a build using the Meson subproject fallback + +gst-plugins-bad + +- analytics: always add GstTensorMeta +- cccombiner: Crash fixes +- curlsmtpsink: adapt to date formatting issue +- decklinkvideosrc: fix decklinkvideosrc becomes unrecoverable if it fails to start streaming +- decklinkvideosrc gets into unrecoverable state if device is busy +- dwrite: Fix D3D12 critical warning +- hlsdemux: Fix parsing of byterange and init map directives +- mpegtsmux: Caps event fails with stream type change error +- vulkanh24xdec: couple of fixes +- vulkanh26xdec: fix discont state handling +- waylandsink: add some error handler for event dispatch +- zbar: tests: Handle symbol-bytes as not null-terminated +- Monorepo: avtp, codec2json, iqa, microdns, openjpeg, qroverlay, soundtouch, tinyalsa plugins require explicit enablement now + for a build using the Meson subproject fallback + +gst-plugins-ugly + +- No changes + +GStreamer Rust plugins + +- analyticscombiner: Use NULL caps instead of EMPTY caps in the array for streams with no caps +- aws: Ensure task stopping on paused-to-ready state change +- fallbacksrc: Don’t panic during retries if the element was shut down in parallel +- fallbacksrc: Don’t restart source if the element is just being shut down +- fallbacksrc: Fix some custom source deadlocks +- fallbacksrc: Fix sources only being restarted once +- gtk4: Try importing dmabufs withouth DMA_DRM caps +- inter: Give the appsrc/appsink a name that has the parent element as prefix +- mp4: Skip tests using x264enc if it does not exist +- rtpgccbwe: avoid clamp() panic when min_bitrate > max_bitrate +- rtpmp4gdepay2: allow only constantduration with neither constantsize nor sizelength set +- rtprecv: fix race condition on first buffer +- speechmatics: Specify rustls as an explicit dependency +- spotify: update to librespot 0.7 +- threadshare: add a blocking adapter element +- threadshare: always use block_on_or_add_subtask +- threadshare: audiotestsrc: fix setting samples-per-buffer… +- threadshare: blocking_adapter: fix Since marker in docs +- threadshare: fix resources not available when preparing asynchronously +- threadshare: fix ts-inter test one_to_one_up_first +- threadshare: have Task log its obj +- threadshare: intersink: return from blocking tasks when stopping +- threadshare: inter: update doc example +- threadshare: runtime/pad: lower log level pushing Buffer to flushing pad +- threadshare: separate blocking & throttling schedulers +- threadshare: update examples +- threadshare: Update to getifaddrs 0.5 +- threadshare: Fix macOS build post getifaddrs 0.5 update +- threadshare: Bump up getiffaddrs to 0.1.5 and revert “udp: avoid getifaddrs in android” +- threadshare: Reapply “udp: avoid getifaddrs in android” +- transcriberbin: Fix some deadlocks +- Update dependencies +- webrtc: Migrate to warp 0.4 and switch to tokio-rustls +- webrtc/signalling: Fix setting of host address +- ci: add script to check readme against plugins list +- Fix various new clippy 1.89 warnings +- Don’t suggest running cargo cinstall after cargo cbuild +- meson: Isolate built plugins from cargo target directory + +gst-libav + +- No changes + +gst-rtsp-server + +- rtsp-server: tests: Switch to fixtures to ensure pool shutdown + +gstreamer-vaapi + +- No changes + +gstreamer-sharp + +- No changes + +gst-python + +- python: Handle buffer PTS/DTS/duration/offset/offset-end as unsigned long long + +gst-editing-services + +- gstreamer: Make sure to zero-initialize the GValue before G_VALUE_COLLECT_INIT +- Fix various memory leaks + +gst-devtools, gst-validate + gst-integration-testsuites + +- validate: http-actions: Replace GUri with GstURI for GLib 2.64 compatibility +- Fix memory leak and use of incorrect context + +gst-examples + +- No changes + +gstreamer-docs + +- No changes + +Development build environment + +- gobject-introspection: Fix introspection failing on Linux with subproject GLib +- glib: update to 2.82.5 and backport shebangs patch +- ci: Work around PowerShell broken argument parsing +- Disable more plugins on Windows by default by not pulling in fallback subprojects automatically, only if plugins are enabled + explicitly +- Fix build on windows due to proxy-libintl not being invoked +- python: Reapply fixes to enable running Python bindings on Windows + +Cerbero build tool and packaging changes in 1.26.6 + +- ffmpeg: enable filters needed by avvideocompare +- cache: Fix detection of build tools prefix when using a cache +- cerbero/package: fix –tarball –compress-method=none +- cerbero: Reduce recipe parallelism in various cases +- ci: remove unpacked apk dir on completion +- package: Dump cerbero and recipe versions into datadir + +Contributors to 1.26.6 + +Andrey Khamukhin, Daniel Morin, Doug Nazar, François Laignel, Guillaume Desmottes, Hou Qi, Ian Napier, Jan Alexander Steffens +(heftig), Jan Schmidt, Jordan Petridis, L. E. Segovia, Marko Kohtala, Matthew Waters, Monty C, Nirbheek Chauhan, Ola Fornander, +Olivier Crête, Piotr Brzeziński, Qian Hu (胡骞), r4v3n6101, Robert Mader, Ruben Gonzalez, Sanchayan Maity, Sebastian Dröge, +Seungha Yang, Taruntej Kanakamalla, Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, Vivian LEE, Vivienne +Watermeier, Xavier Claessens, + +… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! + +List of merge requests and issues fixed in 1.26.6 + +- List of Merge Requests applied in 1.26.6 +- List of Issues fixed in 1.26.6 + Schedule for 1.28 Our next major feature release will be 1.28, and 1.27 will be the unstable development version leading up to the stable 1.28
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/RELEASE -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/RELEASE
Changed
@@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-bad 1.26.5. +This is GStreamer gst-plugins-bad 1.26.6. The GStreamer team is thrilled to announce a new major feature release of your favourite cross-platform multimedia framework!
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/analyticsoverlay/meson.build -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/analyticsoverlay/meson.build
Changed
@@ -18,7 +18,7 @@ gstanalyticsoverlay_ext_dep = dependency('pangocairo', version : '>=1.22.0', required : get_option('analyticsoverlay'), - fallback: 'pango', 'libpangocairo_dep', + allow_fallback: true, default_options: 'cairo=enabled') if gstanalyticsoverlay_ext_dep.found()
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/avtp/meson.build -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/avtp/meson.build
Changed
@@ -57,8 +57,7 @@ endif endif -avtp_dep = dependency('avtp', required: avtp_option, version : '>= 0.2.0', - fallback: 'avtp', 'avtp_dep') +avtp_dep = dependency('avtp', required: avtp_option, version : '>= 0.2.0') if avtp_dep.found() gstavtp = library('gstavtp',
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/closedcaption/gstcccombiner.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/closedcaption/gstcccombiner.c
Changed
@@ -869,11 +869,13 @@ } } + if (!GST_CLOCK_TIME_IS_VALID (self->current_video_running_time_end)) + return GST_FLOW_OK; + /* At this point we have a video buffer queued and can start collecting * caption buffers for it */ g_assert (self->current_video_buffer != NULL); g_assert (GST_CLOCK_TIME_IS_VALID (self->current_video_running_time)); - g_assert (GST_CLOCK_TIME_IS_VALID (self->current_video_running_time_end)); flow_ret = gst_cc_combiner_collect_captions (self, timeout); @@ -934,7 +936,7 @@ self->progressive = !interlace_mode || !g_strcmp0 (interlace_mode, "progressive"); - if (fps_d > 0) + if (fps_n > 0 && fps_d > 0) frame_duration = gst_util_uint64_scale (GST_SECOND, fps_d, fps_n); if (!GST_CLOCK_TIME_IS_VALID (frame_duration) || frame_duration == 0) frame_duration = FALLBACK_FRAME_DURATION;
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/codec2json/meson.build -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/codec2json/meson.build
Changed
@@ -26,7 +26,7 @@ 'codec2json': pathsep.join(doc_sources) } -json_dep = dependency('json-glib-1.0', version : '>=1.6.6', fallback : 'json-glib', 'json_glib_dep', required: get_option('codec2json')) +json_dep = dependency('json-glib-1.0', version : '>=1.6.6', required: get_option('codec2json')) if json_dep.found() gstcodec2json = library('gstcodec2json',
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/curl/gstcurlsmtpsink.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/curl/gstcurlsmtpsink.c
Changed
@@ -638,7 +638,7 @@ /* time */ date = g_date_time_new_now_local (); - date_str = g_date_time_format (date, "%a, %e %b %Y %H:%M:%S %z"); + date_str = g_date_time_format (date, "%a, %_e %b %Y %H:%M:%S %z"); g_date_time_unref (date); /* recipient, sender and subject are all UTF-8 strings, which are additionally
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/hls/m3u8.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/hls/m3u8.c
Changed
@@ -724,6 +724,7 @@ } } else if (g_str_has_prefix (data_ext_x, "MAP:")) { gchar *v, *a, *header_uri = NULL; + gint64 init_size = -1, init_offset = -1; data = data + 11; @@ -732,8 +733,8 @@ header_uri = uri_join (self->base_uri ? self->base_uri : self->uri, v); } else if (strcmp (a, "BYTERANGE") == 0) { - if (int64_from_string (v, &v, &size)) { - if (*v == '@' && !int64_from_string (v + 1, &v, &offset)) { + if (int64_from_string (v, &v, &init_size)) { + if (*v == '@' && !int64_from_string (v + 1, &v, &init_offset)) { g_free (header_uri); goto next_line; } @@ -748,10 +749,10 @@ GstM3U8InitFile *init_file; init_file = gst_m3u8_init_file_new (header_uri); - if (size != -1) { - init_file->size = size; - if (offset != -1) - init_file->offset = offset; + if (init_size != -1) { + init_file->size = init_size; + if (init_offset != -1) + init_file->offset = init_offset; else init_file->offset = 0; } else {
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/iqa/meson.build -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/iqa/meson.build
Changed
@@ -3,8 +3,7 @@ Pass option -Dgpl=enabled to Meson to allow (A)GPL-licensed plugins to be built. ''') -dssim_dep = dependency('dssim', required: iqa_opt, - fallback: 'dssim', 'dssim_dep') +dssim_dep = dependency('dssim', required: iqa_opt) iqa_sources = 'iqa.c',
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/mdns/meson.build -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/mdns/meson.build
Changed
@@ -1,5 +1,4 @@ -microdns_dep = dependency('microdns', required: get_option('microdns'), - fallback: 'libmicrodns', 'mdns_dep') +microdns_dep = dependency('microdns', required: get_option('microdns')) microdns_sources = 'gstmicrodns.c',
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/openh264/meson.build -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/openh264/meson.build
Changed
@@ -19,9 +19,8 @@ 'openh264': pathsep.join(doc_sources) } -openh264_dep = dependency('openh264', version : '>= 1.3.0', - required : get_option('openh264'), - fallback: 'openh264', 'openh264_dep') +openh264_dep = dependency('openh264', version : '>= 1.3.0', required : get_option('openh264'), + allow_fallback: true, default_options: 'tests=disabled') if openh264_dep.found() gstopenh264 = library('gstopenh264',
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/openjpeg/meson.build -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/openjpeg/meson.build
Changed
@@ -22,7 +22,6 @@ openjpeg_cargs = openjpeg_dep = dependency('libopenjp2', version : '>=2.2', - fallback : 'libopenjp2', 'libopenjp2_dep', required : get_option('openjpeg'), default_options: 'build_codec_apps=false')
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/qroverlay/meson.build -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/qroverlay/meson.build
Changed
@@ -25,7 +25,7 @@ } if qrencode_dep.found() - json_dep = dependency('json-glib-1.0', fallback : 'json-glib', 'json_glib_dep', required: get_option('qroverlay')) + json_dep = dependency('json-glib-1.0', required: get_option('qroverlay')) if json_dep.found() gstqroverlay = library('gstqroverlay', qroverlay_sources,
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/soundtouch/meson.build -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/soundtouch/meson.build
Changed
@@ -24,8 +24,7 @@ subdir_done() endif -soundtouch_dep = dependency('soundtouch', required : false, - fallback : 'soundtouch', 'soundtouch_dep') +soundtouch_dep = dependency('soundtouch', required : false) if soundtouch_dep.found() soundtouch_cargs += '-DHAVE_SOUNDTOUCH_1_4' else
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/vulkan/vkh264dec.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/vulkan/vkh264dec.c
Changed
@@ -107,6 +107,7 @@ VkChromaLocation xloc, yloc; GstVideoCodecState *output_state; + GstVideoCodecState *input_state; SPS std_sps; PPS std_pps; @@ -136,8 +137,8 @@ static gpointer _register_debug_category (gpointer data) { - GST_DEBUG_CATEGORY_INIT (gst_vulkan_h264_decoder_debug, - "gst_vulkan_h264_decoder_debug", 0, "Vulkan H.264 decoder"); + GST_DEBUG_CATEGORY_INIT (gst_vulkan_h264_decoder_debug, "vulkanh264dec", 0, + "Vulkan H.264 decoder"); return NULL; } @@ -231,8 +232,8 @@ if (self->decoder) gst_vulkan_decoder_stop (self->decoder); - if (self->output_state) - gst_video_codec_state_unref (self->output_state); + g_clear_pointer (&self->output_state, gst_video_codec_state_unref); + g_clear_pointer (&self->input_state, gst_video_codec_state_unref); return GST_VIDEO_DECODER_CLASS (parent_class)->stop (decoder); } @@ -299,14 +300,16 @@ gst_vulkan_h264_decoder_negotiate (GstVideoDecoder * decoder) { GstVulkanH264Decoder *self = GST_VULKAN_H264_DECODER (decoder); - GstH264Decoder *h264dec = GST_H264_DECODER (decoder); VkVideoFormatPropertiesKHR format_prop; GstVideoInterlaceMode interlace_mode; GstVideoFormat format; /* Ignore downstream renegotiation request. */ - if (!self->need_negotiation) - return TRUE; + if (!self->need_negotiation) { + GST_DEBUG_OBJECT (decoder, + "Input state hasn't changed, no need to reconfigure downstream caps"); + goto bail; + } if (!gst_vulkan_decoder_out_format (self->decoder, &format_prop)) return FALSE; @@ -323,7 +326,7 @@ format = gst_vulkan_format_to_video_format (format_prop.format); self->output_state = gst_video_decoder_set_interlaced_output_state (decoder, - format, interlace_mode, self->width, self->height, h264dec->input_state); + format, interlace_mode, self->width, self->height, self->input_state); self->output_state->caps = gst_video_info_to_caps (&self->output_state->info); gst_caps_set_features_simple (self->output_state->caps, @@ -333,6 +336,7 @@ GST_INFO_OBJECT (self, "Negotiated caps %" GST_PTR_FORMAT, self->output_state->caps); +bail: return GST_VIDEO_DECODER_CLASS (parent_class)->negotiate (decoder); } @@ -637,6 +641,9 @@ self->width = width; self->height = height; + g_clear_pointer (&self->input_state, gst_video_codec_state_unref); + self->input_state = gst_video_codec_state_ref (decoder->input_state); + /* Ycbcr sampler */ { VkSamplerYcbcrRange range; @@ -1319,13 +1326,18 @@ { GstVideoDecoder *vdec = GST_VIDEO_DECODER (decoder); GstVulkanH264Decoder *self = GST_VULKAN_H264_DECODER (decoder); + GstVideoCodecState *discont_state = + GST_CODEC_PICTURE (picture)->discont_state; GST_TRACE_OBJECT (self, "Output picture"); GST_LOG_OBJECT (self, "Outputting picture %p (poc %d)", picture, picture->pic_order_cnt); - if (GST_CODEC_PICTURE (picture)->discont_state) { + if (discont_state) { + g_clear_pointer (&self->input_state, gst_video_codec_state_unref); + self->input_state = gst_video_codec_state_ref (discont_state); + self->need_negotiation = TRUE; if (!gst_video_decoder_negotiate (vdec)) { gst_h264_picture_unref (picture);
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/ext/vulkan/vkh265dec.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/ext/vulkan/vkh265dec.c
Changed
@@ -127,6 +127,8 @@ VkChromaLocation xloc, yloc; GstVideoCodecState *output_state; + GstVideoCodecState *input_state; + VPS std_vps; SPS std_sps; PPS std_pps; @@ -157,8 +159,8 @@ static gpointer _register_debug_category (gpointer data) { - GST_DEBUG_CATEGORY_INIT (gst_vulkan_h265_decoder_debug, - "gst_vulkan_h265_decoder_debug", 0, "Vulkan H.265 decoder"); + GST_DEBUG_CATEGORY_INIT (gst_vulkan_h265_decoder_debug, "vulkanh265dec", 0, + "Vulkan H.265 decoder"); return NULL; } @@ -310,8 +312,8 @@ if (self->decoder) gst_vulkan_decoder_stop (self->decoder); - if (self->output_state) - gst_video_codec_state_unref (self->output_state); + g_clear_pointer (&self->output_state, gst_video_codec_state_unref); + g_clear_pointer (&self->input_state, gst_video_codec_state_unref); return GST_VIDEO_DECODER_CLASS (parent_class)->stop (decoder); } @@ -320,13 +322,15 @@ gst_vulkan_h265_decoder_negotiate (GstVideoDecoder * decoder) { GstVulkanH265Decoder *self = GST_VULKAN_H265_DECODER (decoder); - GstH265Decoder *h265dec = GST_H265_DECODER (decoder); VkVideoFormatPropertiesKHR format_prop; GstVideoFormat format; /* Ignore downstream renegotiation request. */ - if (!self->need_negotiation) - return TRUE; + if (!self->need_negotiation) { + GST_DEBUG_OBJECT (decoder, + "Input state hasn't changed, no need to reconfigure downstream caps"); + goto bail; + } if (!gst_vulkan_decoder_out_format (self->decoder, &format_prop)) return FALSE; @@ -339,7 +343,7 @@ format = gst_vulkan_format_to_video_format (format_prop.format); self->output_state = gst_video_decoder_set_interlaced_output_state (decoder, format, GST_VIDEO_INTERLACE_MODE_PROGRESSIVE, self->width, self->height, - h265dec->input_state); + self->input_state); self->output_state->caps = gst_video_info_to_caps (&self->output_state->info); gst_caps_set_features_simple (self->output_state->caps, @@ -349,6 +353,7 @@ GST_INFO_OBJECT (self, "Negotiated caps %" GST_PTR_FORMAT, self->output_state->caps); +bail: return GST_VIDEO_DECODER_CLASS (parent_class)->negotiate (decoder); } @@ -577,6 +582,9 @@ self->width = width; self->height = height; + g_clear_pointer (&self->input_state, gst_video_codec_state_unref); + self->input_state = gst_video_codec_state_ref (decoder->input_state); + /* Ycbcr sampler */ { VkSamplerYcbcrRange range; @@ -1637,13 +1645,18 @@ { GstVideoDecoder *vdec = GST_VIDEO_DECODER (decoder); GstVulkanH265Decoder *self = GST_VULKAN_H265_DECODER (decoder); + GstVideoCodecState *discont_state = + GST_CODEC_PICTURE (picture)->discont_state; GST_TRACE_OBJECT (self, "Output picture"); GST_LOG_OBJECT (self, "Outputting picture %p (poc %d)", picture, picture->pic_order_cnt); - if (GST_CODEC_PICTURE (picture)->discont_state) { + if (discont_state) { + g_clear_pointer (&self->input_state, gst_video_codec_state_unref); + self->input_state = gst_video_codec_state_ref (discont_state); + self->need_negotiation = TRUE; if (!gst_video_decoder_negotiate (vdec)) { gst_h265_picture_unref (picture);
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/gst-libs/gst/analytics/gsttensormeta.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/gst-libs/gst/analytics/gsttensormeta.c
Changed
@@ -90,7 +90,7 @@ * gst_buffer_add_tensor_meta: * @buffer: A writable #GstBuffer * - * Adds a #GstTensorMeta to a buffer or returns the existing one + * Adds a #GstTensorMeta to a buffer * * Returns: (transfer none): The new #GstTensorMeta * @@ -100,12 +100,6 @@ GstTensorMeta * gst_buffer_add_tensor_meta (GstBuffer * buffer) { - GstTensorMeta *tmeta; - - tmeta = gst_buffer_get_tensor_meta (buffer); - if (tmeta) - return tmeta; - return (GstTensorMeta *) gst_buffer_add_meta (buffer, gst_tensor_meta_get_info (), NULL); }
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/gst-libs/gst/d3d12/gstd3d12memory-private.h -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/gst-libs/gst/d3d12/gstd3d12memory-private.h
Changed
@@ -21,9 +21,9 @@ #include <gst/gst.h> #include <gst/video/video.h> -#include "gstd3d12_fwd.h" -#include "gstd3d12format.h" -#include "gstd3d12memory.h" +#include <gst/d3d12/gstd3d12_fwd.h> +#include <gst/d3d12/gstd3d12format.h> +#include <gst/d3d12/gstd3d12memory.h> G_BEGIN_DECLS @@ -39,5 +39,11 @@ guint mip_levels; }; +GST_D3D12_API +void gst_d3d12_memory_set_fence_unchecked (GstD3D12Memory * mem, + ID3D12Fence * fence, + guint64 fence_value, + gboolean wait); + G_END_DECLS
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/gst-libs/gst/d3d12/gstd3d12memory.cpp -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/gst-libs/gst/d3d12/gstd3d12memory.cpp
Changed
@@ -1053,6 +1053,18 @@ return ret; } +void +gst_d3d12_memory_set_fence_unchecked (GstD3D12Memory * mem, ID3D12Fence * fence, + guint64 fence_value, gboolean wait) +{ + g_return_if_fail (gst_is_d3d12_memory (GST_MEMORY_CAST (mem))); + + auto priv = mem->priv; + + std::lock_guard < std::mutex > lk (priv->lock); + gst_d3d12_memory_set_fence_unlocked (mem, fence, fence_value, wait); +} + /** * gst_d3d12_memory_set_fence: * @mem: a #GstD3D12Memory @@ -1070,13 +1082,9 @@ gst_d3d12_memory_set_fence (GstD3D12Memory * mem, ID3D12Fence * fence, guint64 fence_value, gboolean wait) { - g_return_if_fail (gst_is_d3d12_memory (GST_MEMORY_CAST (mem))); g_return_if_fail (gst_mini_object_is_writable ((GstMiniObject *) mem)); - auto priv = mem->priv; - - std::lock_guard < std::mutex > lk (priv->lock); - gst_d3d12_memory_set_fence_unlocked (mem, fence, fence_value, wait); + gst_d3d12_memory_set_fence_unchecked (mem, fence, fence_value, wait); } /**
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/gst-libs/gst/vulkan/gstvkphysicaldevice.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/gst-libs/gst/vulkan/gstvkphysicaldevice.c
Changed
@@ -71,9 +71,6 @@ VkPhysicalDeviceVulkan13Features features13; VkPhysicalDeviceVulkan13Properties properties13; #endif -#if defined (VK_KHR_sampler_ycbcr_conversion) - VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR sampler_ycbcr_conversion; -#endif #if defined (VK_KHR_synchronization2) VkPhysicalDeviceSynchronization2FeaturesKHR synchronization2; #endif @@ -214,26 +211,6 @@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES; priv->features12.pNext = &priv->features13; #endif -#if defined (VK_KHR_sampler_ycbcr_conversion) - priv->sampler_ycbcr_conversion.sType = - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR; - vk_link_struct (&priv->features12, &priv->sampler_ycbcr_conversion); -#endif -#if defined (VK_KHR_synchronization2) - priv->synchronization2.sType = - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR; - vk_link_struct (&priv->features12, &priv->synchronization2); -#endif -#if defined (VK_KHR_timeline_semaphore) - priv->timeline_semaphore.sType = - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR; - vk_link_struct (&priv->features12, &priv->timeline_semaphore); -#endif -#if defined (VK_KHR_video_maintenance1) - priv->videomaintenance1.sType = - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR; - vk_link_struct (&priv->features12, &priv->videomaintenance1); -#endif } static void @@ -514,17 +491,11 @@ #endif /* defined (VK_API_VERSION_1_3) */ static void -dump_extras (GstVulkanPhysicalDevice * device, VkBaseOutStructure * chain) +dump_features_extras (GstVulkanPhysicalDevice * device, + VkBaseOutStructure * chain) { GstVulkanPhysicalDevicePrivate *priv = GET_PRIV (device); -#if defined (VK_KHR_sampler_ycbcr_conversion) - if (chain->sType == - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR) { - DEBUG_BOOL_STRUCT ("support for", &priv->sampler_ycbcr_conversion, - samplerYcbcrConversion); - } -#endif #if defined (VK_KHR_synchronization2) if (chain->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR) { @@ -574,7 +545,7 @@ dump_features13 (device, (VkPhysicalDeviceVulkan13Features *) iter); #endif else - dump_extras (device, iter); + dump_features_extras (device, iter); } } else #endif @@ -977,6 +948,36 @@ return TRUE; } +/* it's required to add this extra features when the properties are filled and + * the instances assigned */ +#if defined (VK_API_VERSION_1_2) +static void +add_extra_features (GstVulkanPhysicalDevice * device) +{ + GstVulkanPhysicalDevicePrivate *priv = GET_PRIV (device); + +#if defined (VK_KHR_timeline_semaphore) + if (!gst_vulkan_physical_device_check_api_version (device, 1, 2, 0)) { + priv->timeline_semaphore.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR; + vk_link_struct (&priv->features12, &priv->timeline_semaphore); + } +#endif +#if defined (VK_KHR_synchronization2) + if (!gst_vulkan_physical_device_check_api_version (device, 1, 3, 0)) { + priv->synchronization2.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR; + vk_link_struct (&priv->features12, &priv->synchronization2); + } +#endif +#if defined (VK_KHR_video_maintenance1) + priv->videomaintenance1.sType = + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR; + vk_link_struct (&priv->features13, &priv->videomaintenance1); +#endif +} +#endif /* VK_API_VERSION_1_2 */ + static gboolean gst_vulkan_physical_device_fill_info (GstVulkanPhysicalDevice * device, GError ** error) @@ -1064,6 +1065,7 @@ memcpy (&device->memory_properties, &mem_properties10.memoryProperties, sizeof (device->memory_properties)); + add_extra_features (device); get_features2 = (PFN_vkGetPhysicalDeviceFeatures2) gst_vulkan_instance_get_proc_address (device->instance, "vkGetPhysicalDeviceFeatures2");
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/gst-libs/gst/wayland/gstwldisplay.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/gst-libs/gst/wayland/gstwldisplay.c
Changed
@@ -363,8 +363,12 @@ /* main loop */ while (1) { g_rec_mutex_lock (&priv->sync_mutex); - while (wl_display_prepare_read_queue (priv->display, priv->queue) != 0) - wl_display_dispatch_queue_pending (priv->display, priv->queue); + while (wl_display_prepare_read_queue (priv->display, priv->queue) != 0) { + if (wl_display_dispatch_queue_pending (priv->display, priv->queue) == -1) { + g_rec_mutex_unlock (&priv->sync_mutex); + goto error; + } + } g_rec_mutex_unlock (&priv->sync_mutex); wl_display_flush (priv->display); @@ -380,7 +384,10 @@ goto error; g_rec_mutex_lock (&priv->sync_mutex); - wl_display_dispatch_queue_pending (priv->display, priv->queue); + if (wl_display_dispatch_queue_pending (priv->display, priv->queue) == -1) { + g_rec_mutex_unlock (&priv->sync_mutex); + goto error; + } g_rec_mutex_unlock (&priv->sync_mutex); }
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/gst-libs/gst/webrtc/nice/meson.build -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/gst-libs/gst/webrtc/nice/meson.build
Changed
@@ -14,8 +14,7 @@ libgstwebrtcnice_dep = dependency('', required : false) libnice_dep = dependency('nice', version : '>=0.1.20', required : get_option('webrtc'), - fallback : 'libnice', 'libnice_dep', - default_options: 'tests=disabled') + allow_fallback: true, default_options: 'tests=disabled') deps = gstwebrtc_dep, libnice_dep
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/gst-plugins-bad.doap -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/gst-plugins-bad.doap
Changed
@@ -35,6 +35,16 @@ <release> <Version> + <revision>1.26.6</revision> + <branch>1.26</branch> + <name></name> + <created>2025-09-14</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.26.6.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.26.5</revision> <branch>1.26</branch> <name></name>
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/gst/mpegtsmux/gstbasetsmux.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/gst/mpegtsmux/gstbasetsmux.c
Changed
@@ -973,10 +973,10 @@ goto error; } - if (ts_pad->stream && st != ts_pad->stream->stream_type) { + if (ts_pad->stream && st != ts_pad->stream->internal_stream_type) { GST_ELEMENT_ERROR (mux, STREAM, MUX, ("Stream type change from %02x to %02x not supported", - ts_pad->stream->stream_type, st), NULL); + ts_pad->stream->internal_stream_type, st), NULL); goto error; }
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/meson.build -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/meson.build
Changed
@@ -1,5 +1,5 @@ project('gst-plugins-bad', 'c', 'cpp', - version : '1.26.5', + version : '1.26.6', meson_version : '>= 1.4', default_options : 'warning_level=1', 'buildtype=debugoptimized' ) @@ -484,8 +484,7 @@ orcc_args = orc_targets = # Used by various libraries/elements that use Orc code -orc_dep = dependency('orc-0.4', version : orc_req, required : get_option('orc'), - fallback : 'orc', 'orc_dep') +orc_dep = dependency('orc-0.4', version : orc_req, required : get_option('orc'), allow_fallback: true) orcc = find_program('orcc', required : get_option('orc')) if orc_dep.found() and orcc.found() have_orcc = true
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/po/gst-plugins-bad-1.0.pot -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/po/gst-plugins-bad-1.0.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-bad-1.26.5\n" +"Project-Id-Version: gst-plugins-bad-1.26.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-08-07 19:08+0100\n" +"POT-Creation-Date: 2025-09-14 13:14+0100\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_url:gst-plugins-bad-1.26.5.tar.xz/po/gst-plugins-bad.pot -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/po/gst-plugins-bad.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-bad-1.26.5\n" +"Project-Id-Version: gst-plugins-bad-1.26.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-08-07 19:08+0100\n" +"POT-Creation-Date: 2025-09-14 13:14+0100\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_url:gst-plugins-bad-1.26.5.tar.xz/sys/decklink/gstdecklink.h -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/sys/decklink/gstdecklink.h
Changed
@@ -596,7 +596,7 @@ gboolean audio_enabled; GstElement *videosrc; gboolean video_enabled; - void (*start_streams) (GstElement *videosrc); + gboolean (*start_streams) (GstElement *videosrc); }; GstDecklinkOutput * gst_decklink_acquire_nth_output (gint n, gint64 persistent_id, GstElement * sink, gboolean is_audio);
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/sys/decklink/gstdecklinkvideosrc.cpp -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/sys/decklink/gstdecklinkvideosrc.cpp
Changed
@@ -247,7 +247,7 @@ static gboolean gst_decklink_video_src_stop (GstDecklinkVideoSrc * self); -static void gst_decklink_video_src_start_streams (GstElement * element); +static gboolean gst_decklink_video_src_start_streams (GstElement * element); #define parent_class gst_decklink_video_src_parent_class G_DEFINE_TYPE (GstDecklinkVideoSrc, gst_decklink_video_src, GST_TYPE_PUSH_SRC); @@ -693,8 +693,12 @@ g_mutex_lock (&self->input->lock); self->input->mode = mode; self->input->video_enabled = TRUE; - if (self->input->start_streams) - self->input->start_streams (self->input->videosrc); + if (self->input->start_streams) { + if (!self->input->start_streams (self->input->videosrc)) { + g_mutex_unlock (&self->input->lock); + return FALSE; + } + } g_mutex_unlock (&self->input->lock); self->skipped_last = 0; @@ -1897,7 +1901,11 @@ self->input->video_enabled = FALSE; g_mutex_unlock (&self->input->lock); - self->input->input->DisableVideoInput (); + const HRESULT res = self->input->input->DisableVideoInput (); + if (FAILED(res)) { + GST_ELEMENT_ERROR (self, STREAM, FAILED, + (NULL), ("Failed to disable video input: 0x%08lx", (unsigned long) res)); + } } if (self->vbiparser) { @@ -1910,11 +1918,10 @@ return TRUE; } -static void +static gboolean gst_decklink_video_src_start_streams (GstElement * element) { GstDecklinkVideoSrc *self = GST_DECKLINK_VIDEO_SRC_CAST (element); - HRESULT res; if (self->input->video_enabled && (!self->input->audiosrc || self->input->audio_enabled) @@ -1937,15 +1944,18 @@ self->next_time_mapping.num = 1; self->next_time_mapping.den = 1; g_mutex_unlock (&self->lock); - res = self->input->input->StartStreams (); - if (res != S_OK) { + + const HRESULT res = self->input->input->StartStreams (); + if (FAILED(res)) { GST_ELEMENT_ERROR (self, STREAM, FAILED, (NULL), ("Failed to start streams: 0x%08lx", (unsigned long) res)); - return; + return FALSE; } } else { GST_DEBUG_OBJECT (self, "Not starting streams yet"); } + + return TRUE; } static GstStateChangeReturn @@ -1997,19 +2007,24 @@ HRESULT res; GST_DEBUG_OBJECT (self, "Stopping streams"); - + // Even if StopStreams() fails we consider the element state change to + // have succeeded. This can happen if the earlier call to StartStreams() + // failed. Downward state changes should never fail since doing so would + // prevent the element being disposed (and so prevent the associated + // hardware resource being released). res = self->input->input->StopStreams (); if (res != S_OK) { GST_ELEMENT_ERROR (self, STREAM, FAILED, (NULL), ("Failed to stop streams: 0x%08lx", (unsigned long) res)); - ret = GST_STATE_CHANGE_FAILURE; } break; } case GST_STATE_CHANGE_PAUSED_TO_PLAYING:{ g_mutex_lock (&self->input->lock); - if (self->input->start_streams) - self->input->start_streams (self->input->videosrc); + if (self->input->start_streams) { + if (!self->input->start_streams (self->input->videosrc)) + ret = GST_STATE_CHANGE_FAILURE; + } g_mutex_unlock (&self->input->lock); break;
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/sys/dwrite/gstdwriterender_d3d12.cpp -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/sys/dwrite/gstdwriterender_d3d12.cpp
Changed
@@ -24,6 +24,7 @@ #include "gstdwriterender_d3d12.h" #include "gstdwrite-renderer.h" #include <gst/d3d12/gstd3d12-private.h> +#include <gst/d3d12/gstd3d12memory-private.h> #include <d3d11on12.h> #include <wrl.h> #include <vector> @@ -526,7 +527,8 @@ for (guint i = 0; i < gst_buffer_n_memory (output); i++) { auto dmem = (GstD3D12Memory *) gst_buffer_peek_memory (output, i); - gst_d3d12_memory_set_fence (dmem, fence, priv->fence_val, FALSE); + gst_d3d12_memory_set_fence_unchecked (dmem, + fence, priv->fence_val, FALSE); GST_MINI_OBJECT_FLAG_SET (dmem, GST_D3D12_MEMORY_TRANSFER_NEED_DOWNLOAD); GST_MINI_OBJECT_FLAG_UNSET (dmem, GST_D3D12_MEMORY_TRANSFER_NEED_UPLOAD); }
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/sys/tinyalsa/meson.build -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/sys/tinyalsa/meson.build
Changed
@@ -22,8 +22,7 @@ endif tinyalsa_dep = dependency('tinyalsa', required: get_option('tinyalsa'), - version: '>= 1.1.0', - fallback: 'tinyalsa', 'tinyalsa_dep') + version: '>= 1.1.0') have_tinyalsa = tinyalsa_dep.found() if have_tinyalsa
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/tests/check/elements/cccombiner.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/tests/check/elements/cccombiner.c
Changed
@@ -29,6 +29,8 @@ #include <string.h> static GstStaticCaps foo_bar_caps = GST_STATIC_CAPS ("foo/bar"); +static GstStaticCaps foo_bar_caps_0fps = +GST_STATIC_CAPS ("foo/bar,framerate=0/1"); static GstStaticCaps foo_bar_caps_25fps = GST_STATIC_CAPS ("foo/bar,framerate=25/1"); static GstStaticCaps foo_bar_caps_60fps = @@ -68,6 +70,49 @@ GST_END_TEST; +GST_START_TEST (no_captions_no_duration) +{ + GstHarness *h; + GstBuffer *buf1, *buf2, *outbuf; + + h = gst_harness_new_with_padnames ("cccombiner", "sink", "src"); + + gst_harness_set_src_caps_str (h, foo_bar_caps_0fps.string); + + /* When sending in frames without durations, we lag one frame */ + + buf1 = gst_buffer_new_and_alloc (128); + GST_BUFFER_PTS (buf1) = 0; + gst_harness_push (h, gst_buffer_ref (buf1)); + + buf2 = gst_buffer_new_and_alloc (128); + GST_BUFFER_PTS (buf2) = 10; + outbuf = gst_harness_push_and_pull (h, gst_buffer_ref (buf2)); + fail_unless (outbuf != NULL); + fail_unless_equals_pointer (outbuf, buf1); + gst_buffer_unref (buf1); + gst_buffer_unref (outbuf); + + buf1 = gst_buffer_new_and_alloc (128); + GST_BUFFER_PTS (buf1) = 15; + outbuf = gst_harness_push_and_pull (h, gst_buffer_ref (buf1)); + fail_unless (outbuf != NULL); + fail_unless_equals_pointer (outbuf, buf2); + gst_buffer_unref (buf2); + gst_buffer_unref (outbuf); + + gst_harness_push_event (h, gst_event_new_eos ()); + outbuf = gst_harness_pull (h); + fail_unless (outbuf != NULL); + fail_unless_equals_pointer (outbuf, buf1); + gst_buffer_unref (buf1); + gst_buffer_unref (outbuf); + + gst_harness_teardown (h); +} + +GST_END_TEST; + GstBuffer *expected_video_buffer = NULL; GstBuffer *expected_caption_buffer = NULL; @@ -609,6 +654,7 @@ suite_add_tcase (s, tc); tcase_add_test (tc, no_captions); + tcase_add_test (tc, no_captions_no_duration); tcase_add_test (tc, captions_and_eos); tcase_add_test (tc, captions_no_output_padding_60fps_608_field1_only); tcase_add_test (tc, captions_50fps_to_25fps);
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/tests/check/elements/mpegtsmux.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/tests/check/elements/mpegtsmux.c
Changed
@@ -586,6 +586,57 @@ GST_END_TEST; +static GstBusSyncReply +caps_noop_change_bus_cb (GstBus * bus, GstMessage * message, gpointer user_data) +{ + if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ERROR) { + GST_ERROR ("Got bus message %" GST_PTR_FORMAT, message); + fail_unless (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ERROR); + } + return GST_BUS_PASS; +} + +GST_START_TEST (test_caps_noop_change) +{ + GstElement *pipeline = + gst_parse_launch + ("audiotestsrc ! opusenc ! .sink_65 mpegtsmux name=mux ! fakesink", + NULL); + fail_unless (pipeline != NULL, "Could not create pipeline"); + + /* Check that we do not receive any ERROR message */ + GstBus *bus = gst_element_get_bus (pipeline); + gst_bus_set_sync_handler (bus, caps_noop_change_bus_cb, NULL, NULL); + gst_object_unref (bus); + + /* Wait for the pipeline to be playing */ + gst_element_set_state (pipeline, GST_STATE_PLAYING); + fail_unless (gst_element_get_state (pipeline, NULL, NULL, + GST_CLOCK_TIME_NONE) == GST_STATE_CHANGE_SUCCESS); + + /* Resend the same caps, this used to post an ERROR message on the bus: + * error: Stream type change from 06 to 8f not supported */ + GstElement *mux = gst_bin_get_by_name (GST_BIN (pipeline), "mux"); + fail_unless (mux != NULL); + + GstPad *sinkpad = gst_element_get_static_pad (mux, "sink_65"); + fail_unless (sinkpad != NULL); + + GstEvent *caps_event = gst_pad_get_sticky_event (sinkpad, GST_EVENT_CAPS, 0); + gst_pad_send_event (sinkpad, caps_event); + + gst_object_unref (sinkpad); + gst_object_unref (mux); + + /* Wait for the caps event to be processed */ + g_usleep (1000); + + gst_element_set_state (pipeline, GST_STATE_NULL); + gst_object_unref (pipeline); +} + +GST_END_TEST; + static Suite * mpegtsmux_suite (void) { @@ -602,6 +653,7 @@ tcase_add_test (tc_chain, test_reappearing_pad_while_playing); tcase_add_test (tc_chain, test_reappearing_pad_while_stopped); tcase_add_test (tc_chain, test_unused_pad); + tcase_add_test (tc_chain, test_caps_noop_change); return s; }
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/tests/check/elements/zbar.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/tests/check/elements/zbar.c
Changed
@@ -85,6 +85,8 @@ int qual; const GValue *value; GBytes *symbol_bytes; + gconstpointer bytes_data; + gsize bytes_size; pipeline = setup_pipeline (); @@ -112,8 +114,10 @@ value = gst_structure_get_value (s, "symbol-bytes"); fail_unless (G_VALUE_HOLDS (value, G_TYPE_BYTES)); symbol_bytes = g_value_get_boxed (value); - fail_unless_equals_string (g_bytes_get_data (symbol_bytes, 0), - "9876543210128"); + bytes_data = g_bytes_get_data (symbol_bytes, &bytes_size); + fail_unless_equals_uint64 (bytes_size, 13); + fail_unless (memcmp (bytes_data, "9876543210128", 13) == 0, + "Bad symbol-bytes data: %.13s", bytes_data); fail_if (gst_structure_has_field (s, "frame"));
View file
_service:download_url:gst-plugins-bad-1.26.5.tar.xz/tests/check/libs/vkimagebufferpool.c -> _service:download_url:gst-plugins-bad-1.26.6.tar.xz/tests/check/libs/vkimagebufferpool.c
Changed
@@ -78,9 +78,11 @@ gst_buffer_pool_config_set_params (config, caps, 1024, 1, 0); gst_caps_unref (caps); - gst_vulkan_image_buffer_pool_config_set_allocation_params (config, - usage, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, initial_layout, - initial_access); + if (usage != 0) { + gst_vulkan_image_buffer_pool_config_set_allocation_params (config, + usage, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, initial_layout, + initial_access); + } if (dec_caps) gst_vulkan_image_buffer_pool_config_set_decode_caps (config, dec_caps);
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
.