Projects
Essentials
gstreamer-plugins-bad-codecs
Sign Up
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 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
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
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
.