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 34
View file
gstreamer-plugins-bad-codecs.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Wed Jun 4 08:44:30 UTC 2025 - Bjørn Lie <zaitor@opensuse.org> + +- Update to version 1.26.2 + +------------------------------------------------------------------- Wed May 7 07:44:22 UTC 2025 - Bjørn Lie <zaitor@opensuse.org> - Update to version 1.26.1
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.1 +Version: 1.26.2 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.1.tar.xz</param> + <param name="path">/src/gst-plugins-bad/gst-plugins-bad-1.26.2.tar.xz</param> </service> <service name="set_version" mode="buildtime"/> </services>
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ChangeLog -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ChangeLog
Changed
@@ -1,3 +1,430 @@ +=== release 1.26.2 === + +2025-05-29 23:56:43 +0100 Tim-Philipp Müller <tim@centricular.com> + + * NEWS: + * RELEASE: + * gst-plugins-bad.doap: + * meson.build: + Release 1.26.2 + +2025-05-30 00:07:25 +0900 Seungha Yang <seungha@centricular.com> + + * sys/d3d12/gstd3d12dxgicapture.cpp: + d3d12screencapturesrc: Fix desktop handle leak + Calling CloseDesktop() on a handle that is currently in use will fail. + Close the handle after current desktop handle change + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9140> + +2025-05-29 14:30:42 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst/dvbsuboverlay/gstdvbsuboverlay.c: + dvbsuboverlay: Actually make use of subtitle running time instead of using PTS + Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4446 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9129> + +2025-05-27 13:47:27 -0400 Daniel Morin <daniel.morin@collabora.com> + + * gst-libs/gst/webrtc/rtpsender.c: + rtpsender: fix 'priority' GValue get/set + - 'priority' is declared as enum, we need to use g_value_get|set_enum() + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9110> + +2025-05-26 18:25:58 +0900 Seungha Yang <seungha@centricular.com> + + * gst-libs/gst/d3d12/meson.build: + d3d12: Enable GIR for MSVC build as well + cerbero issue should be fixed by + https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1824 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9095> + +2025-05-26 18:24:01 +0900 Seungha Yang <seungha@centricular.com> + + * gst-libs/gst/d3d12/gstd3d12memory.h: + d3d12memory: Make D3D12 map flags inspectable + GIR scanner does not seem to be able to infer integer value + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9095> + +2025-05-21 10:03:09 -0400 Doug Nazar <nazard@nazar.ca> + + * ext/wpe/gstwpesrcbin.cpp: + * gst/rist/gstristsink.c: + * gst/sdp/gstsdpsrc.c: + gstreamer: Ensure we free the template + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9101> + +2025-05-21 10:10:25 -0400 Doug Nazar <nazard@nazar.ca> + + * gst/mpegtsdemux/tsdemux.c: + tsdemux: Ensure AC3 descriptor is long enough before accessing + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9101> + +2025-05-26 19:07:22 +0300 Sebastian Dröge <sebastian@centricular.com> + + * gst-libs/gst/play/gstplay.c: + play: Improve stream selection + - Unset stream ids if a collection does not contain them + - Automatically select a default stream of a type if the stream type is + enabled but no stream is selected yet when receiving the stream collection + - Warn if there's a collection update via streams-selected and if there are + unexpected streams being selected, or actually selected streams not being + found + - Improve debug output a bit + Among other things this also makes sure that we don't forget a selected stream + id when disabling a track so that when enabling it again later the same one can + be enabled again. + See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4344 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9100> + +2025-05-20 22:32:36 +0900 Seungha Yang <seungha@centricular.com> + + * gst-libs/gst/d3d12/meson.build: + d3d12: Generate gir file + Prerequisite for rust binding + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9096> + +2025-05-22 19:12:03 +0900 Seungha Yang <seungha@centricular.com> + + * gst-libs/gst/d3d12/gstd3d12device.cpp: + * gst-libs/gst/d3d12/gstd3d12memory.cpp: + d3d12: Fix docs annotations + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9096> + +2025-05-26 17:20:05 +0900 Seungha Yang <seungha@centricular.com> + + * gst-libs/gst/d3d12/gstd3d12memory.cpp: + d3d12memory: Allow set_fence() only against writable memory + Setting a fence to memory should only be allowed on the side + that modified that memory or has the right to modify it + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9094> + +2025-05-14 14:36:49 -0400 Doug Nazar <nazard@nazar.ca> + + * gst/videoframe_audiolevel/gstvideoframe-audiolevel.c: + videoframe-audiolevel: Switch to GST_AUDIO_NE() + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9089> + +2025-05-14 14:36:01 -0400 Doug Nazar <nazard@nazar.ca> + + * ext/musepack/gstmusepackdec.c: + musepack: Switch to GST_AUDIO_NE() + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9089> + +2025-05-12 18:27:06 -0400 Olivier Crête <olivier.crete@collabora.com> + + * tests/check/elements/h264parse.c: + h264parse test: Ensure avc3 caps include a codec_data + The avc3 caps without a codec_data are just totally invalid + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9087> + +2025-05-08 19:20:13 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/videoparsers/gsth264parse.c: + h264parse: Require codec_data when receiving stream-format=avc or avc3 + It's not really possible to safely interpret the content afterwards if + it's missing. + Even for AVC3, the codec_data doesn't need to contain a SPS/PPS, but + it still needs to be present to tell downstream elements about the size + of the nal unit length field. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9087> + +2025-05-08 19:16:13 -0400 Olivier Crête <olivier.crete@collabora.com> + + * gst/videoparsers/gsth264parse.c: + h264parse: Never output stream-format=avc/avc3 caps without codec_data + It's not possible to interpret further buffers without knowing the nal_length_size + field, so avc1/avc3 caps without the codec_data aren't valid, don't push them out. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9087> + +2025-05-12 16:40:05 -0400 Olivier Crête <olivier.crete@collabora.com> + + * tests/check/elements/h264parse.c: + h264parse test: Send PPS in SPS parsing test + Without the PPS, the codec_data can not be created + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9087> + +2025-05-13 19:37:59 -0400 Doug Nazar <nazard@nazar.ca> + + * gst/transcode/gsturitranscodebin.c: + uritranscodebin: Free various props before being set + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9088> + +2025-05-13 19:35:58 -0400 Doug Nazar <nazard@nazar.ca> + + * gst/transcode/gsttranscodebin.c: + transcodebin: Free various props before being set + Also disable setting filters more than once. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9088> + +2025-05-13 19:34:59 -0400 Doug Nazar <nazard@nazar.ca> + + * gst-libs/gst/vulkan/gstvkwindow.c: + vulkan: Free various props before being set + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9088> + +2025-05-13 19:23:53 -0400 Doug Nazar <nazard@nazar.ca> + + * gst-libs/gst/transcoder/gsttranscoder.c: + transcoder: Free various props before during cleanup + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9088> + +2025-05-13 19:15:21 -0400 Doug Nazar <nazard@nazar.ca> + + * gst-libs/gst/player/gstplayer-g-main-context-signal-dispatcher.c: + * gst-libs/gst/player/gstplayer.c: + * gst-libs/gst/transcoder/gsttranscoder.c: + * gst-libs/gst/vulkan/gstvkdevice.c: + * gst-libs/gst/vulkan/gstvkoperation.c: + * gst-libs/gst/vulkan/gstvkphysicaldevice.c: + * gst-libs/gst/webrtc/rtptransceiver.c: + * sys/applemedia/videotexturecache-gl.m: + * sys/applemedia/videotexturecache-vulkan.mm: + * sys/d3d11/gstd3d11dxgicapture.cpp: + * sys/d3d11/gstd3d11window.cpp: + * sys/d3d11/gstd3d11winrtcapture.cpp: + * sys/va/gstvadecoder.c: + * sys/va/gstvaencoder.c: + * sys/va/gstvafilter.c: + * sys/webview2/gstwebview2object.cpp: + all: Annotate *_set_property() contructor only props without free + Properties that are marked constructor only aren't required to be freed + before g_value_dup_*() as they can only be called once during construction. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9088> + +2025-03-30 19:44:22 -0400 Doug Nazar <nazard@nazar.ca> + + * gst-libs/gst/vulkan/wayland/gstvkdisplay_wayland.c: + vulkan/wayland: Init debug category before usage + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9086> + +2025-05-27 00:03:05 +0900 Seungha Yang <seungha@centricular.com> + + * sys/nvcodec/gstnvencoder.cpp: + nvencoder: Fix GstNvEncTask leak on non-flow-ok return + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9084> + +2025-05-26 23:17:15 +0900 Seungha Yang <seungha@centricular.com> + + * sys/nvcodec/gstnvencoder.cpp: + nvencoder: Fix GstVideoCodecFrame leak on non-flow-ok return + ... and use gst_video_encoder_release_frame() to drop frame + instead of gst_video_encoder_finish_frame() + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9084> + +2025-05-24 14:42:32 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst/codecalpha/gstalphacombine.c: + alphacombine: Fix seeking after EOS + The alpha_eos state was not being reset on flush-stop, as a side effect + flushing seek after EOS did not work. + Fixes #4442 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9079> + +2025-03-30 01:43:33 -0400 Doug Nazar <nazard@nazar.ca> + + * tests/check/elements/dash_mpd.c: + dash: mpdclient: Re-enable test now that mpdclient is fixed + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9068> + +2025-03-30 01:41:10 -0400 Doug Nazar <nazard@nazar.ca> + + * ext/dash/gstmpdclient.c: + dash: mpdclient: Don't pass terminating NUL to adapter + libxml2 will complain if it detects any characters after the valid + XML, including a NUL byte. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9068> + +2025-05-21 20:29:06 +0530 Nirbheek Chauhan <nirbheek@centricular.com> + + * meson_options.txt: + meson: Add a monorepo-wide qt-method option and yield to it + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9063> + +2025-05-21 20:23:01 +0530 Nirbheek Chauhan <nirbheek@centricular.com> + + * ext/qt6d3d11/meson.build: + * meson_options.txt: + * tests/examples/qt6d3d11/meson.build: + meson: Fix qt detection for qt6d3d11 plugin + This now matches the code for the qml6gl plugin. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9063> + +2025-05-19 20:38:56 +0900 Seungha Yang <seungha@centricular.com> + + * gst-libs/gst/d3d12/meson.build: + d3d12: Fix gstreamer-full subproject build with gcc + Since default option "cpp_std=c++14" is not applied automatically + in case that gstreamer is used as a meson subproject, specify + cpp_std option explicitly + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9033> + +2025-05-13 08:20:53 -0400 Doug Nazar <nazard@nazar.ca> + + * tests/check/elements/audiovisualizer.c: + audiovisualizer: Change test to use native endian audio format + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9025> + +2025-05-13 01:40:57 +0900 Seungha Yang <seungha@centricular.com> + + * sys/d3d12/gstd3d12decoder.cpp: + d3d12decoder: Workaround for NVIDIA crash on resolution change + Recent NVIDIA driver seems to crash on resolution change + if ID3D12VideoDecoder and ID3D12VideoDecodeCommandList are reused. + Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4415 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8977> + +2025-05-02 15:46:26 +0200 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> + + * gst/removesilence/gstremovesilence.c: + removesilence: canonicalize property names + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8962> + +2025-05-02 10:08:31 +0200 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> + + * ext/opencv/gsthanddetect.cpp: + handdetect: canonicalize property names + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8962> + +2025-05-02 08:56:19 +0200 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> + + * ext/aes/gstaesdec.c: + * ext/chromaprint/gstchromaprint.c: + * ext/iqa/iqa.c: + * ext/openal/gstopenalsink.c: + * ext/openal/gstopenalsrc.c: + * ext/opencv/gstcvtracker.cpp: + * ext/opencv/gsthanddetect.cpp: + * ext/opencv/gstsegmentation.cpp: + * ext/qroverlay/gstbaseqroverlay.c: + * ext/qroverlay/gstdebugqroverlay.c: + * ext/sndfile/gstsfsrc.c: + * ext/spandsp/gsttonegeneratesrc.c: + * ext/x265/gstx265enc.c: + * gst-libs/gst/mse/gstsourcebuffer.c: + * gst-libs/gst/transcoder/gsttranscoder-signal-adapter.c: + * gst-libs/gst/uridownloader/gstfragment.c: + * gst/accurip/gstaccurip.c: + * gst/proxy/gstproxysrc.c: + * gst/removesilence/gstremovesilence.c: + * sys/bluez/gsta2dpsink.c: + * sys/bluez/gstavdtpsink.c: + * sys/bluez/gstavdtpsrc.c: + * sys/directshow/dshowvideosink.cpp: + * sys/directshow/gstdshowvideosrc.cpp: + * sys/directsound/gstdirectsoundsrc.c: + * sys/dvb/gstdvbsrc.c: + * sys/fbdev/gstfbdevsink.c: + * sys/kms/gstkmsallocator.c: + properties: add G_PARAM_STATIC_STRINGS where missing + "Hold on, I know you need to generate the registry, but let me just + create copies of all those strings first", Framework whispered + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8962> + +2025-05-08 19:23:54 +0900 Seungha Yang <seungha@centricular.com> + + * tests/examples/cuda/cudamemory-sync.c: + * tests/examples/cuda/meson.build: + examples: cuda: Fix build with old CUDA SDK + Some symbols are not available in old cuda headers. + Use our stub headers instead + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8961> + +2025-05-08 19:18:32 +0900 Seungha Yang <seungha@centricular.com> + + * gst-libs/gst/cuda/gstcudanvrtc.cpp: + cuda: Fix runtime PTX compile + Handle extra option args + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8961> + +2025-05-05 17:51:55 +0000 L. E. Segovia <amy@centricular.com> + + * ext/curl/gstcurlfilesink.c: + * ext/curl/gstcurlhttpsink.c: + * ext/curl/gstcurlsmtpsink.c: + curl: Fix build with MSVC + See https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1740#note_2895537 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8946> + +2025-03-11 15:02:03 +0100 Pablo García <pgarcia@fluendo.com> + + * ext/curl/gstcurlbasesink.c: + curl: use CURL_SOCKET_BAD to ensure cross-platform + Solves this error in Windows build: + ../ext/curl/gstcurlbasesink.c:1154:14: error: comparison of unsigned + expression in '< 0' is always false -Werror=type-limits + 1154 | if (curlfd < 0) { + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8958> + +2025-05-01 15:16:22 -0400 Olivier Crête <olivier.crete@collabora.com> + + * ext/lcevcdecoder/gstlcevcdec.c: + lcevcdec: Use portable printf formatting macros + This should fix 32bit builds + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8927> + +2025-05-01 15:30:28 -0400 Olivier Crête <olivier.crete@collabora.com> + + * ext/lcevcencoder/gstlcevcencoder.c: + lcevcenc: Use portable printf formatting macros + This should fix 32bit builds + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8927> + +2025-04-03 02:24:13 +0530 Nirbheek Chauhan <nirbheek@centricular.com> + + * tests/check/meson.build: + gst-examples: Port all webrtc examples to libsoup-3.0 + Also do some indent changes, and add `static` while we're at it. + And move the libsoup wrap to 3.6.5, add nghttp2 wrap + We need to disable libsoup 3.0 tests because they fail to build on + Windows. + Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1115 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8919> + +2025-04-01 17:58:14 +0530 Nirbheek Chauhan <nirbheek@centricular.com> + + * tests/check/meson.build: + meson: Add include_type: 'system' everywhere to squelch wrap warnings + Wrap dependencies add a ton of warnings with the latest GCC in Fedora + 42. Squelch them by specifying that these dependencies are not + a part of the gstreamer project, and should be treated as system deps. + libsoup needs some porting work for the bump, and vorbis/lame are + already at their latest releases. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8919> + +2025-02-08 22:44:47 +0800 Zhao, Gang <gang.zhao.42@gmail.com> + + * gst/midi/midiparse.c: + midiparse: Quit parsing if error occurred + Invalid midi files will crash gstreamer or let it enter infinite + loop. Fixed it by quit parsing if error is encountered. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8918> + +2025-02-03 13:53:09 +0800 Zhao, Gang <gang.zhao.42@gmail.com> + + * gst/midi/midiparse.c: + * gst/midi/midiparse.h: + midiparse: Consider tempo change when calculating duration + Midi meta event set tempo would change tempo. Should consider tempo + change when calculating buffer PTS / duration. + Save tempo change to a list and calculate duration according to the + list. + Fixed #4158 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8918> + +2025-04-24 07:48:12 +0200 Jochen Henneberg <jochen@centricular.com> + + * sys/va/gstvah264enc.c: + va: Fix H264 profile decision logic + The current logic would choose 'baseline' profiles only in case that + these profiles appear in the list first. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8893> + +2025-04-24 20:26:57 +0100 Tim-Philipp Müller <tim@centricular.com> + + * meson.build: + Back to development after 1.26.1 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8890> + === release 1.26.1 === 2025-04-24 20:20:14 +0100 Tim-Philipp Müller <tim@centricular.com>
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/NEWS -> _service:download_url:gst-plugins-bad-1.26.2.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.1 and was released on 24 April 2025. +The latest bug-fix release in the stable 1.26 series is 1.26.2 and was released on 29 May 2025. See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of this document. -Last updated: Thursday 24 April 2025, 16:00 UTC (log) +Last updated: Thursday 29 May 2025, 20:00 UTC (log) ## Introduction @@ -1568,6 +1568,247 @@ - List of Merge Requests applied in 1.26.1 - List of Issues fixed in 1.26.1 +1.26.2 + +The second 1.26 bug-fix release (1.26.2) was released on 29 May 2025. + +This release only contains bugfixes as well as a number of security fixes and important playback fixes, and it should be safe to +update from 1.26.0. + +Highlighted bugfixes in 1.26.2 + +- Various security fixes and playback fixes +- aggregator base class fixes to not produce buffers too early in live mode +- AWS translate element improvements +- D3D12 video decoder workarounds for crashes on NVIDIA cards on resolution changes +- dav1d AV1-decoder performance improvements +- fmp4mux: tfdt and composition time offset fixes, plus AC-3 / EAC-3 audio support +- GStreamer editing services fixes for sources with non-1:1 aspect ratios +- MIDI parser improvements for tempo changes +- MP4 demuxer atom parsing improvements and security fixes +- New skia-based video compositor element +- Subtitle parser security fixes +- Subtitle rendering and seeking fixes +- Playbin3 and uridecodebin3 stability fixes +- GstPlay stream selection improvements +- WAV playback regression fix +- GTK4 paintable sink colorimetry support and other improvements +- WebRTC: allow webrtcsrc to wait for a webrtcsink producer to initiate the connection +- WebRTC: new Janus Video Room WebRTC source element +- vah264enc profile decision making logic fixes +- Python bindings gained support for handling mini object writability (buffers, caps, etc.) +- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements + +gstreamer + +- aggregator: Various state related fixes +- element: ref-sink the correct pad template when replacing an existing one +- pipeline: Store the actual latency even if no static latency was configured +- structure: Add gst_structure_is_writable() API to allow python bindings to be able to handle writability of MiniObjects +- tracerutils: Do not warn on empty string as tracername +- tracerutils: Fix leak in gst_tracer_utils_create_tracer() +- Ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during cleanup +- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes + +gst-plugins-base + +- alsa: Avoid infinite loop in DSD rate detection +- gl: Implement basetransform meta transform function +- glshader: free shader on stop +- glupload: Only add texture-target field to GL caps +- gstaudioutilsprivate: Fix gcc 15 compiler error with function pointer +- mikey: Avoid infinite loop while parsing MIKEY payload with unhandled payload types +- properties: add G_PARAM_STATIC_STRINGS where missing +- riff-media: fix MS and DVI ADPCM av_bps calculations +- subtitleoverlay: Remove 0.10 hardware caps handling +- subtitleoverlay: Missing support for DMABuf(?) +- tests: opus: Update channel support and add to meson +- textoverlay: fix shading for RGBx / RGBA pixel format variants +- textoverlay background is wrong while cropping +- uridecodebin3: Don’t hold play items lock while releasing pads +- uridecodebin3: deadlock on PLAY_ITEMS_LOCK +- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes +- Fix Qt detection in various places + +gst-plugins-good + +- adaptivedemux2: Fixes for collection handling +- adaptivedemux2: Fix several races +- dash: mpdclient: Don’t pass terminating NUL to adapter +- gl: Implement basetransform meta transform function +- imagefreeze: Set seqnum from segment too +- interleave: Don’t hold object lock while querying caps downstream +- matroskamux: Write stream headers before finishing file, so that a correct file with headers is written if we finish without + any data +- meson: Add build_rpath for qt6 plugin on macOS +- meson: Fix qt detection in various places +- properties: add G_PARAM_STATIC_STRINGS where missing +- qtdemux: Check length of JPEG2000 colr box before parsing it +- qtdemux: Parse chan box and improve raw audio channel layout handling +- qtdemux: Improve track parsing +- qtdemux: Use byte reader to parse mvhd box +- qtdemux: cmpd box is only mandatory for uncompressed video with uncC version 0 +- rtph264pay: Reject stream-format=avc without codec_data +- rtputils: Add debug category +- v4l2: pool: Send drop frame signal after dqbuf success +- v4l2: pool: fix assert when mapping video frame with DMA_DRM caps +- v4l2videoenc: report error only when buffer pool parameters are invalid +- wavparse: Ignore EOS when parsing the headers +- wavparse: Regression leading to unplaybable wav files that were working before +- Ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during cleanup +- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes +- Fixes for big endian +- Switch to GST_AUDIO_NE() +- Valgrind fixes + +gst-plugins-bad + +- alphacombine: Fix seeking after EOS +- cuda: Fix runtime PTX compile, fix example code build with old CUDA SDK +- curl: Fix build with MSVC +- curl: small fixups p3 +- d3d12: Fix gstreamer-full subproject build with gcc +- d3d12: Generate gir file +- d3d12decoder: Workaround for NVIDIA crash on resolution change +- d3d12memory: Allow set_fence() only against writable memory +- d3d12memory: Make D3D12 map flags inspectable +- d3d12screencapturesrc: Fix desktop handle leak +- dash: mpdclient: Don’t pass terminating NUL to adapter +- dvbsuboverlay: Actually make use of subtitle running time instead of using PTS +- dvbsuboverlay: No subtitles after seek +- h264parse: Never output stream-format=avc/avc3 caps without codec_data +- lcevc: Use portable printf formatting macros +- midiparse: Consider tempo changes when calculating duration +- nvencoder: Fix GstVideoCodecFrame leak on non-flow-ok return +- play: Improve stream selection +- properties: add G_PARAM_STATIC_STRINGS where missing +- rtpsender: fix ‘priority’ GValue get/set +- va: Fix H264 profile decision logic +- vulkan/wayland: Init debug category before usage +- Ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during cleanup +- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes +- Fixes for big endian +- Fix Qt detection in various places +- Switch to GST_AUDIO_NE() +- Valgrind fixes + +gst-plugins-ugly + +- No changes + +GStreamer Rust plugins + +- awstranslate: improve control over accumulator behavior +- awstranslate: output buffer lists +- cea608tott: make test text less shocking by having more cues as context +- dav1ddec: Directly decode into downstream allocated buffers if possible +- deny: Allow webpki-root-certs license +- fmp4mux: Add support for AC-3 / EAC-3 +- fmp4mux: Use earliest PTS for the base media decode time (tfdt) +- fmp4mux: Fix handling of negative DTS in composition time offset +- fmp4mux: Write lmsg as compatible brand into the last fragment +- mp4mux: add extra brands +- mp4: avoid dumping test output into build directory +- mp4: migrate to mp4-atom to check muxing +- mp4: test the trak structure +- gtk4: Update and adapt to texture builder API changes +- gtk4: Initial colorimetry support +- gtk4: Update default GTK4 target version to 4.10 +- rtp: Update to bitstream-io 4.0 +- skia: Implement a video compositor using skia +- webrtc: addressing a few deadlocks +- webrtc: Support for producer sessions targeted at a given consumer +- webrtc: add new JanusVR source element +- webrtc: janus: clean up and refactoring +- webrtcsink: Use seq number instead of Uuid for discovery +- webrtc: Make older peers less likely to crash when webrtcsrc is used +- Fix or silence various new clippy warnings +- Update Cargo.lock to fix duplicated target-lexicon + +gst-libav + +- Valgrind fixes +- libav: Only allocate extradata while decoding + +gst-rtsp-server + +- properties: add G_PARAM_STATIC_STRINGS where missing +- properties: ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during + cleanup +- tests: Valgrind fixes + +gstreamer-vaapi + +- Ensure properties are freed before (re)setting with g_value_dup_object() or g_value_dup_boxed() and during cleanup + +gstreamer-sharp + +- No changes + +gst-python + +This release includes important fixes for the GStreamer Python bindings. + +Since pygobject 3.13 around 10 years ago, it wasn’t possible anymore to modify GStreamer miniobjects, e.g. modify caps or set +buffer timestamps, as an implicit copy of the original would always be made. This should finally work again now. + +- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes +- python: Add overrides to be able to handle writability of MiniObjects +- python: Convert buffer metadata API to use @property decorators +- REGRESSION: pygobject 3.13 now copies the GstStructure when getting them from a GstCaps, making it impossible to properly + modify structures from caps in place + +gst-editing-services + +- Fix frame position for sources with par < 1 +- Fix video position for sources with pixel-aspect-ratio > 1 +- Valgrind fixes +- properties: add G_PARAM_STATIC_STRINGS where missing +- Switch to GST_AUDIO_NE() to make things work properly on Big Endian systems + +gst-devtools, gst-validate + gst-integration-testsuites + +- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes +- validate: baseclasses: Reset Test timeouts between iterations +- validate: scenario: Fix race condition when ignoring EOS + +gst-examples + +- Fix new warnings on Fedora 42, various meson warnings, and other small meson build/wrap fixes +- webrtc examples: Fix running against self-signed certs +- webrtc/signalling: fix compatibility with python 3.13 + +gstreamer-docs + +- No changes + +Development build environment + +- Various wrap updates +- Add qt-method meson options to fix Qt detection in various places +- pre-commit: Workaround broken shebang on Windows + +Cerbero build tool and packaging changes in 1.26.2 + +- directx-headers: Fix g-ir-scanner expecting MSVC naming convention for gst-plugins-bad introspection +- m4: update recipe to fix hang in configure +- pango: Fix introspection missing since 1.56.2 update + +Contributors to 1.26.2 + +Adrian Perez de Castro, Alexander Slobodeniuk, Alicia Boya García, Andoni Morales Alastruey, Biswapriyo Nath, Brad Hards, Branko +Subasic, Christoph Reiter, Daniel Morin, Doug Nazar, Devon Sookhoo, Eva Pace, Guillaume Desmottes, Hou Qi, Jakub Adam, Jan +Schmidt, Jochen Henneberg, Jordan Petridis, L. E. Segovia, Mathieu Duponchelle, Matthew Waters, Nicolas Dufresne, Nirbheek +Chauhan, Olivier Crête, Pablo García, Piotr Brzeziński, Robert Mader, Sebastian Dröge, Seungha Yang, Thibault Saunier, +Tim-Philipp Müller, Vasiliy Doylov, Wim Taymans, Xavier Claessens, Zhao, Gang, + +… 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.2 + +- List of Merge Requests applied in 1.26.2 +- List of Issues fixed in 1.26.2 + 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.1.tar.xz/RELEASE -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/RELEASE
Changed
@@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-bad 1.26.1. +This is GStreamer gst-plugins-bad 1.26.2. 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.1.tar.xz/ext/aes/gstaesdec.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/aes/gstaesdec.c
Changed
@@ -161,7 +161,8 @@ g_param_spec_boolean ("serialize-iv", "Serialize IV", "Read initialization vector from first 16 bytes of first buffer", GST_AES_DEFAULT_SERIALIZE_IV, - G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY)); + G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY | + G_PARAM_STATIC_STRINGS)); /** * GstAesDec:per-buffer-padding @@ -177,7 +178,8 @@ "If true, pad each buffer using PKCS7 padding scheme. Otherwise, only" "pad final buffer", GST_AES_PER_BUFFER_PADDING_DEFAULT, - G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY)); + G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY | + G_PARAM_STATIC_STRINGS)); /** * GstAesDec:key @@ -192,7 +194,8 @@ "the number of bits in the key length : " "16 bytes for AES 128 and 32 bytes for AES 256", (gchar *) GST_AES_DEFAULT_KEY, - G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY)); + G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY | + G_PARAM_STATIC_STRINGS)); /** * GstAesDec:iv * @@ -205,7 +208,8 @@ "AES encryption initialization vector (in hexadecimal). " "Length must equal AES block length (16 bytes)", (gchar *) GST_AES_DEFAULT_IV, - G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY)); + G_PARAM_READWRITE | GST_PARAM_MUTABLE_READY | + G_PARAM_STATIC_STRINGS)); gst_element_class_set_details_simple (gstelement_class, "aesdec",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/chromaprint/gstchromaprint.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/chromaprint/gstchromaprint.c
Changed
@@ -92,13 +92,14 @@ g_object_class_install_property (gobject_class, PROP_FINGERPRINT, g_param_spec_string ("fingerprint", "Resulting fingerprint", - "Resulting fingerprint", NULL, G_PARAM_READABLE)); + "Resulting fingerprint", NULL, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_MAX_DURATION, g_param_spec_uint ("duration", "Duration limit", "Number of seconds of audio to use for fingerprinting", 0, G_MAXUINT, DEFAULT_MAX_DURATION, - G_PARAM_READABLE | G_PARAM_WRITABLE)); + G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS)); gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_chromaprint_finalize);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/curl/gstcurlbasesink.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/curl/gstcurlbasesink.c
Changed
@@ -1151,7 +1151,7 @@ g_assert (sink); - if (curlfd < 0) { + if (curlfd == CURL_SOCKET_BAD) { /* signal an unrecoverable error to the library which will close the socket and return CURLE_COULDNT_CONNECT */
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/curl/gstcurlfilesink.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/curl/gstcurlfilesink.c
Changed
@@ -234,7 +234,7 @@ if (last_slash != NULL) { /* create dir if file name contains dir component */ gchar *dir_name = g_strndup (file_name, last_slash - file_name); - if (g_mkdir_with_parents (dir_name, S_IRWXU) < 0) { + if (g_mkdir_with_parents (dir_name, 0755) < 0) { basesink->error = g_strdup_printf ("failed to create directory '%s'", dir_name); g_free (file_name);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/curl/gstcurlhttpsink.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/curl/gstcurlhttpsink.c
Changed
@@ -534,8 +534,8 @@ url_contains_credentials (const gchar * url) { CURLUcode rc; - g_autofree gchar *user = NULL; - g_autofree gchar *pass = NULL; + gchar *user = NULL; + gchar *pass = NULL; CURLU *handle = NULL; if (url == NULL) { @@ -556,10 +556,14 @@ if (rc != CURLUE_OK) goto error; + curl_free (pass); + curl_free (user); curl_url_cleanup (handle); return TRUE; error: + curl_free (pass); + curl_free (user); curl_url_cleanup (handle); return FALSE; }
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/curl/gstcurlsmtpsink.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/curl/gstcurlsmtpsink.c
Changed
@@ -55,7 +55,9 @@ #include <sys/socket.h> #endif #include <sys/types.h> +#ifdef HAVE_SYS_TIME_H #include <sys/time.h> +#endif #ifdef HAVE_PWD_H #include <pwd.h> #endif
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/dash/gstmpdclient.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/dash/gstmpdclient.c
Changed
@@ -1140,15 +1140,15 @@ GstMPDPeriodNode * period_node) { GstFragment *download; - GstAdapter *adapter; GstBuffer *period_buffer; GError *err = NULL; GstUri *base_uri, *uri; gchar *query = NULL; - gchar *uri_string, *wrapper; + gchar *uri_string; GList *new_periods = NULL; - const gchar *data; + gsize alloc_size, buffer_size; + GString *data; /* ISO/IEC 23009-1:2014 5.5.3 4) * Remove nodes that resolve to nothing when resolving @@ -1199,28 +1199,24 @@ /* external xml could have multiple period without root xmlNode. * To avoid xml parsing error caused by no root node, wrapping it with * custom root node */ - adapter = gst_adapter_new (); + buffer_size = gst_buffer_get_size (period_buffer); + alloc_size = + buffer_size + sizeof (CUSTOM_WRAPPER_START) + + sizeof (CUSTOM_WRAPPER_END) - 2; + data = g_string_sized_new (alloc_size); + g_string_append_len (data, CUSTOM_WRAPPER_START, + sizeof (CUSTOM_WRAPPER_START) - 1); + + gst_buffer_extract (period_buffer, 0, data->str + data->len, buffer_size); + gst_buffer_unref (period_buffer); + data->len += buffer_size; - wrapper = g_new (gchar, strlen (CUSTOM_WRAPPER_START)); - memcpy (wrapper, CUSTOM_WRAPPER_START, strlen (CUSTOM_WRAPPER_START)); - gst_adapter_push (adapter, - gst_buffer_new_wrapped (wrapper, strlen (CUSTOM_WRAPPER_START))); + g_string_append_len (data, CUSTOM_WRAPPER_END, + sizeof (CUSTOM_WRAPPER_END) - 1); - gst_adapter_push (adapter, period_buffer); + new_periods = gst_mpdparser_get_external_periods (data->str, alloc_size); - wrapper = g_strdup (CUSTOM_WRAPPER_END); - gst_adapter_push (adapter, - gst_buffer_new_wrapped (wrapper, strlen (CUSTOM_WRAPPER_END) + 1)); - - data = gst_adapter_map (adapter, gst_adapter_available (adapter)); - - new_periods = - gst_mpdparser_get_external_periods (data, - gst_adapter_available (adapter)); - - gst_adapter_unmap (adapter); - gst_adapter_clear (adapter); - gst_object_unref (adapter); + g_string_free (data, TRUE); return new_periods; }
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/iqa/iqa.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/iqa/iqa.c
Changed
@@ -476,13 +476,15 @@ #ifdef HAVE_DSSIM g_object_class_install_property (gobject_class, PROP_DO_SSIM, g_param_spec_boolean ("do-dssim", "do-dssim", - "Run structural similarity checks", FALSE, G_PARAM_READWRITE)); + "Run structural similarity checks", FALSE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_SSIM_ERROR_THRESHOLD, g_param_spec_double ("dssim-error-threshold", "dssim error threshold", "dssim value over which the element will post an error message on the bus." " A value < 0.0 means 'disabled'.", - -1.0, G_MAXDOUBLE, DEFAULT_DSSIM_ERROR_THRESHOLD, G_PARAM_READWRITE)); + -1.0, G_MAXDOUBLE, DEFAULT_DSSIM_ERROR_THRESHOLD, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); #endif /** @@ -495,7 +497,7 @@ g_object_class_install_property (gobject_class, PROP_MODE, g_param_spec_flags ("mode", "IQA mode", "Controls the frame comparison mode.", GST_TYPE_IQA_MODE, - 0, G_PARAM_READWRITE)); + 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_type_mark_as_plugin_api (GST_TYPE_IQA_MODE, 0);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/lcevcdecoder/gstlcevcdec.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/lcevcdecoder/gstlcevcdec.c
Changed
@@ -406,7 +406,8 @@ } GST_INFO_OBJECT (lcevc, - "Received enhanced picture: ts=%ld e=%d w=%d h=%d t=%d b=%d l=%d r=%d", + "Received enhanced picture: ts=%" G_GINT64_FORMAT " e=%d w=%d h=%d" + " t=%d b=%d l=%d r=%d", decode_info.timestamp, decode_info.enhanced, pic_desc.width, pic_desc.height, pic_desc.cropTop, pic_desc.cropBottom, pic_desc.cropLeft, pic_desc.cropRight); @@ -479,12 +480,14 @@ while (LCEVC_ReceiveDecoderBase (lcevc->decoder_handle, &picture_handle) == LCEVC_Success) { - GST_DEBUG_OBJECT (lcevc, "Received base picture %ld", picture_handle.hdl); + GST_DEBUG_OBJECT (lcevc, "Received base picture %" G_GUINTPTR_FORMAT, + picture_handle.hdl); if (LCEVC_FreePicture (lcevc->decoder_handle, picture_handle) != LCEVC_Success) { GST_ELEMENT_ERROR (lcevc, STREAM, DECODE, (NULL), - ("Could not free base picture %ld", picture_handle.hdl)); + ("Could not free base picture %" G_GUINTPTR_FORMAT, + picture_handle.hdl)); return FALSE; } } @@ -502,8 +505,9 @@ lcevc_meta = gst_buffer_get_lcevc_meta (input_buffer); if (!lcevc_meta) { GST_INFO_OBJECT (lcevc, - "Input buffer %ld enhancement data not found, doing passthrough", - input_buffer->pts); + "Input buffer %" GST_TIME_FORMAT + " enhancement data not found, doing passthrough", + GST_TIME_ARGS (GST_BUFFER_PTS (input_buffer))); /* Set output state with input resolution to do passthrough */ return ensure_output_resolution (lcevc, @@ -513,8 +517,8 @@ if (!gst_buffer_map (lcevc_meta->enhancement_data, &enhancement_info, GST_MAP_READ)) { - GST_INFO_OBJECT (lcevc, "Could not map input buffer %ld enhancement data", - input_buffer->pts); + GST_INFO_OBJECT (lcevc, "Could not map input buffer %" GST_TIME_FORMAT + " enhancement data", GST_TIME_ARGS (GST_BUFFER_PTS (input_buffer))); goto done; } @@ -522,15 +526,15 @@ input_buffer->pts, TRUE, enhancement_info.data, enhancement_info.size) != LCEVC_Success) { GST_INFO_OBJECT (lcevc, - "Could not send input buffer %ld enhancement data with size %ld", - input_buffer->pts, enhancement_info.size); + "Could not send input buffer %" GST_TIME_FORMAT + " enhancement data with size %zu", + GST_TIME_ARGS (GST_BUFFER_PTS (input_buffer)), enhancement_info.size); goto done; } GST_INFO_OBJECT (lcevc, - "Sent input buffer %ld enhancement data with size %lu", - input_buffer->pts, enhancement_info.size); - + "Sent input buffer %" GST_TIME_FORMAT " enhancement data with size %zu", + GST_TIME_ARGS (GST_BUFFER_PTS (input_buffer)), enhancement_info.size); ret = TRUE; done: @@ -548,27 +552,29 @@ if (!gst_video_frame_map (&frame, &lcevc->in_info, input_buffer, GST_MAP_READ)) { GST_ELEMENT_ERROR (lcevc, STREAM, DECODE, (NULL), - ("Could not map input buffer %ld", input_buffer->pts)); + ("Could not map input buffer %" GST_TIME_FORMAT, + GST_TIME_ARGS (GST_BUFFER_PTS (input_buffer)))); goto done; } - if (!gst_lcevc_dec_utils_alloc_picture_handle (lcevc->decoder_handle, &frame, - &picture_handle)) { + if (!gst_lcevc_dec_utils_alloc_picture_handle (lcevc->decoder_handle, + &frame, &picture_handle)) { GST_ELEMENT_ERROR (lcevc, STREAM, DECODE, (NULL), - ("Could not allocate input picture handle %ld", input_buffer->pts)); + ("Could not allocate input picture handle %" GST_TIME_FORMAT, + GST_TIME_ARGS (GST_BUFFER_PTS (input_buffer)))); goto done; } if (LCEVC_SendDecoderBase (lcevc->decoder_handle, input_buffer->pts, TRUE, picture_handle, 1000000, NULL) != LCEVC_Success) { GST_ELEMENT_ERROR (lcevc, STREAM, DECODE, (NULL), - ("Could not send input buffer %ld base picture", input_buffer->pts)); + ("Could not send input buffer %" GST_TIME_FORMAT " base picture", + GST_TIME_ARGS (GST_BUFFER_PTS (input_buffer)))); goto done; } - GST_INFO_OBJECT (lcevc, "Sent input buffer %ld base picture", - input_buffer->pts); - + GST_INFO_OBJECT (lcevc, "Sent input buffer %" GST_TIME_FORMAT " base picture", + GST_TIME_ARGS (GST_BUFFER_PTS (input_buffer))); ret = TRUE; done: @@ -596,7 +602,7 @@ if (!gst_video_frame_map (&map, &s->info, frame->output_buffer, GST_MAP_WRITE)) { GST_ELEMENT_ERROR (lcevc, STREAM, DECODE, (NULL), - ("Could not map output buffer for writting")); + ("Could not map output buffer for writing")); goto done; } @@ -639,8 +645,10 @@ { GstLcevcDec *lcevc = GST_LCEVC_DEC (decoder); - GST_DEBUG_OBJECT (decoder, "Handling frame %d with timestamp %ld", - frame->system_frame_number, frame->input_buffer->pts); + GST_DEBUG_OBJECT (decoder, "Handling frame %" G_GUINT32_FORMAT + " with timestamp %" GST_TIME_FORMAT, + frame->system_frame_number, + GST_TIME_ARGS (GST_BUFFER_PTS (frame->input_buffer))); if (!send_enhancement_data (lcevc, frame->input_buffer)) goto error;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/lcevcencoder/gstlcevcencoder.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/lcevcencoder/gstlcevcencoder.c
Changed
@@ -464,7 +464,7 @@ case EIL_PT_Int32: case EIL_PT_Int64:{ gint64 val = g_ascii_strtoll (val_str + 1, NULL, 10); - g_string_append_printf (res, "%ld", val); + g_string_append_printf (res, "%" G_GINT64_FORMAT, val); break; } case EIL_PT_Uint8: @@ -472,7 +472,7 @@ case EIL_PT_Uint32: case EIL_PT_Uint64:{ guint64 val = g_ascii_strtoull (val_str + 1, NULL, 10); - g_string_append_printf (res, "%lu", val); + g_string_append_printf (res, "%" G_GUINT64_FORMAT, val); break; } case EIL_PT_Float: @@ -548,15 +548,16 @@ frame = output->user_data; pts = frame->input_buffer->pts; - GST_INFO_OBJECT (eil, "Received output frame %ld with lcevc size %d", pts, - output->lcevc_length); + GST_INFO_OBJECT (eil, "Received output frame %" GST_TIME_FORMAT + " with lcevc size %u", GST_TIME_ARGS (pts), output->lcevc_length); /* The EIL DTS can be negative, we need to do the conversion so it can be * stored in a GstClockTime (guint64). The EIL PTS can never be negative * because it is set using the input buffer PTS, which is a GstClockTime. */ if (output->dts < 0 && priv->out_ts_offset == 0) { priv->out_ts_offset = -1 * output->dts; - GST_INFO_OBJECT (eil, "Output DTS offset set to %ld", priv->out_ts_offset); + GST_INFO_OBJECT (eil, "Output DTS offset set to %" GST_TIME_FORMAT, + GST_TIME_ARGS (priv->out_ts_offset)); } /* Created output buffer with output data */ @@ -758,14 +759,15 @@ if (!gst_video_frame_map (&video_frame, &priv->in_info, frame->input_buffer, GST_MAP_READ)) { GST_ELEMENT_ERROR (eil, STREAM, ENCODE, (NULL), - ("Could not map input buffer %ld", pts)); + ("Could not map input buffer %" GST_TIME_FORMAT, GST_TIME_ARGS (pts))); goto error; } /* Initialize EIL picture */ if (EIL_InitPictureDefault (&picture) != EIL_RC_Success) { GST_ELEMENT_ERROR (eil, STREAM, ENCODE, (NULL), - ("Could not initialize EIL picture %ld", pts)); + ("Could not initialize EIL picture %" GST_TIME_FORMAT, + GST_TIME_ARGS (pts))); goto error; } @@ -773,7 +775,8 @@ if (!gst_lcevc_encoder_utils_init_eil_picture (priv->in_frame_type, &video_frame, pts, &picture)) { GST_ELEMENT_ERROR (eil, STREAM, ENCODE, (NULL), - ("Could not set frame values on EIL picture %ld", pts)); + ("Could not set frame values on EIL picture %" GST_TIME_FORMAT, + GST_TIME_ARGS (pts))); goto error; } @@ -784,11 +787,13 @@ /* Encode frame */ if (EIL_Encode (priv->ctx->context, &picture) != EIL_RC_Success) { GST_ELEMENT_ERROR (eil, STREAM, ENCODE, (NULL), - ("Could not encode input frame %ld", pts)); + ("Could not encode input frame %" GST_TIME_FORMAT, + GST_TIME_ARGS (pts))); goto error; } - GST_INFO_OBJECT (eil, "Sent input frame %ld", pts); + GST_INFO_OBJECT (eil, "Sent input frame %" GST_TIME_FORMAT, + GST_TIME_ARGS (pts)); gst_video_frame_unmap (&video_frame); return GST_FLOW_OK;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/musepack/gstmusepackdec.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/musepack/gstmusepackdec.c
Changed
@@ -25,6 +25,7 @@ #include "gstmusepackdec.h" #include "gstmusepackreader.h" +#include <gst/audio/audio.h> GST_DEBUG_CATEGORY (musepackdec_debug); #define GST_CAT_DEFAULT musepackdec_debug @@ -36,17 +37,9 @@ ); #ifdef MPC_FIXED_POINT -# if G_BYTE_ORDER == G_LITTLE_ENDIAN -# define GST_MPC_FORMAT "S32LE" -# else -# define GST_MPC_FORMAT "S32BE" -# endif +# define GST_MPC_FORMAT GST_AUDIO_NE (S32) #else -# if G_BYTE_ORDER == G_LITTLE_ENDIAN -# define GST_MPC_FORMAT "F32LE" -# else -# define GST_MPC_FORMAT "F32BE" -# endif +# define GST_MPC_FORMAT GST_AUDIO_NE (F32) #endif static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/openal/gstopenalsink.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/openal/gstopenalsink.c
Changed
@@ -209,12 +209,13 @@ g_object_class_install_property (gobject_class, PROP_DEVICE_NAME, g_param_spec_string ("device-name", "Device name", - "Human-readable name of the opened device", "", G_PARAM_READABLE)); + "Human-readable name of the opened device", "", + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_DEVICE, g_param_spec_string ("device", "Device", "Human-readable name of the device", OPENAL_DEFAULT_DEVICE, - G_PARAM_READWRITE)); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_USER_DEVICE, g_param_spec_pointer ("user-device", "ALCdevice", "User device", @@ -226,7 +227,7 @@ g_object_class_install_property (gobject_class, PROP_USER_SOURCE, g_param_spec_uint ("user-source", "ALsource", "User source", 0, UINT_MAX, - 0, G_PARAM_READWRITE)); + 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_set_static_metadata (gstelement_class, "OpenAL Audio Sink", "Sink/Audio", "Output audio through OpenAL",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/openal/gstopenalsrc.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/openal/gstopenalsrc.c
Changed
@@ -184,12 +184,12 @@ g_object_class_install_property (gobject_class, PROP_DEVICE, g_param_spec_string ("device", "ALCdevice", "User device, default device if NULL", OPENAL_DEFAULT_DEVICE, - G_PARAM_READWRITE)); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_DEVICE_NAME, g_param_spec_string ("device-name", "Device name", "Human-readable name of the device", OPENAL_DEFAULT_DEVICE_NAME, - G_PARAM_READABLE)); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); gst_element_class_set_static_metadata (gstelement_class, "OpenAL Audio Source", "Source/Audio", "Input audio through OpenAL",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/opencv/gstcvtracker.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/opencv/gstcvtracker.cpp
Changed
@@ -211,7 +211,7 @@ g_object_class_install_property (gobject_class, PROP_DRAW, g_param_spec_boolean ("draw-rect", "Display", "Draw rectangle around tracked object", - TRUE, (GParamFlags) G_PARAM_READWRITE)); + TRUE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); gst_element_class_set_static_metadata (element_class, "cvtracker",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/opencv/gsthanddetect.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/opencv/gsthanddetect.cpp
Changed
@@ -201,53 +201,53 @@ g_param_spec_boolean ("display", "Display", "Whether the detected hands are highlighted in output frame", - TRUE, (GParamFlags) G_PARAM_READWRITE) + TRUE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)) ); g_object_class_install_property (gobject_class, PROP_PROFILE_FIST, - g_param_spec_string ("profile_fist", + g_param_spec_string ("profile-fist", "Profile_fist", "Location of HAAR cascade file (fist gesture)", - HAAR_FILE_FIST, (GParamFlags) G_PARAM_READWRITE) + HAAR_FILE_FIST, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)) ); g_object_class_install_property (gobject_class, PROP_PROFILE_PALM, - g_param_spec_string ("profile_palm", + g_param_spec_string ("profile-palm", "Profile_palm", "Location of HAAR cascade file (palm gesture)", - HAAR_FILE_PALM, (GParamFlags) G_PARAM_READWRITE) + HAAR_FILE_PALM, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)) ); - /* FIXME: property name needs fixing */ + g_object_class_install_property (gobject_class, PROP_ROI_X, - g_param_spec_int ("ROI_X", - "ROI_X", + g_param_spec_int ("ROI-X", + "ROI-X", "X of left-top pointer in region of interest \nGestures in the defined region of interest will emit messages", - 0, INT_MAX, 0, (GParamFlags) G_PARAM_READWRITE) + 0, INT_MAX, 0, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)) ); - /* FIXME: property name needs fixing */ + g_object_class_install_property (gobject_class, PROP_ROI_Y, - g_param_spec_int ("ROI_Y", - "ROI_Y", + g_param_spec_int ("ROI-Y", + "ROI-Y", "Y of left-top pointer in region of interest \nGestures in the defined region of interest will emit messages", - 0, INT_MAX, 0, (GParamFlags) G_PARAM_READWRITE) + 0, INT_MAX, 0, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)) ); - /* FIXME: property name needs fixing */ + g_object_class_install_property (gobject_class, PROP_ROI_WIDTH, - g_param_spec_int ("ROI_WIDTH", - "ROI_WIDTH", + g_param_spec_int ("ROI-WIDTH", + "ROI-WIDTH", "WIDTH of left-top pointer in region of interest \nGestures in the defined region of interest will emit messages", - 0, INT_MAX, 0, (GParamFlags) G_PARAM_READWRITE) + 0, INT_MAX, 0, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)) ); - /* FIXME: property name needs fixing */ + g_object_class_install_property (gobject_class, PROP_ROI_HEIGHT, - g_param_spec_int ("ROI_HEIGHT", - "ROI_HEIGHT", + g_param_spec_int ("ROI-HEIGHT", + "ROI-HEIGHT", "HEIGHT of left-top pointer in region of interest \nGestures in the defined region of interest will emit messages", - 0, INT_MAX, 0, (GParamFlags) G_PARAM_READWRITE) + 0, INT_MAX, 0, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)) ); gst_element_class_set_static_metadata (element_class,
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/opencv/gstsegmentation.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/opencv/gstsegmentation.cpp
Changed
@@ -221,7 +221,7 @@ g_object_class_install_property (gobject_class, PROP_LEARNING_RATE, g_param_spec_float ("learning-rate", "learning-rate", "Speed with which a motionless foreground pixel would become background (inverse of number of frames)", - 0, 1, DEFAULT_LEARNING_RATE, (GParamFlags) (G_PARAM_READWRITE))); + 0, 1, DEFAULT_LEARNING_RATE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); gst_element_class_set_static_metadata (element_class, "Foreground/background video sequence segmentation",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/qroverlay/gstbaseqroverlay.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/qroverlay/gstbaseqroverlay.c
Changed
@@ -329,12 +329,12 @@ g_object_class_install_property (gobject_class, PROP_X_AXIS, g_param_spec_float ("x", "X position (in percent of the width)", "X position (in percent of the width)", 0.0, 100.0, DEFAULT_PROP_X, - G_PARAM_READWRITE)); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_Y_AXIS, g_param_spec_float ("y", "Y position (in percent of the height)", "Y position (in percent of the height)", 0.0, 100.0, DEFAULT_PROP_Y, - G_PARAM_READWRITE)); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * GstBaseQROverlay:size: @@ -347,7 +347,8 @@ g_param_spec_float ("size", "Size of the square (in percent of the smallest of width and height)", "Size of the square (in percent of the smallest of width and height)", - 0.0, 100.0, DEFAULT_PROP_SIZE, G_PARAM_READWRITE)); + 0.0, 100.0, DEFAULT_PROP_SIZE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_QRCODE_ERROR_CORRECTION, g_param_spec_enum ("qrcode-error-correction", "qrcode-error-correction",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/qroverlay/gstdebugqroverlay.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/qroverlay/gstdebugqroverlay.c
Changed
@@ -130,25 +130,29 @@ g_param_spec_int64 ("extra-data-interval-buffers", "extra-data-interval-buffers", "Extra data append into the Qrcode at the first buffer of each " - " interval", 0, G_MAXINT64, 60, G_PARAM_READWRITE)); + " interval", 0, G_MAXINT64, 60, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_DATA_SPAN_BUFFERS, g_param_spec_int64 ("extra-data-span-buffers", "extra-data-span-buffers", "Numbers of consecutive buffers that the extra data will be inserted " - " (counting the first buffer)", 0, G_MAXINT64, 1, G_PARAM_READWRITE)); + " (counting the first buffer)", 0, G_MAXINT64, 1, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_EXTRA_DATA_NAME, g_param_spec_string ("extra-data-name", "Extra data name", - "Json key name for extra append data", NULL, G_PARAM_READWRITE)); + "Json key name for extra append data", NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_EXTRA_DATA_ARRAY, g_param_spec_string ("extra-data-array", "Extra data array", "List of comma separated values that the extra data value will be " " cycled from at each interval, example array structure :" - " \"240,480,720,960,1200,1440,1680,1920\"", NULL, G_PARAM_READWRITE)); + " \"240,480,720,960,1200,1440,1680,1920\"", NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_set_details_simple (gstelement_class,
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/qt6d3d11/meson.build -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/qt6d3d11/meson.build
Changed
@@ -27,6 +27,7 @@ have_qt6d3d11 = false +qt6_method = get_option('qt-method') qt6_option = get_option('qt6d3d11') if qt6_option.disabled() subdir_done() @@ -41,21 +42,26 @@ endif qt6_mod = import('qt6') -if not qt6_mod.has_tools() +if meson.version().version_compare('>=1.6') + have_tools = qt6_mod.has_tools(method: qt6_method, tools: 'moc', 'uic', 'rcc') +else + have_tools = qt6_mod.has_tools(method: qt6_method) +endif +if not have_tools if qt6_option.enabled() - error('qt6 plugin was enabled, but qt specific tools were not found') + error('qt6 d3d11 plugin was enabled, but qt specific tools were not found') endif subdir_done() endif qt6qml_dep = dependency('qt6', modules : 'Core', 'Gui', 'Qml', 'Quick', - required: qt6_option) + method: qt6_method, required: qt6_option) if not qt6qml_dep.found() subdir_done() endif have_qt6d3d11 = true -moc_files = qt6_mod.preprocess(moc_headers : moc_headers) +moc_files = qt6_mod.preprocess(moc_headers : moc_headers, method: qt6_method) gstqt6d3d11 = library('gstqt6d3d11', gstqt6d3d11_sources, moc_files, c_args : gst_plugins_bad_args + '-DGST_USE_UNSTABLE_API', cpp_args : gst_plugins_bad_args + '-DGST_USE_UNSTABLE_API',
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/sndfile/gstsfsrc.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/sndfile/gstsfsrc.c
Changed
@@ -106,7 +106,8 @@ g_object_class_install_property (gobject_class, PROP_LOCATION, g_param_spec_string ("location", "File Location", - "Location of the file to read", NULL, G_PARAM_READWRITE)); + "Location of the file to read", NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_sf_src_finalize);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/spandsp/gsttonegeneratesrc.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/spandsp/gsttonegeneratesrc.c
Changed
@@ -125,27 +125,29 @@ g_object_class_install_property (gobject_class, PROP_ON_TIME, g_param_spec_int ("on-time", "Signal ON time first period", "Time of the first period when the tone signal is present", 1, - G_MAXINT, DEFAULT_ON_TIME, G_PARAM_READWRITE)); + G_MAXINT, DEFAULT_ON_TIME, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_OFF_TIME, g_param_spec_int ("off-time", "Signal OFF time first period ", "Time of the first period when the tone signal is off", 0, G_MAXINT, - DEFAULT_OFF_TIME, G_PARAM_READWRITE)); + DEFAULT_OFF_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_ON_TIME2, g_param_spec_int ("on-time2", "Signal ON time second period", "Time of the second period when the tone signal is present", 1, - G_MAXINT, DEFAULT_ON_TIME, G_PARAM_READWRITE)); + G_MAXINT, DEFAULT_ON_TIME, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_OFF_TIME2, g_param_spec_int ("off-time2", "Signal OFF time first period ", "Time of the second period when the tone signal is off", 0, G_MAXINT, - DEFAULT_ON_TIME, G_PARAM_READWRITE)); + DEFAULT_ON_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_REPEAT, g_param_spec_boolean ("repeat", "Repeat the specified tone period ", "Whether to repeat specified tone indefinitely", DEFAULT_REPEAT, - G_PARAM_READWRITE)); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_add_static_pad_template (gstelement_class, &gst_tone_generate_src_src_template);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/wpe/gstwpesrcbin.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/wpe/gstwpesrcbin.cpp
Changed
@@ -449,6 +449,7 @@ GstPad *pad; GstPad *ghost_pad; GstProxyPad *proxy_pad; + GstPadTemplate *pad_template; gst_bin_set_suppressed_flags (GST_BIN_CAST (src), static_cast<GstElementFlags>(GST_ELEMENT_FLAG_SOURCE | GST_ELEMENT_FLAG_SINK)); @@ -461,9 +462,9 @@ gst_bin_add (GST_BIN_CAST (src), src->video_src); + pad_template = gst_static_pad_template_get (&video_src_factory); pad = gst_element_get_static_pad (GST_ELEMENT_CAST (src->video_src), "src"); - ghost_pad = gst_ghost_pad_new_from_template ("video", pad, - gst_static_pad_template_get (&video_src_factory)); + ghost_pad = gst_ghost_pad_new_from_template ("video", pad, pad_template); proxy_pad = gst_proxy_pad_get_internal (GST_PROXY_PAD (ghost_pad)); gst_pad_set_active (GST_PAD_CAST (proxy_pad), TRUE); @@ -473,6 +474,7 @@ gst_object_unref (proxy_pad); gst_object_unref (pad); + gst_object_unref (pad_template); } static gboolean
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/ext/x265/gstx265enc.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/ext/x265/gstx265enc.c
Changed
@@ -522,7 +522,8 @@ g_object_class_install_property (gobject_class, PROP_KEY_INT_MAX, g_param_spec_int ("key-int-max", "Max key frame", "Maximal distance between two key-frames (0 = x265 default / 250)", - 0, G_MAXINT32, PROP_KEY_INT_MAX_DEFAULT, G_PARAM_READWRITE)); + 0, G_MAXINT32, PROP_KEY_INT_MAX_DEFAULT, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_set_static_metadata (element_class, "x265enc", "Codec/Encoder/Video", "H265 Encoder",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/cuda/gstcudanvrtc.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/cuda/gstcudanvrtc.cpp
Changed
@@ -328,6 +328,9 @@ else opts.push_back ("--gpu-architecture=compute_30"); + for (guint i = 0; i < num_options; i++) + opts.push_back (optionsi); + ret = NvrtcCompileProgram (prog, opts.size (), opts.data ()); if (ret != NVRTC_SUCCESS) { gsize log_size;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/d3d12/gstd3d12device.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/d3d12/gstd3d12device.cpp
Changed
@@ -1544,7 +1544,7 @@ * * Gets fence handle of command queue * - * Returns: (transfer none): ID3D12Fence handle + * Returns: (transfer none) (nullable): ID3D12Fence handle * * Since: 1.26 */ @@ -1598,7 +1598,7 @@ * * Gets #GstD3D12CmdQueue corresponding to @queue_type * - * Returns: (transfer none): a #GstD3D12CmdQueue + * Returns: (transfer none) (nullable): a #GstD3D12CmdQueue * * Since: 1.26 */
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/d3d12/gstd3d12memory.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/d3d12/gstd3d12memory.cpp
Changed
@@ -683,14 +683,14 @@ * gst_d3d12_memory_get_resource_handle: * @mem: a #GstD3D12Memory * - * Returns: (transfer none) (nullable): ID3D12Resource handle + * Returns: (transfer none): ID3D12Resource handle * * Since: 1.26 */ ID3D12Resource * gst_d3d12_memory_get_resource_handle (GstD3D12Memory * mem) { - g_return_val_if_fail (gst_is_d3d12_memory (GST_MEMORY_CAST (mem)), FALSE); + g_return_val_if_fail (gst_is_d3d12_memory (GST_MEMORY_CAST (mem)), nullptr); return mem->priv->resource.Get (); } @@ -980,7 +980,7 @@ /** * gst_d3d12_memory_get_nt_handle: * @mem: a #GstD3D12Memory - * @handle: (out) (transfer none) a sharable NT handle + * @handle: (out) (transfer none): a sharable NT handle * * Gets NT handle created via ID3D12Device::CreateSharedHandle(). * Returned NT handle is owned by @mem, thus caller should not close @@ -1071,6 +1071,7 @@ 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; @@ -1929,7 +1930,7 @@ * @heap_flags: a D3D12_HEAP_FLAGS * @desc: a D3D12_RESOURCE_DESC * @initial_state: initial resource state - * @optimized_clear_value: (allow-none) optimized clear value + * @optimized_clear_value: (allow-none): optimized clear value * * Returns: (transfer full) (nullable): a new #GstD3D12PoolAllocator instance *
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/d3d12/gstd3d12memory.h -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/d3d12/gstd3d12memory.h
Changed
@@ -64,7 +64,7 @@ #define GST_CAPS_FEATURE_MEMORY_D3D12_MEMORY "memory:D3D12Memory" /** - * GST_MAP_D3D12: + * GST_MAP_D3D12: (value 131072) (type GstMapFlags) * * Flag indicating that we should map the D3D12 resource instead of to system memory. * @@ -73,7 +73,7 @@ #define GST_MAP_D3D12 ((GstMapFlags) (GST_MAP_FLAG_LAST << 1)) /** - * GST_MAP_READ_D3D12: + * GST_MAP_READ_D3D12: (value 131073) (type GstMapFlags) * * GstMapFlags value alias for GST_MAP_READ | GST_MAP_D3D12 * @@ -82,7 +82,7 @@ #define GST_MAP_READ_D3D12 ((GstMapFlags) (GST_MAP_READ | GST_MAP_D3D12)) /** - * GST_MAP_WRITE_D3D12: + * GST_MAP_WRITE_D3D12: (value 131074) (type GstMapFlags) * * GstMapFlags value alias for GST_MAP_WRITE | GST_MAP_D3D12 *
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/d3d12/meson.build -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/d3d12/meson.build
Changed
@@ -162,14 +162,15 @@ c_args : gst_plugins_bad_args + extra_args, cpp_args: gst_plugins_bad_args + extra_args, include_directories : configinc, libsinc, - dependencies : gstbase_dep, gstvideo_dep, gstd3dshader_dep, d3d12_lib, + dependencies : gst_dep, gstbase_dep, gstvideo_dep, gstd3dshader_dep, d3d12_lib, dxgi_lib, dx_headers_dep, gmodule_dep + extra_deps, version : libversion, install : true, + override_options : 'cpp_std=c++14', ) pkgconfig.generate(gstd3d12, - libraries : gstbase_dep, gstvideo_dep, d3d12_lib, dxgi_lib, + libraries : gst_dep, gstbase_dep, gstvideo_dep, d3d12_lib, dxgi_lib, variables : pkgconfig_variables, subdirs : pkgconfig_subdirs, name : pkg_name, @@ -177,12 +178,36 @@ ) library_def = {'lib': gstd3d12} +gen_sources = + +if build_gir + gir = { + 'sources' : d3d12_sources + d3d12_headers, + 'namespace' : 'GstD3D12', + 'nsversion' : api_version, + 'identifier_prefix' : 'Gst', + 'symbol_prefix' : 'gst', + 'export_packages' : pkg_name, + 'includes' : 'Gst-1.0', 'GstBase-1.0', 'GstVideo-1.0', + 'install' : true, + 'extra_args' : gir_init_section + '-DGST_USE_UNSTABLE_API', + 'dependencies' : gst_dep, gstbase_dep, gstvideo_dep, d3d12_lib, dxgi_lib + } + library_def += {'gir': gir} + if not static_build + d3d12_gir = gnome.generate_gir(gstd3d12, kwargs: gir) + library_def += {'gir_targets': library_def.get('gir_targets', ) + d3d12_gir} + gen_sources += d3d12_gir + endif +endif + gst_libraries += pkg_name, library_def install_headers(d3d12_headers, subdir : 'gstreamer-1.0/gst/d3d12') gstd3d12_dep = declare_dependency(link_with : gstd3d12, include_directories : libsinc, - dependencies : gstbase_dep, gstvideo_dep, d3d12_lib, dxgi_lib) + dependencies : gstbase_dep, gstvideo_dep, d3d12_lib, dxgi_lib, + sources : gen_sources) meson.override_dependency(pkg_name, gstd3d12_dep)
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/mse/gstsourcebuffer.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/mse/gstsourcebuffer.c
Changed
@@ -585,7 +585,7 @@ "Updating", "Whether the current Source Buffer is still" " asynchronously processing previously issued commands", - FALSE, G_PARAM_READABLE); + FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (oclass, N_PROPS, properties);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/play/gstplay.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/play/gstplay.c
Changed
@@ -1755,6 +1755,52 @@ g_signal_connect (self->collection, "stream-notify", G_CALLBACK (stream_notify_cb), self); + // If no stream selected then we don't have to search + gboolean found_audio = self->audio_sid == NULL; + gboolean found_video = self->video_sid == NULL; + gboolean found_subtitle = self->subtitle_sid == NULL; + + guint len = gst_stream_collection_get_size (collection); + for (guint i = 0; i < len; i++) { + GstStream *stream = gst_stream_collection_get_stream (collection, i); + GstStreamType stream_type = gst_stream_get_stream_type (stream); + const gchar *stream_id = gst_stream_get_stream_id (stream); + + if ((stream_type & GST_STREAM_TYPE_AUDIO) + && g_strcmp0 (self->audio_sid, stream_id) == 0) { + found_audio = TRUE; + } + if ((stream_type & GST_STREAM_TYPE_VIDEO) + && g_strcmp0 (self->video_sid, stream_id) == 0) { + found_video = TRUE; + } + if ((stream_type & GST_STREAM_TYPE_TEXT) + && g_strcmp0 (self->subtitle_sid, stream_id) == 0) { + found_subtitle = TRUE; + } + } + + if (!found_audio) { + GST_WARNING_OBJECT (self, "Didn't find selected audio stream id '%s'", + self->audio_sid); + g_free (self->audio_sid); + self->audio_sid = NULL; + } + + if (!found_video) { + GST_WARNING_OBJECT (self, "Didn't find selected video stream id '%s'", + self->video_sid); + g_free (self->video_sid); + self->video_sid = NULL; + } + + if (!found_subtitle) { + GST_WARNING_OBJECT (self, "Didn't find selected subtitle stream id '%s'", + self->subtitle_sid); + g_free (self->subtitle_sid); + self->subtitle_sid = NULL; + } + return self->media_info != NULL; } @@ -1764,8 +1810,6 @@ { GstPlay *self = GST_PLAY (user_data); GstStreamCollection *collection = NULL; - gboolean updated = FALSE; - gboolean do_default_selection; gst_message_parse_stream_collection (msg, &collection); @@ -1773,20 +1817,21 @@ return; g_mutex_lock (&self->lock); - do_default_selection = self->collection == NULL; - updated = update_stream_collection (self, collection); + gboolean updated = update_stream_collection (self, collection); gst_object_unref (collection); - if (do_default_selection) { - gboolean select_audio = self->audio_enabled; - gboolean select_video = self->video_enabled; - gboolean select_subtitle = self->subtitle_enabled; - guint i, len; - - GST_DEBUG_OBJECT (self, "Do initial default selection"); - len = gst_stream_collection_get_size (collection); + // Select a default stream if it is enabled and none was selected by the application + gboolean select_audio = self->audio_enabled && !self->audio_sid; + gboolean select_video = self->video_enabled && !self->video_sid; + gboolean select_subtitle = self->subtitle_enabled && !self->subtitle_sid; + + if (select_audio || select_video || select_subtitle) { + GST_DEBUG_OBJECT (self, + "Do default selection: audio %d video %d subtitle %d", select_audio, + select_video, select_subtitle); - for (i = 0; i < len; i++) { + guint len = gst_stream_collection_get_size (collection); + for (guint i = 0; i < len; i++) { GstStream *stream = gst_stream_collection_get_stream (collection, i); GstStreamType stream_type = gst_stream_get_stream_type (stream); const gchar *stream_id = gst_stream_get_stream_id (stream); @@ -1795,19 +1840,23 @@ g_free (self->audio_sid); self->audio_sid = g_strdup (stream_id); select_audio = FALSE; + updated = TRUE; } else if ((stream_type & GST_STREAM_TYPE_VIDEO) && select_video) { g_free (self->video_sid); self->video_sid = g_strdup (stream_id); select_video = FALSE; + updated = TRUE; } else if ((stream_type & GST_STREAM_TYPE_TEXT) && select_subtitle) { g_free (self->subtitle_sid); self->subtitle_sid = g_strdup (stream_id); select_subtitle = FALSE; + updated = TRUE; } } + } + if (updated) gst_play_select_streams (self); - } g_mutex_unlock (&self->lock); @@ -1821,8 +1870,6 @@ { GstPlay *self = GST_PLAY (user_data); GstStreamCollection *collection = NULL; - gboolean updated = FALSE; - guint i, len; gst_message_parse_streams_selected (msg, &collection); @@ -1830,47 +1877,74 @@ return; g_mutex_lock (&self->lock); - updated = update_stream_collection (self, collection); + gboolean updated = update_stream_collection (self, collection); gst_object_unref (collection); - g_free (self->video_sid); - g_free (self->audio_sid); - g_free (self->subtitle_sid); - self->video_sid = NULL; - self->audio_sid = NULL; - self->subtitle_sid = NULL; + // This should not really happen: we should first get a stream-collection + // message with the new collection, then selection happens. + if (updated) { + GST_WARNING_OBJECT (self, + "Updated stream collection from streams-selected message"); + } + + gboolean found_audio = self->audio_sid == NULL; + gboolean found_video = self->video_sid == NULL; + gboolean found_subtitle = self->subtitle_sid == NULL; - len = gst_message_streams_selected_get_size (msg); - for (i = 0; i < len; i++) { + guint len = gst_message_streams_selected_get_size (msg); + for (guint i = 0; i < len; i++) { GstStream *stream; GstStreamType stream_type; const gchar *stream_id; - gchar **current_sid; stream = gst_message_streams_selected_get_stream (msg, i); stream_type = gst_stream_get_stream_type (stream); stream_id = gst_stream_get_stream_id (stream); - if (stream_type & GST_STREAM_TYPE_AUDIO) - current_sid = &self->audio_sid; - else if (stream_type & GST_STREAM_TYPE_VIDEO) - current_sid = &self->video_sid; - else if (stream_type & GST_STREAM_TYPE_TEXT) - current_sid = &self->subtitle_sid; - else { - GST_WARNING_OBJECT (self, - "Unknown stream-id %s with type 0x%x", stream_id, stream_type); - continue; + if ((stream_type & GST_STREAM_TYPE_AUDIO)) { + GST_DEBUG_OBJECT (self, "Selected audio track %s", stream_id); + if (g_strcmp0 (self->audio_sid, stream_id) == 0 && self->audio_enabled) { + found_audio = TRUE; + } else { + GST_WARNING_OBJECT (self, "Unexpected audio stream id '%s' selected", + stream_id); + } } - if (G_UNLIKELY (*current_sid)) { - GST_FIXME_OBJECT (self, - "Multiple streams are selected for type %s, choose the first one", - gst_stream_type_get_name (stream_type)); - continue; + if ((stream_type & GST_STREAM_TYPE_VIDEO)) { + GST_DEBUG_OBJECT (self, "Selected video track %s", stream_id); + if (g_strcmp0 (self->video_sid, stream_id) == 0 && self->video_enabled) { + found_video = TRUE; + } else { + GST_WARNING_OBJECT (self, "Unexpected video stream id '%s' selected", + stream_id); + } + } + + if ((stream_type & GST_STREAM_TYPE_TEXT) && self->subtitle_enabled) { + GST_DEBUG_OBJECT (self, "Selected subtitle track %s", stream_id); + if (g_strcmp0 (self->subtitle_sid, stream_id) == 0) { + found_subtitle = TRUE; + } else { + GST_WARNING_OBJECT (self, "Unexpected subtitle stream id '%s' selected", + stream_id); + } } + } - *current_sid = g_strdup (stream_id); + if (!found_audio && self->audio_enabled) { + GST_WARNING_OBJECT (self, "Didn't find selected audio stream id '%s'", + self->audio_sid); + } + + if (!found_video && self->video_enabled) { + GST_WARNING_OBJECT (self, "Didn't find selected video stream id '%s'", + self->video_sid); + } + + if (!found_subtitle && self->subtitle_enabled) { + GST_WARNING_OBJECT (self, "Didn't find selected subtitle stream id '%s'", + self->subtitle_sid); } g_mutex_unlock (&self->lock); @@ -3450,12 +3524,18 @@ if (!self->collection) return FALSE; - if (self->audio_sid && self->audio_enabled) + if (self->audio_sid && self->audio_enabled) { + GST_DEBUG_OBJECT (self, "Selecting audio track %s", self->audio_sid); stream_list = g_list_append (stream_list, g_strdup (self->audio_sid)); - if (self->video_sid && self->video_enabled) + } + if (self->video_sid && self->video_enabled) { + GST_DEBUG_OBJECT (self, "Selecting video track %s", self->video_sid); stream_list = g_list_append (stream_list, g_strdup (self->video_sid)); - if (self->subtitle_sid && self->subtitle_enabled) + } + if (self->subtitle_sid && self->subtitle_enabled) { + GST_DEBUG_OBJECT (self, "Selecting subtitle track %s", self->subtitle_sid); stream_list = g_list_append (stream_list, g_strdup (self->subtitle_sid)); + } g_mutex_unlock (&self->lock); if (stream_list) { @@ -3502,9 +3582,10 @@ g_free (self->audio_sid); self->audio_sid = g_strdup (info->stream_id); + GST_DEBUG_OBJECT (self, "Selecting audio stream id '%s'", info->stream_id); + ret = gst_play_select_streams (self); g_mutex_unlock (&self->lock); - GST_DEBUG_OBJECT (self, "set stream id '%s'", info->stream_id); g_object_unref (info); return ret; @@ -3543,9 +3624,10 @@ g_free (self->video_sid); self->video_sid = g_strdup (info->stream_id); + GST_DEBUG_OBJECT (self, "Selecting video stream id '%s'", info->stream_id); + ret = gst_play_select_streams (self); g_mutex_unlock (&self->lock); - GST_DEBUG_OBJECT (self, "set stream id '%s'", info->stream_id); g_object_unref (info); return ret; @@ -3583,9 +3665,10 @@ g_free (self->subtitle_sid); self->subtitle_sid = g_strdup (info->stream_id); + GST_DEBUG_OBJECT (self, "Selecting subtitle stream id '%s'", info->stream_id); + ret = gst_play_select_streams (self); g_mutex_unlock (&self->lock); - GST_DEBUG_OBJECT (self, "set stream id '%s'", info->stream_id); g_object_unref (info); return ret; @@ -3632,10 +3715,12 @@ g_free (self->audio_sid); self->audio_sid = g_strdup (stream_id); + GST_DEBUG_OBJECT (self, "Selecting audio stream id '%s'", + GST_STR_NULL (stream_id)); + ret = gst_play_select_streams (self); g_mutex_unlock (&self->lock); - GST_DEBUG_OBJECT (self, "set stream id '%s'", GST_STR_NULL (stream_id)); return ret; } @@ -3680,10 +3765,12 @@ g_free (self->video_sid); self->video_sid = g_strdup (stream_id); + GST_DEBUG_OBJECT (self, "Selecting video stream id '%s'", + GST_STR_NULL (stream_id)); + ret = gst_play_select_streams (self); g_mutex_unlock (&self->lock); - GST_DEBUG_OBJECT (self, "set stream id '%s'", GST_STR_NULL (stream_id)); return ret; } @@ -3728,10 +3815,12 @@ g_free (self->subtitle_sid); self->subtitle_sid = g_strdup (stream_id); + GST_DEBUG_OBJECT (self, "Selecting subtitle stream id '%s'", + GST_STR_NULL (stream_id)); + ret = gst_play_select_streams (self); g_mutex_unlock (&self->lock); - GST_DEBUG_OBJECT (self, "set stream id '%s'", GST_STR_NULL (stream_id)); return ret; } @@ -3826,13 +3915,14 @@ self->video_sid = g_strdup (video_stream_id); g_free (self->subtitle_sid); self->subtitle_sid = g_strdup (subtitle_stream_id); - ret = gst_play_select_streams (self); - g_mutex_unlock (&self->lock); GST_DEBUG_OBJECT (self, "set stream ids audio '%s' video '%s' subtitle '%s'", GST_STR_NULL (audio_stream_id), GST_STR_NULL (video_stream_id), GST_STR_NULL (subtitle_stream_id)); + ret = gst_play_select_streams (self); + g_mutex_unlock (&self->lock); + return ret; } @@ -3851,10 +3941,10 @@ g_mutex_lock (&self->lock); self->audio_enabled = enabled; + GST_DEBUG_OBJECT (self, "Audio track is %s", + enabled ? "enabled" : "disabled"); gst_play_select_streams (self); g_mutex_unlock (&self->lock); - - GST_DEBUG_OBJECT (self, "track is '%s'", enabled ? "Enabled" : "Disabled"); } /** @@ -3872,10 +3962,10 @@ g_mutex_lock (&self->lock); self->video_enabled = enabled; + GST_DEBUG_OBJECT (self, "Video track is %s", + enabled ? "enabled" : "disabled"); gst_play_select_streams (self); g_mutex_unlock (&self->lock); - - GST_DEBUG_OBJECT (self, "track is '%s'", enabled ? "Enabled" : "Disabled"); } /** @@ -3893,10 +3983,10 @@ g_mutex_lock (&self->lock); self->subtitle_enabled = enabled; + GST_DEBUG_OBJECT (self, "Subtitle track is %s", + enabled ? "enabled" : "disabled"); gst_play_select_streams (self); g_mutex_unlock (&self->lock); - - GST_DEBUG_OBJECT (self, "track is '%s'", enabled ? "Enabled" : "Disabled"); } /**
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/player/gstplayer-g-main-context-signal-dispatcher.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/player/gstplayer-g-main-context-signal-dispatcher.c
Changed
@@ -85,6 +85,7 @@ switch (prop_id) { case G_MAIN_CONTEXT_SIGNAL_DISPATCHER_PROP_APPLICATION_CONTEXT: + /* G_PARAM_CONSTRUCT_ONLY */ self->application_context = g_value_dup_boxed (value); if (!self->application_context) self->application_context = g_main_context_ref_thread_default ();
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/player/gstplayer.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/player/gstplayer.c
Changed
@@ -361,9 +361,11 @@ switch (prop_id) { case PROP_SIGNAL_DISPATCHER: + /* G_PARAM_CONSTRUCT_ONLY */ self->signal_dispatcher = g_value_dup_object (value); break; case PROP_VIDEO_RENDERER: + /* G_PARAM_CONSTRUCT_ONLY */ self->video_renderer = g_value_dup_object (value); break; default:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/transcoder/gsttranscoder-signal-adapter.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/transcoder/gsttranscoder-signal-adapter.c
Changed
@@ -321,7 +321,7 @@ param_specsPROP_TRANSCODER = g_param_spec_object ("transcoder", "Transcoder", "The GstTranscoder @self is tracking", GST_TYPE_TRANSCODER, - G_PARAM_READABLE); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (gobject_class, PROP_LAST, param_specs); }
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/transcoder/gsttranscoder.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/transcoder/gsttranscoder.c
Changed
@@ -263,6 +263,7 @@ g_free (self->dest_uri); g_cond_clear (&self->cond); gst_object_unref (self->api_bus); + gst_clear_object (&self->profile); G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -323,6 +324,7 @@ gst_transcoder_set_position_update_interval_internal (self); break; case PROP_PROFILE: + /* G_PARAM_CONSTRUCT_ONLY */ GST_OBJECT_LOCK (self); self->profile = g_value_dup_object (value); GST_OBJECT_UNLOCK (self);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/uridownloader/gstfragment.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/uridownloader/gstfragment.c
Changed
@@ -124,20 +124,22 @@ g_object_class_install_property (gobject_class, PROP_INDEX, g_param_spec_uint ("index", "Index", "Index of the fragment", 0, - G_MAXUINT, 0, G_PARAM_READABLE)); + G_MAXUINT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_NAME, g_param_spec_string ("name", "Name", - "Name of the fragment (eg:fragment-12.ts)", NULL, G_PARAM_READABLE)); + "Name of the fragment (eg:fragment-12.ts)", NULL, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_DISCONTINOUS, g_param_spec_boolean ("discontinuous", "Discontinuous", "Whether this fragment has a discontinuity or not", - FALSE, G_PARAM_READABLE)); + FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_DURATION, g_param_spec_uint64 ("duration", "Fragment duration", - "Duration of the fragment", 0, G_MAXUINT64, 0, G_PARAM_READABLE)); + "Duration of the fragment", 0, G_MAXUINT64, 0, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_BUFFER, g_param_spec_boxed ("buffer", "Buffer",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/vulkan/gstvkdevice.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/vulkan/gstvkdevice.c
Changed
@@ -137,6 +137,7 @@ switch (prop_id) { case PROP_PHYSICAL_DEVICE: + /* G_PARAM_CONSTRUCT_ONLY */ device->physical_device = g_value_dup_object (value); break; default:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/vulkan/gstvkoperation.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/vulkan/gstvkoperation.c
Changed
@@ -123,6 +123,7 @@ switch (prop_id) { case PROP_COMMAND_POOL: + /* G_PARAM_CONSTRUCT_ONLY */ g_assert (!priv->cmd_pool); priv->cmd_pool = g_value_dup_object (value); break;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/vulkan/gstvkphysicaldevice.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/vulkan/gstvkphysicaldevice.c
Changed
@@ -129,6 +129,7 @@ switch (prop_id) { case PROP_INSTANCE: + /* G_PARAM_CONSTRUCT_ONLY */ device->instance = g_value_dup_object (value); break; case PROP_DEVICE_ID:{
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/vulkan/gstvkwindow.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/vulkan/gstvkwindow.c
Changed
@@ -155,6 +155,8 @@ switch (prop_id) { case PROP_DISPLAY: + if (window->display) + gst_object_unref (window->display); window->display = g_value_dup_object (value); break; default:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/vulkan/wayland/gstvkdisplay_wayland.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/vulkan/wayland/gstvkdisplay_wayland.c
Changed
@@ -158,7 +158,10 @@ { GstVulkanDisplayWayland *ret; struct wl_display *display; + GType type; + /* get type first so we initialize the debug category */ + type = GST_TYPE_VULKAN_DISPLAY_WAYLAND; display = wl_display_connect (name); if (!display) { @@ -167,7 +170,7 @@ return NULL; } - ret = g_object_new (GST_TYPE_VULKAN_DISPLAY_WAYLAND, NULL); + ret = g_object_new (type, NULL); gst_object_ref_sink (ret); ret->display = display;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/webrtc/rtpsender.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/webrtc/rtpsender.c
Changed
@@ -90,7 +90,7 @@ switch (prop_id) { case PROP_PRIORITY: - gst_webrtc_rtp_sender_set_priority (sender, g_value_get_uint (value)); + gst_webrtc_rtp_sender_set_priority (sender, g_value_get_enum (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -107,7 +107,7 @@ switch (prop_id) { case PROP_PRIORITY: GST_OBJECT_LOCK (sender); - g_value_set_uint (value, sender->priority); + g_value_set_enum (value, sender->priority); GST_OBJECT_UNLOCK (sender); break; case PROP_TRANSPORT:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-libs/gst/webrtc/rtptransceiver.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-libs/gst/webrtc/rtptransceiver.c
Changed
@@ -76,9 +76,11 @@ switch (prop_id) { case PROP_SENDER: + /* G_PARAM_CONSTRUCT_ONLY */ webrtc->sender = g_value_dup_object (value); break; case PROP_RECEIVER: + /* G_PARAM_CONSTRUCT_ONLY */ webrtc->receiver = g_value_dup_object (value); break; case PROP_MLINE:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst-plugins-bad.doap -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst-plugins-bad.doap
Changed
@@ -35,6 +35,16 @@ <release> <Version> + <revision>1.26.2</revision> + <branch>1.26</branch> + <name></name> + <created>2025-05-29</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.26.2.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.26.1</revision> <branch>1.26</branch> <name></name>
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/accurip/gstaccurip.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/accurip/gstaccurip.c
Changed
@@ -106,12 +106,12 @@ g_object_class_install_property (gobject_class, PROP_FIRST_TRACK, g_param_spec_boolean ("first-track", "First track", "Indicate to the CRC calculation algorithm that this is the first track of a set", - FALSE, G_PARAM_READWRITE)); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_LAST_TRACK, g_param_spec_boolean ("last-track", "Last track", "Indicate to the CRC calculation algorithm that this is the last track of a set", - FALSE, G_PARAM_READWRITE)); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_accurip_finalize);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/codecalpha/gstalphacombine.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/codecalpha/gstalphacombine.c
Changed
@@ -238,6 +238,7 @@ gst_buffer_replace (&self->alpha_buffer, NULL); gst_buffer_replace (&self->last_alpha_buffer, NULL); self->last_flow_ret = GST_FLOW_OK; + self->alpha_eos = FALSE; g_mutex_unlock (&self->buffer_lock); }
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/dvbsuboverlay/gstdvbsuboverlay.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/dvbsuboverlay/gstdvbsuboverlay.c
Changed
@@ -833,7 +833,8 @@ subs->page_time_out = stop - start; - gst_segment_to_running_time (&overlay->subtitle_segment, GST_FORMAT_TIME, + start = + gst_segment_to_running_time (&overlay->subtitle_segment, GST_FORMAT_TIME, start); g_assert (GST_CLOCK_TIME_IS_VALID (start)); subs->pts = start;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/midi/midiparse.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/midi/midiparse.c
Changed
@@ -64,6 +64,14 @@ typedef struct { + guint64 pulse; + guint tempo; + /* total duration before this tempo set */ + GstClockTime duration; +} TempoSet; + +typedef struct +{ guint8 *data; guint size; guint offset; @@ -531,6 +539,160 @@ return 0; } +static void +free_tempo_set (TempoSet * tempo) +{ + g_free (tempo); +} + +static gint +compare_tempo_set (TempoSet * a, TempoSet * b, gpointer unused) +{ + return a->pulse < b->pulse ? -1 : (a->pulse == b->pulse ? 0 : 1); +} + +/* GSequence with pulse increasing */ +/* example: 0, 100000 -> 96, 500000 -> 192, 1000000 */ +static gboolean +save_tempo (GstMidiParse * midiparse, GstMidiTrack * track, guint32 tempo) +{ + GSequenceIter *iter; + TempoSet *tempo_set_ptr; + TempoSet *new_tempo_set_ptr; + + if (!midiparse->tempo_list) { + midiparse->tempo_list = g_sequence_new ((GDestroyNotify) free_tempo_set); + + tempo_set_ptr = g_new (TempoSet, 1); + if (!tempo_set_ptr) { + GST_ERROR_OBJECT (midiparse, "failed to allocate TempoSet"); + + return FALSE; + } + + /* add default tempo to GSequence */ + tempo_set_ptr->pulse = 0; + tempo_set_ptr->tempo = DEFAULT_TEMPO; + tempo_set_ptr->duration = 0; + g_sequence_insert_sorted (midiparse->tempo_list, tempo_set_ptr, + (GCompareDataFunc) compare_tempo_set, NULL); + + GST_DEBUG_OBJECT (midiparse, + "add TempoSet: pulse %" G_GUINT64_FORMAT " tempo %u", + tempo_set_ptr->pulse, tempo_set_ptr->tempo); + } + + new_tempo_set_ptr = g_new (TempoSet, 1); + new_tempo_set_ptr->pulse = track->pulse; + new_tempo_set_ptr->tempo = tempo; + + iter = + g_sequence_search (midiparse->tempo_list, new_tempo_set_ptr, + (GCompareDataFunc) compare_tempo_set, NULL); + /* We know the sequence isn't empty, this is safe */ + tempo_set_ptr = g_sequence_get (g_sequence_iter_prev (iter)); + if (tempo_set_ptr->pulse == new_tempo_set_ptr->pulse) { + if (tempo_set_ptr->tempo == new_tempo_set_ptr->tempo) { + GST_DEBUG_OBJECT (midiparse, "skip same TempoSet"); + } else { + if (iter != g_sequence_get_end_iter (midiparse->tempo_list)) { + /* Pulse of set tempo event should be monotonically + * increasing, so only the last tempo set should be + * updated. */ + GST_WARNING_OBJECT (midiparse, + "ignore overlapping set tempo event. pulse %" G_GUINT64_FORMAT + " tempo %u", new_tempo_set_ptr->pulse, new_tempo_set_ptr->tempo); + } else { + /* update tempo set */ + GST_DEBUG_OBJECT (midiparse, + "update TempoSet: pulse %" G_GUINT64_FORMAT " tempo from %u to %u", + tempo_set_ptr->pulse, tempo_set_ptr->tempo, + new_tempo_set_ptr->tempo); + tempo_set_ptr->tempo = new_tempo_set_ptr->tempo; + } + } + + g_free (new_tempo_set_ptr); + + return TRUE; + } + + new_tempo_set_ptr->duration = + tempo_set_ptr->duration + + gst_util_uint64_scale (new_tempo_set_ptr->pulse - tempo_set_ptr->pulse, + 1000 * tempo_set_ptr->tempo, midiparse->division); + + g_sequence_insert_sorted (midiparse->tempo_list, new_tempo_set_ptr, + (GCompareDataFunc) compare_tempo_set, NULL); + + GST_DEBUG_OBJECT (midiparse, + "add TempoSet: pulse %" G_GUINT64_FORMAT " tempo %u", + new_tempo_set_ptr->pulse, new_tempo_set_ptr->tempo); + + return TRUE; +} + +static GstClockTime +get_duration (GstMidiParse * midiparse, guint64 pulse_start, guint64 pulse_end) +{ + GstClockTime duration, pulse_end_duration, pulse_start_duration; + GSequenceIter *iter; + TempoSet tempo_set; + TempoSet *tempo_set_ptr; + + if (pulse_start >= pulse_end) { + return GST_CLOCK_TIME_NONE; + } + + if (!midiparse->tempo_list) { + GST_DEBUG_OBJECT (midiparse, "used default tempo"); + + return gst_util_uint64_scale (pulse_end - pulse_start, + 1000 * DEFAULT_TEMPO, midiparse->division); + } + + GST_DEBUG_OBJECT (midiparse, + "pulse_start %" G_GUINT64_FORMAT " pulse_end %" G_GUINT64_FORMAT, + pulse_start, pulse_end); + + /* find pulse_end's tempo set */ + tempo_set.pulse = pulse_end; + tempo_set.tempo = 0; /* not interested */ + iter = + g_sequence_search (midiparse->tempo_list, &tempo_set, + (GCompareDataFunc) compare_tempo_set, NULL); + iter = g_sequence_iter_prev (iter); + + /* We know the sequence isn't empty, this is safe */ + tempo_set_ptr = g_sequence_get (iter); + + pulse_end_duration = + tempo_set_ptr->duration + gst_util_uint64_scale (pulse_end - + tempo_set_ptr->pulse, 1000 * tempo_set_ptr->tempo, midiparse->division); + + /* find pulse_start's tempo set */ + tempo_set.pulse = pulse_start; + tempo_set.tempo = 0; /* not interested */ + iter = + g_sequence_search (midiparse->tempo_list, &tempo_set, + (GCompareDataFunc) compare_tempo_set, NULL); + iter = g_sequence_iter_prev (iter); + + /* We know the sequence isn't empty, this is safe */ + tempo_set_ptr = g_sequence_get (iter); + + pulse_start_duration = + tempo_set_ptr->duration + gst_util_uint64_scale (pulse_start - + tempo_set_ptr->pulse, 1000 * tempo_set_ptr->tempo, midiparse->division); + + duration = pulse_end_duration - pulse_start_duration; + + GST_DEBUG_OBJECT (midiparse, "duration %" GST_TIME_FORMAT, + GST_TIME_ARGS (duration)); + + return duration; +} + static GstFlowReturn handle_meta_event (GstMidiParse * midiparse, GstMidiTrack * track, guint8 event) { @@ -598,9 +760,8 @@ break; case 0x51: { - guint32 uspqn = (data0 << 16) | (data1 << 8) | data2; - midiparse->tempo = (uspqn ? uspqn : DEFAULT_TEMPO); - GST_DEBUG_OBJECT (midiparse, "tempo %u", midiparse->tempo); + guint32 tempo = (data0 << 16) | (data1 << 8) | data2; + save_tempo (midiparse, track, tempo); break; } case 0x54: @@ -839,11 +1000,12 @@ /* now loop over all events and calculate the duration */ while (!track->eot) { - handle_next_event (midiparse, track, NULL, NULL); + if (handle_next_event (midiparse, track, NULL, NULL) != GST_FLOW_OK) + return FALSE; } - duration = gst_util_uint64_scale (track->pulse, - 1000 * midiparse->tempo, midiparse->division); + + duration = get_duration (midiparse, 0, track->pulse); GST_DEBUG_OBJECT (midiparse, "duration %" GST_TIME_FORMAT, GST_TIME_ARGS (duration)); @@ -1003,7 +1165,6 @@ data = gst_adapter_take (midiparse->adapter, size); midiparse->data = data; - midiparse->tempo = DEFAULT_TEMPO; if (!find_midi_chunk (midiparse, data, size, &offset, &length)) goto invalid_format; @@ -1128,8 +1289,10 @@ goto error; } - if (!track->eot && track->pulse < next_pulse) + if (!track->eot && track->pulse < next_pulse) { next_pulse = track->pulse; + next_position = get_duration (midiparse, 0, next_pulse); + } } if (next_pulse == G_MAXUINT64) @@ -1138,11 +1301,6 @@ tick = position / (10 * GST_MSECOND); GST_DEBUG_OBJECT (midiparse, "current tick %" G_GUINT64_FORMAT, tick); - next_position = gst_util_uint64_scale (next_pulse, - 1000 * midiparse->tempo, midiparse->division); - GST_DEBUG_OBJECT (midiparse, "next position %" GST_TIME_FORMAT, - GST_TIME_ARGS (next_position)); - /* send 10ms ticks to advance the downstream element */ while (TRUE) { /* get position of next tick */ @@ -1308,6 +1466,11 @@ midiparse->track_count = 0; midiparse->have_group_id = FALSE; midiparse->group_id = G_MAXUINT; + + if (midiparse->tempo_list) { + g_sequence_free (midiparse->tempo_list); + midiparse->tempo_list = NULL; + } } static GstStateChangeReturn
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/midi/midiparse.h -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/midi/midiparse.h
Changed
@@ -61,7 +61,6 @@ /* input stream properties */ GstMidiParseState state; - guint tempo; guint16 ntracks; guint16 division; @@ -79,6 +78,7 @@ guint32 seqnum; guint64 pulse; + GSequence *tempo_list; }; struct _GstMidiParseClass
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/mpegtsdemux/tsdemux.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/mpegtsdemux/tsdemux.c
Changed
@@ -1256,7 +1256,8 @@ const GstMpegtsDescriptor *ac3_desc = mpegts_get_descriptor_from_stream (bstream, GST_MTS_DESC_AC3_AUDIO_STREAM); - if (ac3_desc && DESC_AC_AUDIO_STREAM_has_lang1 (ac3_desc->data)) { + if (ac3_desc && ac3_desc->length >= 8 + && DESC_AC_AUDIO_STREAM_has_lang1 (ac3_desc->data)) { gchar lang_code4; memcpy (lang_code, DESC_AC_AUDIO_STREAM_lang1_code (ac3_desc->data), 3);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/proxy/gstproxysrc.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/proxy/gstproxysrc.c
Changed
@@ -177,7 +177,7 @@ g_object_class_install_property (gobject_class, PROP_PROXYSINK, g_param_spec_object ("proxysink", "Proxysink", "Matching proxysink", - GST_TYPE_PROXY_SINK, G_PARAM_READWRITE)); + GST_TYPE_PROXY_SINK, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gstelement_class->change_state = gst_proxy_src_change_state; gstelement_class->send_event = gst_proxy_src_send_event;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/removesilence/gstremovesilence.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/removesilence/gstremovesilence.c
Changed
@@ -140,44 +140,48 @@ g_object_class_install_property (gobject_class, PROP_REMOVE, g_param_spec_boolean ("remove", "Remove", "Set to true to remove silence from the stream, false otherwise", - FALSE, G_PARAM_READWRITE)); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_HYSTERESIS, g_param_spec_uint64 ("hysteresis", "Hysteresis", "Set the hysteresis (on samples) used on the internal VAD", - 1, G_MAXUINT64, DEFAULT_VAD_HYSTERESIS, G_PARAM_READWRITE)); + 1, G_MAXUINT64, DEFAULT_VAD_HYSTERESIS, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_THRESHOLD, g_param_spec_int ("threshold", "Threshold", "Set the silence threshold used on the internal VAD in dB", - -70, 70, DEFAULT_VAD_THRESHOLD, G_PARAM_READWRITE)); + -70, 70, DEFAULT_VAD_THRESHOLD, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_SQUASH, g_param_spec_boolean ("squash", "Squash", "Set to true to retimestamp buffers when silence is removed and so avoid timestamp gap", - FALSE, G_PARAM_READWRITE)); + FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_SILENT, g_param_spec_boolean ("silent", "Silent", "Disable/enable bus message notifications for silence detected/finished", - TRUE, G_PARAM_READWRITE)); + TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_MINIMUM_SILENCE_BUFFERS, g_param_spec_uint ("minimum-silence-buffers", "Minimum silence buffers", "Define the minimum number of consecutive silence buffers before " "removing silence, 0 means disabled. This will not introduce latency", MINIMUM_SILENCE_BUFFERS_MIN, MINIMUM_SILENCE_BUFFERS_MAX, - MINIMUM_SILENCE_BUFFERS_DEF, G_PARAM_READWRITE)); + MINIMUM_SILENCE_BUFFERS_DEF, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_MINIMUM_SILENCE_TIME, - g_param_spec_uint64 ("minimum_silence_time", + g_param_spec_uint64 ("minimum-silence-time", "Minimum silence time", "Define the minimum silence time in nanoseconds before removing " " silence, 0 means disabled. This will not introduce latency", MINIMUM_SILENCE_TIME_MIN, MINIMUM_SILENCE_TIME_MAX, - MINIMUM_SILENCE_TIME_DEF, G_PARAM_READWRITE)); + MINIMUM_SILENCE_TIME_DEF, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_set_static_metadata (gstelement_class, "RemoveSilence",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/rist/gstristsink.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/rist/gstristsink.c
Changed
@@ -558,6 +558,7 @@ GstCaps *ssrc_caps; GstStructure *sdes = NULL; RistSenderBond *bond; + GstPadTemplate *pad_template; sink->rtpext = gst_element_factory_make ("ristrtpext", "ristrtpext"); @@ -616,12 +617,14 @@ g_object_set (sink->ssrc_filter, "caps", ssrc_caps, NULL); gst_caps_unref (ssrc_caps); + pad_template = gst_static_pad_template_get (&sink_templ); ssrc_filter_sinkpad = gst_element_get_static_pad (sink->ssrc_filter, "sink"); sink->sinkpad = gst_ghost_pad_new_from_template ("sink", ssrc_filter_sinkpad, - gst_static_pad_template_get (&sink_templ)); + pad_template); gst_pad_set_event_function (sink->sinkpad, gst_rist_sink_event); gst_element_add_pad (GST_ELEMENT (sink), sink->sinkpad); gst_object_unref (ssrc_filter_sinkpad); + gst_object_unref (pad_template); gst_pad_add_probe (sink->sinkpad, GST_PAD_PROBE_TYPE_EVENT_UPSTREAM, gst_rist_sink_fix_collision, sink, NULL);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/sdp/gstsdpsrc.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/sdp/gstsdpsrc.c
Changed
@@ -105,13 +105,15 @@ { GstSdpSrc *self = GST_SDP_SRC_CAST (user_data); GstPad *ghost; + GstPadTemplate *pad_template; + pad_template = gst_static_pad_template_get (&src_template); ghost = - gst_ghost_pad_new_from_template (GST_PAD_NAME (pad), pad, - gst_static_pad_template_get (&src_template)); + gst_ghost_pad_new_from_template (GST_PAD_NAME (pad), pad, pad_template); gst_pad_set_active (ghost, TRUE); gst_element_add_pad (GST_ELEMENT_CAST (self), ghost); g_object_set_data (G_OBJECT (pad), "GstSdpSrc.ghostpad", ghost); + gst_object_unref (pad_template); } static void
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/transcode/gsttranscodebin.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/transcode/gsttranscodebin.c
Changed
@@ -975,6 +975,7 @@ _set_profile (GstTranscodeBin * self, GstEncodingProfile * profile) { GST_OBJECT_LOCK (self); + gst_clear_object (&self->profile); self->profile = profile; _setup_avoid_reencoding (self); GST_OBJECT_UNLOCK (self); @@ -997,9 +998,17 @@ GST_OBJECT_UNLOCK (self); break; case PROP_AUDIO_FILTER: + if (self->audio_filter) { + GST_WARNING_OBJECT (self, "Audio filter already set"); + return; + } _set_filter (self, g_value_dup_object (value), &self->audio_filter); break; case PROP_VIDEO_FILTER: + if (self->video_filter) { + GST_WARNING_OBJECT (self, "Video filter already set"); + return; + } _set_filter (self, g_value_dup_object (value), &self->video_filter); break; default:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/transcode/gsturitranscodebin.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/transcode/gsturitranscodebin.c
Changed
@@ -570,6 +570,7 @@ switch (prop_id) { case PROP_PROFILE: GST_OBJECT_LOCK (self); + gst_clear_object (&self->profile); self->profile = g_value_dup_object (value); GST_OBJECT_UNLOCK (self); break;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c
Changed
@@ -48,11 +48,8 @@ #include <math.h> #define GST_CAT_DEFAULT gst_videoframe_audiolevel_debug -#if G_BYTE_ORDER == G_LITTLE_ENDIAN -# define FORMATS "{ S8, S16LE, S32LE, F32LE, F64LE }" -#else -# define FORMATS "{ S8, S16BE, S32BE, F32BE, F64BE }" -#endif +#define FORMATS "{ S8, " GST_AUDIO_NE (S16) ", " GST_AUDIO_NE (S32) ", " \ + GST_AUDIO_NE (F32) ", " GST_AUDIO_NE (F64) " }" GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT); static GstStaticPadTemplate audio_sink_template =
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/gst/videoparsers/gsth264parse.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/gst/videoparsers/gsth264parse.c
Changed
@@ -2186,6 +2186,14 @@ buf = gst_buffer_ref (h264parse->codec_data_in); modified = TRUE; } + + /* In AVC or AVC3, we can't issue caps without a codec_data */ + if (buf == NULL) { + GST_DEBUG_OBJECT (h264parse, "Couldn't construct codec_data, not yet" + " ready to send out src caps for AVC stream"); + gst_caps_unref (sink_caps); + return; + } } caps = NULL; @@ -3684,8 +3692,9 @@ } /* avc caps sanity checks */ - if (format == GST_H264_PARSE_FORMAT_AVC) { - /* AVC requires codec_data, AVC3 might have one and/or SPS/PPS inline */ + if (format == GST_H264_PARSE_FORMAT_AVC || + format == GST_H264_PARSE_FORMAT_AVC3) { + /* AVC and AVC3 requires codec_data */ if (codec_data_value == NULL) goto avc_caps_codec_data_missing; @@ -3703,7 +3712,7 @@ goto bytestream_caps_with_codec_data; } - /* packetized video has codec_data (required for AVC, optional for AVC3) */ + /* packetized video has codec_data (required for AVC and AVC3) */ if (codec_data_value != NULL) { GstMapInfo map; guint i; @@ -3764,7 +3773,8 @@ /* we have 4 sync bytes */ h264parse->nal_length_size = 4; } else { - /* probably AVC3 without codec_data field, anything to do here? */ + /* probably avc1 or avc3 without codec_data field, its invalid */ + goto codec_data_missing; } { @@ -3826,6 +3836,12 @@ GST_DEBUG_OBJECT (h264parse, "Failed to parse avcC data"); goto refuse_caps; } +codec_data_missing: + { + GST_WARNING_OBJECT (h264parse, "Is not bytestream and lacks codec_data," + " invalid caps: %" GST_PTR_FORMAT, caps); + goto refuse_caps; + } refuse_caps: { GST_WARNING_OBJECT (h264parse, "refused caps %" GST_PTR_FORMAT, caps);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/meson.build -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/meson.build
Changed
@@ -1,5 +1,5 @@ project('gst-plugins-bad', 'c', 'cpp', - version : '1.26.1', + version : '1.26.2', meson_version : '>= 1.4', default_options : 'warning_level=1', 'buildtype=debugoptimized' )
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/meson_options.txt -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/meson_options.txt
Changed
@@ -160,7 +160,6 @@ option('opus', type : 'feature', value : 'auto', description : 'OPUS audio parser plugin') option('qroverlay', type : 'feature', value : 'auto', description : 'Element to set random data on a qroverlay') option('qsv', type : 'feature', value : 'auto', description : 'Intel Quick Sync Video plugin') -option('qt6d3d11', type : 'feature', value : 'auto', description : 'Qt6 Direct3D11 plugin') option('resindvd', type : 'feature', value : 'auto', description : 'Resin DVD playback plugin (GPL - only built if gpl option is also enabled!)') option('rsvg', type : 'feature', value : 'auto', description : 'SVG overlayer and image decoder plugin') option('rtmp', type : 'feature', value : 'auto', description : 'RTMP video network source and sink plugin') @@ -264,6 +263,11 @@ option('mfx-modules-dir', type: 'string', value : '', description : 'libmfx runtime module dir, linux only') +# Qt6 plugin options +option('qt6d3d11', type : 'feature', value : 'auto', description : 'Qt6 Direct3D11 plugin') +option('qt-method', type: 'combo', value: 'auto', choices: 'auto', 'pkg-config', 'qmake', + yield: true, description: 'Method to use to find Qt') + # Vulkan integration library and plugin options option('vulkan', type: 'feature', value: 'auto', description: 'Vulkan integration library and video sink plugin') option('vulkan-video', type: 'feature', value: 'auto', description: 'Whether to use Vulkan Video Extensions for encoding/decoding')
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/po/gst-plugins-bad-1.0.pot -> _service:download_url:gst-plugins-bad-1.26.2.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.1\n" +"Project-Id-Version: gst-plugins-bad-1.26.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 20:21+0100\n" +"POT-Creation-Date: 2025-05-29 23:57+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" @@ -93,27 +93,27 @@ msgid "Internal data stream error." msgstr "" -#: sys/dvb/gstdvbsrc.c:1597 sys/dvb/gstdvbsrc.c:1811 +#: sys/dvb/gstdvbsrc.c:1644 sys/dvb/gstdvbsrc.c:1858 #, c-format msgid "Device \"%s\" does not exist." msgstr "" -#: sys/dvb/gstdvbsrc.c:1601 +#: sys/dvb/gstdvbsrc.c:1648 #, c-format msgid "Could not open frontend device \"%s\"." msgstr "" -#: sys/dvb/gstdvbsrc.c:1620 +#: sys/dvb/gstdvbsrc.c:1667 #, c-format msgid "Could not get settings from frontend device \"%s\"." msgstr "" -#: sys/dvb/gstdvbsrc.c:1637 +#: sys/dvb/gstdvbsrc.c:1684 #, c-format msgid "Cannot enumerate delivery systems from frontend device \"%s\"." msgstr "" -#: sys/dvb/gstdvbsrc.c:1815 +#: sys/dvb/gstdvbsrc.c:1862 #, c-format msgid "Could not open file \"%s\" for reading." msgstr ""
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/po/gst-plugins-bad.pot -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/po/gst-plugins-bad.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-bad-1.26.1\n" +"Project-Id-Version: gst-plugins-bad-1.26.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-04-24 20:21+0100\n" +"POT-Creation-Date: 2025-05-29 23:57+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" @@ -93,27 +93,27 @@ msgid "Internal data stream error." msgstr "" -#: sys/dvb/gstdvbsrc.c:1597 sys/dvb/gstdvbsrc.c:1811 +#: sys/dvb/gstdvbsrc.c:1644 sys/dvb/gstdvbsrc.c:1858 #, c-format msgid "Device \"%s\" does not exist." msgstr "" -#: sys/dvb/gstdvbsrc.c:1601 +#: sys/dvb/gstdvbsrc.c:1648 #, c-format msgid "Could not open frontend device \"%s\"." msgstr "" -#: sys/dvb/gstdvbsrc.c:1620 +#: sys/dvb/gstdvbsrc.c:1667 #, c-format msgid "Could not get settings from frontend device \"%s\"." msgstr "" -#: sys/dvb/gstdvbsrc.c:1637 +#: sys/dvb/gstdvbsrc.c:1684 #, c-format msgid "Cannot enumerate delivery systems from frontend device \"%s\"." msgstr "" -#: sys/dvb/gstdvbsrc.c:1815 +#: sys/dvb/gstdvbsrc.c:1862 #, c-format msgid "Could not open file \"%s\" for reading." msgstr ""
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/applemedia/videotexturecache-gl.m -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/applemedia/videotexturecache-gl.m
Changed
@@ -101,6 +101,7 @@ switch (prop_id) { case PROP_CONTEXT: + /* G_PARAM_CONSTRUCT_ONLY */ cache_gl->ctx = g_value_dup_object (value); break; default:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/applemedia/videotexturecache-vulkan.mm -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/applemedia/videotexturecache-vulkan.mm
Changed
@@ -109,6 +109,7 @@ switch (prop_id) { case PROP_DEVICE: + /* G_PARAM_CONSTRUCT_ONLY */ cache_vulkan->device = (GstVulkanDevice *) g_value_dup_object (value); break; default:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/bluez/gsta2dpsink.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/bluez/gsta2dpsink.c
Changed
@@ -300,16 +300,18 @@ g_object_class_install_property (object_class, PROP_DEVICE, g_param_spec_string ("device", "Device", - "Bluetooth remote device address", NULL, G_PARAM_READWRITE)); + "Bluetooth remote device address", NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (object_class, PROP_AUTOCONNECT, g_param_spec_boolean ("auto-connect", "Auto-connect", "Automatically attempt to connect to device", - DEFAULT_AUTOCONNECT, G_PARAM_READWRITE)); + DEFAULT_AUTOCONNECT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (object_class, PROP_TRANSPORT, g_param_spec_string ("transport", "Transport", - "Use configured transport", NULL, G_PARAM_READWRITE)); + "Use configured transport", NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_set_static_metadata (element_class, "Bluetooth A2DP sink", "Sink/Audio", "Plays audio to an A2DP device",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/bluez/gstavdtpsink.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/bluez/gstavdtpsink.c
Changed
@@ -380,17 +380,20 @@ g_object_class_install_property (object_class, PROP_DEVICE, g_param_spec_string ("device", "Device", - "Bluetooth remote device address", NULL, G_PARAM_READWRITE)); + "Bluetooth remote device address", NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (object_class, PROP_AUTOCONNECT, g_param_spec_boolean ("auto-connect", "Auto-connect", "Automatically attempt to connect " - "to device", DEFAULT_AUTOCONNECT, G_PARAM_READWRITE)); + "to device", DEFAULT_AUTOCONNECT, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (object_class, PROP_TRANSPORT, g_param_spec_string ("transport", - "Transport", "Use configured transport", NULL, G_PARAM_READWRITE)); + "Transport", "Use configured transport", NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); GST_DEBUG_CATEGORY_INIT (avdtp_sink_debug, "avdtpsink", 0, "A2DP headset sink element");
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/bluez/gstavdtpsrc.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/bluez/gstavdtpsrc.c
Changed
@@ -105,13 +105,14 @@ g_object_class_install_property (gobject_class, PROP_TRANSPORT, g_param_spec_string ("transport", - "Transport", "Use configured transport", NULL, G_PARAM_READWRITE)); + "Transport", "Use configured transport", NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_TRANSPORT_VOLUME, g_param_spec_uint ("transport-volume", "Transport volume", "Volume of the transport (only valid if transport is acquired)", - 0, 127, DEFAULT_VOLUME, G_PARAM_READWRITE)); + 0, 127, DEFAULT_VOLUME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); gst_element_class_set_static_metadata (element_class, "Bluetooth AVDTP Source",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/d3d11/gstd3d11dxgicapture.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/d3d11/gstd3d11dxgicapture.cpp
Changed
@@ -1627,6 +1627,7 @@ switch (prop_id) { case PROP_D3D11_DEVICE: + /* G_PARAM_CONSTRUCT_ONLY */ self->device = (GstD3D11Device *) g_value_dup_object (value); break; case PROP_MONITOR_HANDLE:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/d3d11/gstd3d11window.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/d3d11/gstd3d11window.cpp
Changed
@@ -221,6 +221,7 @@ switch (prop_id) { case PROP_D3D11_DEVICE: + /* G_PARAM_CONSTRUCT_ONLY */ self->device = (GstD3D11Device *) g_value_dup_object (value); break; case PROP_FORCE_ASPECT_RATIO:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/d3d11/gstd3d11winrtcapture.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/d3d11/gstd3d11winrtcapture.cpp
Changed
@@ -380,6 +380,7 @@ switch (prop_id) { case PROP_D3D11_DEVICE: + /* G_PARAM_CONSTRUCT_ONLY */ self->device = (GstD3D11Device *) g_value_dup_object (value); break; case PROP_MONITOR_HANDLE:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/d3d12/gstd3d12decoder.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/d3d12/gstd3d12decoder.cpp
Changed
@@ -560,18 +560,12 @@ auto priv = decoder->priv; HRESULT hr; - D3D12_VIDEO_DECODER_DESC prev_desc = { }; - ComPtr < ID3D12VideoDecoder > prev_decoder; - - /* Store previous encoder object and reuse if possible */ - if (priv->session) { - prev_desc = priv->session->decoder_desc; - prev_decoder = priv->session->decoder; - } - gst_d3d12_decoder_drain (decoder, videodec); priv->session = nullptr; + /* XXX: NVIDIA driver crash if cmdlist is reused... */ + priv->cmd->cl = nullptr; + if (!gst_d3d12_device_get_format (decoder->device, GST_VIDEO_INFO_FORMAT (info), &device_format) || device_format.dxgi_format == DXGI_FORMAT_UNKNOWN) { @@ -674,27 +668,18 @@ session->aligned_width = GST_ROUND_UP_N (session->coded_width, alignment); session->aligned_height = GST_ROUND_UP_N (session->coded_height, alignment); - if (prev_decoder && prev_desc.Configuration.DecodeProfile == - support.Configuration.DecodeProfile && - prev_desc.Configuration.InterlaceType == - support.Configuration.InterlaceType) { - session->decoder = prev_decoder; - session->decoder_desc = prev_desc; - } else { - D3D12_VIDEO_DECODER_DESC desc; - - desc.NodeMask = 0; - desc.Configuration = support.Configuration; - hr = priv->cmd->video_device->CreateVideoDecoder (&desc, - IID_PPV_ARGS (&session->decoder)); - if (!gst_d3d12_result (hr, decoder->device)) { - GST_ERROR_OBJECT (decoder, "Couldn't create decoder object"); - return GST_FLOW_ERROR; - } - - session->decoder_desc = desc; + D3D12_VIDEO_DECODER_DESC desc = { }; + desc.NodeMask = 0; + desc.Configuration = support.Configuration; + hr = priv->cmd->video_device->CreateVideoDecoder (&desc, + IID_PPV_ARGS (&session->decoder)); + if (!gst_d3d12_result (hr, decoder->device)) { + GST_ERROR_OBJECT (decoder, "Couldn't create decoder object"); + return GST_FLOW_ERROR; } + session->decoder_desc = desc; + D3D12_VIDEO_DECODER_HEAP_DESC heap_desc; heap_desc.NodeMask = 0; heap_desc.Configuration = session->support.Configuration;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/d3d12/gstd3d12dxgicapture.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/d3d12/gstd3d12dxgicapture.cpp
Changed
@@ -429,13 +429,13 @@ } } - HDESK hdesk = OpenInputDesktop (0, FALSE, GENERIC_ALL); + auto prev_hdesk = GetThreadDesktop (GetCurrentThreadId ()); + auto hdesk = OpenInputDesktop (0, FALSE, GENERIC_ALL); if (hdesk) { if (!SetThreadDesktop (hdesk)) { GST_WARNING ("SetThreadDesktop() failed, error %lu", GetLastError()); } - CloseDesktop (hdesk); } else { GST_WARNING ("OpenInputDesktop() failed, error %lu", GetLastError()); } @@ -469,6 +469,12 @@ if (FAILED (hr)) hr = output1->DuplicateOutput(device, &dupl_); + if (prev_hdesk) + SetThreadDesktop (prev_hdesk); + + if (hdesk) + CloseDesktop (hdesk); + if (FAILED (hr)) { if (hr == DXGI_ERROR_NOT_CURRENTLY_AVAILABLE) { GST_ERROR ("Hit the max allowed number of Desktop Duplication session");
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/directshow/dshowvideosink.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/directshow/dshowvideosink.cpp
Changed
@@ -221,17 +221,17 @@ PROP_KEEP_ASPECT_RATIO, g_param_spec_boolean ("force-aspect-ratio", "Force aspect ratio", "When enabled, scaling will respect original aspect ratio", TRUE, - (GParamFlags)G_PARAM_READWRITE)); + GParamFlags(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_FULL_SCREEN, g_param_spec_boolean ("fullscreen", "Full screen mode", "Use full-screen mode (not available when using XOverlay)", FALSE, - (GParamFlags)G_PARAM_READWRITE)); + GParamFlags(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_RENDERER, g_param_spec_string ("renderer", "Renderer", "Force usage of specific DirectShow renderer (EVR, VMR9 or VMR7)", - NULL, (GParamFlags)G_PARAM_READWRITE)); + NULL, GParamFlags(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); } static void
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/directshow/gstdshowvideosrc.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/directshow/gstdshowvideosrc.cpp
Changed
@@ -135,20 +135,20 @@ (gobject_class, PROP_DEVICE, g_param_spec_string ("device", "Device", "Directshow device path (@..classID/name)", NULL, - static_cast < GParamFlags > (G_PARAM_READWRITE))); + static_cast < GParamFlags > (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); g_object_class_install_property (gobject_class, PROP_DEVICE_NAME, g_param_spec_string ("device-name", "Device name", "Human-readable name of the video device", NULL, - static_cast < GParamFlags > (G_PARAM_READWRITE))); + static_cast < GParamFlags > (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); g_object_class_install_property (gobject_class, PROP_DEVICE_INDEX, g_param_spec_int ("device-index", "Device index", "Index of the enumerated video device", 0, G_MAXINT, DEFAULT_PROP_DEVICE_INDEX, - static_cast < GParamFlags > (G_PARAM_READWRITE))); + static_cast < GParamFlags > (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); gst_element_class_add_static_pad_template (gstelement_class, &src_template);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/directsound/gstdirectsoundsrc.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/directsound/gstdirectsoundsrc.c
Changed
@@ -217,7 +217,8 @@ g_object_class_install_property (gobject_class, PROP_DEVICE_NAME, g_param_spec_string ("device-name", "Device name", - "Human-readable name of the sound device", NULL, G_PARAM_READWRITE)); + "Human-readable name of the sound device", NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_DEVICE,
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/dvb/gstdvbsrc.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/dvb/gstdvbsrc.c
Changed
@@ -655,62 +655,72 @@ g_object_class_install_property (gobject_class, ARG_DVBSRC_ADAPTER, g_param_spec_int ("adapter", "The adapter device number", "The DVB adapter device number (eg. 0 for adapter0)", - 0, 16, DEFAULT_ADAPTER, G_PARAM_READWRITE)); + 0, 16, DEFAULT_ADAPTER, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_FRONTEND, g_param_spec_int ("frontend", "The frontend device number", "The frontend device number (eg. 0 for frontend0)", - 0, 16, DEFAULT_FRONTEND, G_PARAM_READWRITE)); + 0, 16, DEFAULT_FRONTEND, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_FREQUENCY, g_param_spec_uint ("frequency", "Center frequency", "Center frequency to tune into. Measured in kHz for the satellite " "distribution standards and Hz for all the rest", 0, G_MAXUINT, DEFAULT_FREQUENCY, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_POLARITY, g_param_spec_string ("polarity", "polarity", "(DVB-S/S2) Polarity vhHV (eg. V for Vertical)", DEFAULT_POLARITY, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_PIDS, g_param_spec_string ("pids", "pids", "Colon-separated list of PIDs (eg. 110:120) to capture. ACT and CAT " "are automatically included but PMT should be added explicitly. " "Special value 8192 gets full MPEG-TS", - DEFAULT_PIDS, GST_PARAM_MUTABLE_PLAYING | G_PARAM_WRITABLE)); + DEFAULT_PIDS, + GST_PARAM_MUTABLE_PLAYING | G_PARAM_WRITABLE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_SYM_RATE, g_param_spec_uint ("symbol-rate", "symbol rate", "(DVB-S/S2, DVB-C) Symbol rate in kBd (kilo bauds)", 0, G_MAXUINT, DEFAULT_SYMBOL_RATE, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_TUNE, g_param_spec_pointer ("tune", - "tune", "Atomically tune to channel. (For Apps)", G_PARAM_WRITABLE)); + "tune", "Atomically tune to channel. (For Apps)", + G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_DISEQC_SRC, g_param_spec_int ("diseqc-source", "diseqc source", "(DVB-S/S2) Selected DiSEqC source. Only needed if you have a " "DiSEqC switch. Otherwise leave at -1 (disabled)", -1, 7, - DEFAULT_DISEQC_SRC, GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + DEFAULT_DISEQC_SRC, + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_BANDWIDTH_HZ, g_param_spec_uint ("bandwidth-hz", "bandwidth-hz", "Channel bandwidth in Hz", 0, G_MAXUINT, DEFAULT_BANDWIDTH_HZ, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); #ifndef GST_REMOVE_DEPRECATED g_object_class_install_property (gobject_class, ARG_DVBSRC_BANDWIDTH, g_param_spec_enum ("bandwidth", "bandwidth", "(DVB-T) Bandwidth. Deprecated", GST_TYPE_DVBSRC_BANDWIDTH, DEFAULT_BANDWIDTH, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_DEPRECATED)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | G_PARAM_DEPRECATED | + G_PARAM_STATIC_STRINGS)); #endif /* FIXME: DVB-C, DVB-S, DVB-S2 named it as innerFEC */ @@ -719,14 +729,16 @@ "code-rate-hp", "(DVB-T, DVB-S/S2 and DVB-C) High priority code rate", GST_TYPE_DVBSRC_CODE_RATE, DEFAULT_CODE_RATE_HP, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_CODE_RATE_LP, g_param_spec_enum ("code-rate-lp", "code-rate-lp", "(DVB-T) Low priority code rate", GST_TYPE_DVBSRC_CODE_RATE, DEFAULT_CODE_RATE_LP, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); /* FIXME: should the property be called 'guard-interval' then? */ g_object_class_install_property (gobject_class, ARG_DVBSRC_GUARD, @@ -734,13 +746,15 @@ "guard", "(DVB-T) Guard Interval", GST_TYPE_DVBSRC_GUARD, DEFAULT_GUARD, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_MODULATION, g_param_spec_enum ("modulation", "modulation", "(DVB-T/T2/C/S2, TURBO and ATSC) Modulation type", GST_TYPE_DVBSRC_MODULATION, DEFAULT_MODULATION, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); /* FIXME: property should be named 'transmission-mode' */ g_object_class_install_property (gobject_class, @@ -748,19 +762,22 @@ g_param_spec_enum ("trans-mode", "trans-mode", "(DVB-T) Transmission mode", GST_TYPE_DVBSRC_TRANSMISSION_MODE, DEFAULT_TRANSMISSION_MODE, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_HIERARCHY_INF, g_param_spec_enum ("hierarchy", "hierarchy", "(DVB-T) Hierarchy information", GST_TYPE_DVBSRC_HIERARCHY, DEFAULT_HIERARCHY, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_INVERSION, g_param_spec_enum ("inversion", "inversion", "(DVB-T and DVB-C) Inversion information", GST_TYPE_DVBSRC_INVERSION, DEFAULT_INVERSION, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_STATS_REPORTING_INTERVAL, @@ -768,45 +785,53 @@ "stats-reporting-interval", "The number of reads before reporting frontend stats", 0, G_MAXUINT, DEFAULT_STATS_REPORTING_INTERVAL, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_TIMEOUT, g_param_spec_uint64 ("timeout", "Timeout", "Post a message after timeout microseconds (0 = disabled)", - 0, G_MAXUINT64, DEFAULT_TIMEOUT, G_PARAM_READWRITE)); + 0, G_MAXUINT64, DEFAULT_TIMEOUT, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_TUNING_TIMEOUT, g_param_spec_uint64 ("tuning-timeout", "Tuning Timeout", "Microseconds to wait before giving up tuning/locking on a signal", 0, G_MAXUINT64, DEFAULT_TUNING_TIMEOUT, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_DVB_BUFFER_SIZE, g_param_spec_uint ("dvb-buffer-size", "dvb-buffer-size", "The kernel buffer size used by the DVB api", - 0, G_MAXUINT, DEFAULT_DVB_BUFFER_SIZE, G_PARAM_READWRITE)); + 0, G_MAXUINT, DEFAULT_DVB_BUFFER_SIZE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_DELSYS, g_param_spec_enum ("delsys", "delsys", "Delivery System", - GST_TYPE_DVBSRC_DELSYS, DEFAULT_DELSYS, G_PARAM_READWRITE)); + GST_TYPE_DVBSRC_DELSYS, DEFAULT_DELSYS, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_PILOT, g_param_spec_enum ("pilot", "pilot", "Pilot (DVB-S2)", GST_TYPE_DVBSRC_PILOT, DEFAULT_PILOT, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ROLLOFF, g_param_spec_enum ("rolloff", "rolloff", "Rolloff (DVB-S2)", GST_TYPE_DVBSRC_ROLLOFF, DEFAULT_ROLLOFF, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_STREAM_ID, g_param_spec_int ("stream-id", "stream-id", "(DVB-T2 and DVB-S2 max 255, ISDB max 65535) Stream ID " "(-1 = disabled)", -1, 65535, DEFAULT_STREAM_ID, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); /* Additional ISDB-T properties */ @@ -817,7 +842,8 @@ "ISDB-T layer enabled", "(ISDB-T) Layer Enabled (7 = All layers)", 1, 7, DEFAULT_ISDBT_LAYER_ENABLED, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_PARTIAL_RECEPTION, @@ -825,7 +851,8 @@ "ISDB-T partial reception", "(ISDB-T) Partial Reception (-1 = AUTO)", -1, 1, DEFAULT_ISDBT_PARTIAL_RECEPTION, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_SOUND_BROADCASTING, @@ -833,7 +860,8 @@ "ISDB-T sound broadcasting", "(ISDB-T) Sound Broadcasting", 0, 1, DEFAULT_ISDBT_SOUND_BROADCASTING, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_SB_SUBCHANNEL_ID, @@ -841,7 +869,8 @@ "ISDB-T SB subchannel ID", "(ISDB-T) SB Subchannel ID (-1 = AUTO)", -1, 41, DEFAULT_ISDBT_SB_SEGMENT_IDX, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_SB_SEGMENT_IDX, @@ -849,7 +878,8 @@ "ISDB-T SB segment IDX", "(ISDB-T) SB segment IDX", 0, 12, DEFAULT_ISDBT_SB_SEGMENT_IDX, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_SB_SEGMENT_COUNT, @@ -857,46 +887,53 @@ "ISDB-T SB segment count", "(ISDB-T) SB segment count", 1, 13, DEFAULT_ISDBT_SB_SEGMENT_COUNT, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_LAYERA_FEC, g_param_spec_enum ("isdbt-layera-fec", "ISDB-T layer A FEC", "(ISDB-T) layer A Forward Error Correction", GST_TYPE_DVBSRC_CODE_RATE, DEFAULT_ISDBT_LAYERA_FEC, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_LAYERB_FEC, g_param_spec_enum ("isdbt-layerb-fec", "ISDB-T layer B FEC", "(ISDB-T) layer B Forward Error Correction", GST_TYPE_DVBSRC_CODE_RATE, DEFAULT_ISDBT_LAYERB_FEC, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_LAYERC_FEC, g_param_spec_enum ("isdbt-layerc-fec", "ISDB-T layer A FEC", "(ISDB-T) layer C Forward Error Correction", GST_TYPE_DVBSRC_CODE_RATE, DEFAULT_ISDBT_LAYERC_FEC, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_LAYERA_MODULATION, g_param_spec_enum ("isdbt-layera-modulation", "ISDBT layer A modulation", "(ISDB-T) Layer A modulation type", GST_TYPE_DVBSRC_MODULATION, DEFAULT_ISDBT_LAYERA_MODULATION, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_LAYERB_MODULATION, g_param_spec_enum ("isdbt-layerb-modulation", "ISDBT layer B modulation", "(ISDB-T) Layer B modulation type", GST_TYPE_DVBSRC_MODULATION, DEFAULT_ISDBT_LAYERB_MODULATION, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_LAYERC_MODULATION, g_param_spec_enum ("isdbt-layerc-modulation", "ISDBT layer C modulation", "(ISDB-T) Layer C modulation type", GST_TYPE_DVBSRC_MODULATION, DEFAULT_ISDBT_LAYERC_MODULATION, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_LAYERA_SEGMENT_COUNT, @@ -904,7 +941,8 @@ "ISDB-T layer A segment count", "(ISDB-T) Layer A segment count (-1 = AUTO)", -1, 13, DEFAULT_ISDBT_LAYERA_SEGMENT_COUNT, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_LAYERB_SEGMENT_COUNT, @@ -912,7 +950,8 @@ "ISDB-T layer B segment count", "(ISDB-T) Layer B segment count (-1 = AUTO)", -1, 13, DEFAULT_ISDBT_LAYERB_SEGMENT_COUNT, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_LAYERC_SEGMENT_COUNT, @@ -920,7 +959,8 @@ "ISDB-T layer C segment count", "(ISDB-T) Layer C segment count (-1 = AUTO)", -1, 13, DEFAULT_ISDBT_LAYERC_SEGMENT_COUNT, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_LAYERA_TIME_INTERLEAVING, @@ -928,7 +968,8 @@ "ISDB-T layer A time interleaving", "(ISDB-T) Layer A time interleaving (-1 = AUTO)", -1, 8, DEFAULT_ISDBT_LAYERA_TIME_INTERLEAVING, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_LAYERB_TIME_INTERLEAVING, @@ -936,7 +977,8 @@ "ISDB-T layer B time interleaving", "(ISDB-T) Layer B time interleaving (-1 = AUTO)", -1, 8, DEFAULT_ISDBT_LAYERB_TIME_INTERLEAVING, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_ISDBT_LAYERC_TIME_INTERLEAVING, @@ -944,7 +986,8 @@ "ISDB-T layer C time interleaving", "(ISDB-T) Layer C time interleaving (-1 = AUTO)", -1, 8, DEFAULT_ISDBT_LAYERC_TIME_INTERLEAVING, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); /* LNB properties (Satellite distribution standards) */ @@ -952,19 +995,22 @@ g_param_spec_uint ("lnb-slof", "Tuning Timeout", "LNB's Upper bound for low band reception (kHz)", 0, G_MAXUINT, DEFAULT_LNB_SLOF, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_LNB_LOF1, g_param_spec_uint ("lnb-lof1", "Low band local oscillator frequency", "LNB's Local oscillator frequency used for low band reception (kHz)", 0, G_MAXUINT, DEFAULT_LNB_LOF1, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, ARG_DVBSRC_LNB_LOF2, g_param_spec_uint ("lnb-lof2", "High band local oscillator frequency", "LNB's Local oscillator frequency used for high band reception (kHz)", 0, G_MAXUINT, DEFAULT_LNB_LOF2, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); /* Additional DTMB properties */ @@ -973,7 +1019,8 @@ g_param_spec_enum ("interleaving", "DTMB Interleaving", "(DTMB) Interleaving type", GST_TYPE_INTERLEAVING, DEFAULT_INTERLEAVING, - GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE)); + GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); /** * GstDvbSrc::tuning-start:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/fbdev/gstfbdevsink.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/fbdev/gstfbdevsink.c
Changed
@@ -421,7 +421,8 @@ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DEVICE, g_param_spec_string ("device", "device", - "The framebuffer device eg: /dev/fb0", NULL, G_PARAM_READWRITE)); + "The framebuffer device eg: /dev/fb0", NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); basesink_class->set_caps = GST_DEBUG_FUNCPTR (gst_fbdevsink_setcaps); basesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_fbdevsink_getcaps);
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/kms/gstkmsallocator.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/kms/gstkmsallocator.c
Changed
@@ -275,7 +275,7 @@ g_propsPROP_DRM_FD = g_param_spec_int ("drm-fd", "DRM fd", "DRM file descriptor", -1, G_MAXINT, -1, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (gobject_class, PROP_N, g_props); }
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/nvcodec/gstnvencoder.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/nvcodec/gstnvencoder.cpp
Changed
@@ -963,7 +963,7 @@ status = gst_nv_enc_task_lock_bitstream (task, &bitstream); if (status != NV_ENC_SUCCESS) { gst_nv_enc_task_unref (task); - gst_video_encoder_finish_frame (encoder, frame); + gst_video_encoder_release_frame (encoder, frame); GST_ELEMENT_ERROR (self, STREAM, ENCODE, (NULL), ("Failed to lock bitstream, status: %" GST_NVENC_STATUS_FORMAT, GST_NVENC_STATUS_ARGS (status))); @@ -974,6 +974,7 @@ if (priv->last_flow != GST_FLOW_OK) { gst_nv_enc_task_unlock_bitstream (task); gst_nv_enc_task_unref (task); + gst_video_encoder_release_frame (encoder, frame); continue; } @@ -2167,14 +2168,14 @@ if (priv->last_flow != GST_FLOW_OK) { GST_INFO_OBJECT (self, "Last flow was %s", gst_flow_get_name (priv->last_flow)); - gst_video_encoder_finish_frame (encoder, frame); + gst_video_encoder_release_frame (encoder, frame); return priv->last_flow; } if (!priv->object && !gst_nv_encoder_init_session (self, in_buf)) { GST_ERROR_OBJECT (self, "Encoder object was not configured"); - gst_video_encoder_finish_frame (encoder, frame); + gst_video_encoder_release_frame (encoder, frame); return GST_FLOW_NOT_NEGOTIATED; } @@ -2183,7 +2184,7 @@ switch (reconfig) { case GST_NV_ENCODER_RECONFIGURE_BITRATE: if (!gst_nv_encoder_reconfigure_session (self)) { - gst_video_encoder_finish_frame (encoder, frame); + gst_video_encoder_release_frame (encoder, frame); return GST_FLOW_NOT_NEGOTIATED; } break; @@ -2191,7 +2192,7 @@ { gst_nv_encoder_drain (self, TRUE); if (!gst_nv_encoder_init_session (self, nullptr)) { - gst_video_encoder_finish_frame (encoder, frame); + gst_video_encoder_release_frame (encoder, frame); return GST_FLOW_NOT_NEGOTIATED; } break; @@ -2210,14 +2211,16 @@ if (priv->last_flow != GST_FLOW_OK) { GST_INFO_OBJECT (self, "Last flow was %s", gst_flow_get_name (priv->last_flow)); - gst_video_encoder_finish_frame (encoder, frame); + gst_video_encoder_release_frame (encoder, frame); + if (task) + gst_nv_enc_task_unref (task); return priv->last_flow; } if (ret != GST_FLOW_OK) { GST_DEBUG_OBJECT (self, "AcquireTask returned %s", gst_flow_get_name (ret)); - gst_video_encoder_finish_frame (encoder, frame); + gst_video_encoder_release_frame (encoder, frame); return ret; } @@ -2228,7 +2231,7 @@ if (ret != GST_FLOW_OK) { GST_ERROR_OBJECT (self, "Failed to upload frame"); gst_nv_enc_task_unref (task); - gst_video_encoder_finish_frame (encoder, frame); + gst_video_encoder_release_frame (encoder, frame); return ret; } @@ -2243,7 +2246,7 @@ gst_nv_encoder_get_pic_struct (self, in_buf), task); if (status != NV_ENC_SUCCESS) { GST_ERROR_OBJECT (self, "Failed to encode frame"); - gst_video_encoder_finish_frame (encoder, frame); + gst_video_encoder_release_frame (encoder, frame); return GST_FLOW_ERROR; }
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/va/gstvadecoder.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/va/gstvadecoder.c
Changed
@@ -77,6 +77,7 @@ switch (prop_id) { case PROP_DISPLAY:{ + /* G_PARAM_CONSTRUCT_ONLY */ g_assert (!self->display); self->display = g_value_dup_object (value); break;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/va/gstvaencoder.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/va/gstvaencoder.c
Changed
@@ -123,6 +123,7 @@ switch (prop_id) { case PROP_DISPLAY:{ + /* G_PARAM_CONSTRUCT_ONLY */ g_assert (!self->display); self->display = g_value_dup_object (value); break;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/va/gstvafilter.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/va/gstvafilter.c
Changed
@@ -99,6 +99,7 @@ switch (prop_id) { case PROP_DISPLAY:{ + /* G_PARAM_CONSTRUCT_ONLY */ g_assert (!self->display); self->display = g_value_dup_object (value); break;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/va/gstvah264enc.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/va/gstvah264enc.c
Changed
@@ -1419,9 +1419,9 @@ continue; } - /* baseline only support I/P mode. */ - if (self->gop.num_bframes > 0) { - if (g_strstr_len (profile_name, -1, "baseline")) + /* baseline only support I/P mode and neither cabac nor dct8x8. */ + if (!self->use_dct8x8 && !self->use_cabac && self->gop.num_bframes == 0) { + if (!g_strstr_len (profile_name, -1, "baseline")) continue; }
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/sys/webview2/gstwebview2object.cpp -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/sys/webview2/gstwebview2object.cpp
Changed
@@ -815,6 +815,7 @@ switch (prop_id) { case PROP_DEVICE: + /* G_PARAM_CONSTRUCT_ONLY */ priv->device = (GstD3D11Device *) g_value_dup_object (value); break; case PROP_USER_DATA_FOLDER:
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/tests/check/elements/audiovisualizer.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/tests/check/elements/audiovisualizer.c
Changed
@@ -23,6 +23,7 @@ #endif #include <gst/check/gstcheck.h> +#include <gst/audio/audio.h> static void eos_cb (GstBus * bus, GstMessage * message, GMainLoop * loop) @@ -52,8 +53,8 @@ pipe_str = g_strdup_printf - ("audiotestsrc num-buffers=20 ! audio/x-raw,format=S16LE,channels=2 ! %s ! fakesink", - element); + ("audiotestsrc num-buffers=20 ! audio/x-raw,format=" GST_AUDIO_NE (S16) + ",channels=2 ! %s ! fakesink", element); pipeline = gst_parse_launch (pipe_str, &error); fail_unless (pipeline != NULL, "Could not create pipeline: %s",
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/tests/check/elements/dash_mpd.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/tests/check/elements/dash_mpd.c
Changed
@@ -5999,12 +5999,6 @@ GST_END_TEST; -#if 0 -/* - * Test disabled due to failures with recent libsoup -*/ - - /* * Test parsing of Perioud using @xlink:href attribute */ @@ -6109,7 +6103,6 @@ GST_END_TEST; -#endif /* * Test parsing xsd:datetime with timezoneoffset. @@ -6714,11 +6707,8 @@ tcase_add_test (tc_simpleMPD, dash_mpdparser_various_duration_formats); tcase_add_test (tc_simpleMPD, dash_mpdparser_default_presentation_delay); -#if 0 - /* Test disabled due to failure with libsoup */ /* tests checking xlink attributes */ tcase_add_test (tc_simpleMPD, dash_mpdparser_xlink_period); -#endif /* tests checking the MPD management * (eg. setting active streams, obtaining attributes values)
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/tests/check/elements/h264parse.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/tests/check/elements/h264parse.c
Changed
@@ -351,6 +351,13 @@ gst_buffer_fill (buf, 0, frame_sps, frame_sps_len); g_free (frame_sps); fail_unless_equals_int (gst_harness_push (h, buf), GST_FLOW_OK); + + /* push pps buffer */ + buf = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, h264_pps, + sizeof (h264_pps), 0, sizeof (h264_pps), NULL, NULL); + fail_unless_equals_int (gst_harness_push (h, buf), GST_FLOW_OK); + + /* send eos */ fail_unless (gst_harness_push_event (h, gst_event_new_eos ())); /* check that the caps have been negociated correctly */ @@ -1541,6 +1548,51 @@ GST_END_TEST; +GST_START_TEST (test_parse_to_avc3_without_sps) +{ + GstHarness *h; + GstBuffer *buf; + GstCaps *caps; + + h = gst_harness_new ("h264parse"); + + gst_harness_set_caps_str (h, + "video/x-h264, stream-format=(string)byte-stream", + "video/x-h264, stream-format=(string)avc3, parsed=(boolean)true," + " alignment=(string)au"); + + /* Send AUD */ + buf = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, + h264_aud, sizeof (h264_aud), 0, sizeof (h264_aud), NULL, NULL); + fail_unless_equals_int (gst_harness_push (h, buf), GST_FLOW_OK); + + /* Send an IDR */ + buf = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, + h264_idrframe, sizeof (h264_idrframe), 0, sizeof (h264_idrframe), NULL, + NULL); + fail_unless_equals_int (gst_harness_push (h, buf), GST_FLOW_OK); + + /* Send AUD to trigger the AU completion and pushing */ + buf = gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, + h264_aud, sizeof (h264_aud), 0, sizeof (h264_aud), NULL, NULL); + fail_unless_equals_int (gst_harness_push (h, buf), GST_FLOW_OK); + + /* send EOS */ + gst_harness_push_event (h, gst_event_new_eos ()); + + /* Ensure that caps negotiation failed as an SPS is needed to generate the + * codec_data + */ + fail_if (caps = gst_pad_get_current_caps (h->sinkpad), "caps: %s", + gst_caps_to_string (caps)); + + /* Ensure no buffer was pushed without caps */ + fail_unless_equals_int (gst_harness_buffers_received (h), 0) + gst_harness_teardown (h); +} + +GST_END_TEST; + /* * TODO: * - Both push- and pull-modes need to be tested @@ -1654,6 +1706,7 @@ tcase_add_test (tc_chain, test_parse_skip_to_4bytes_sc); tcase_add_test (tc_chain, test_parse_aud_insert); tcase_add_test (tc_chain, test_parse_sei_userdefinedunregistered); + tcase_add_test (tc_chain, test_parse_to_avc3_without_sps); nf += gst_check_run_suite (s, "h264parse", __FILE__); }
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/tests/check/meson.build -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/tests/check/meson.build
Changed
@@ -21,7 +21,8 @@ nalutils_dep = gstcodecparsers_dep.partial_dependency (compile_args: true, includes: true) enable_gst_play_tests = get_option('gst_play_tests') -libsoup_dep = dependency('libsoup-3.0', required : enable_gst_play_tests) +libsoup_dep = dependency('libsoup-3.0', include_type: 'system', required: enable_gst_play_tests, + default_options: {'tests': false}) # name, condition when to skip the test and extra dependencies base_tests =
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/tests/examples/cuda/cudamemory-sync.c -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/tests/examples/cuda/cudamemory-sync.c
Changed
@@ -391,7 +391,7 @@ resource_desc.res.pitch2D.devPtr = (CUdeviceptr) src_map.data; texture_desc.filterMode = CU_TR_FILTER_MODE_LINEAR; - texture_desc.flags = CU_TRSF_NORMALIZED_COORDINATES; + texture_desc.flags = 0x02; // CU_TRSF_NORMALIZED_COORDINATES texture_desc.addressMode0 = CU_TR_ADDRESS_MODE_CLAMP; texture_desc.addressMode1 = CU_TR_ADDRESS_MODE_CLAMP; texture_desc.addressMode2 = CU_TR_ADDRESS_MODE_CLAMP;
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/tests/examples/cuda/meson.build -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/tests/examples/cuda/meson.build
Changed
@@ -2,56 +2,6 @@ subdir_done() endif -cuda_deps = -cuda_inc_dir = -if host_system == 'windows' - cuda_path = run_command(python3, '-c', 'import os; print(os.environ.get("CUDA_PATH"))', check: false).stdout().strip() - if cuda_path in '', 'None' - subdir_done() - endif - - cuda_inc_dir = include_directories(join_paths(cuda_path, 'include')) - if not cc.has_header('cuda.h', include_directories: cuda_inc_dir) - subdir_done() - endif -else - # NOTE: meson dependency('cuda', version: '>=10'...) will return CUDA runtime - # library but we want to use CUDA driver API. Iterates - cuda_versions = - '12.4', - '12.3', - '12.2', - '12.1', - '12.0', - '11.8', - '11.8', - '11.7', - '11.6', - '11.5', - '11.4', - '11.2', - '11.1', - '11.0', - '10.2', - '10.1', - '10.0', - - - cuda_dep = dependency('', required: false) - foreach ver : cuda_versions - cuda_dep = dependency('cuda-@0@'.format(ver), required: false) - if cuda_dep.found() - break - endif - endforeach - - if not cuda_dep.found() - subdir_done() - endif - - cuda_deps = cuda_dep.partial_dependency(includes : true, compile_args: true) -endif - gl_header_dep = dependency('', fallback : 'gl-headers', 'gl_headers_dummy_dep', required : false) if gl_header_dep.type_name() == 'internal' @@ -62,8 +12,8 @@ endif executable('cudamemory-sync', 'cudamemory-sync.c', - include_directories : configinc + compat_includes + cuda_inc_dir, - dependencies: gst_dep, gstvideo_dep, gstcuda_dep, gl_header_dep + cuda_deps, + include_directories : configinc, cuda_stubinc + compat_includes, + dependencies: gst_dep, gstvideo_dep, gstcuda_dep, gl_header_dep, c_args : gst_plugins_bad_args + '-DGST_USE_UNSTABLE_API', install: false) @@ -74,8 +24,8 @@ 'template-plugin/cuda-transform-ip-template.c', 'template-plugin/plugin.c', , - include_directories : configinc + compat_includes + cuda_inc_dir, - dependencies: gst_dep, gstvideo_dep, gstcuda_dep, gl_header_dep + cuda_deps, + include_directories : configinc, cuda_stubinc + compat_includes, + dependencies: gst_dep, gstvideo_dep, gstcuda_dep, gl_header_dep, c_args : gst_plugins_bad_args + '-DGST_USE_UNSTABLE_API', install: false)
View file
_service:download_url:gst-plugins-bad-1.26.1.tar.xz/tests/examples/qt6d3d11/meson.build -> _service:download_url:gst-plugins-bad-1.26.2.tar.xz/tests/examples/qt6d3d11/meson.build
Changed
@@ -2,9 +2,8 @@ subdir_done() endif -qt6_example_deps = dependency('qt6', - modules : 'Core', 'Gui', 'Widgets', 'Qml', 'Quick', - required: get_option('examples')) +qt6_example_deps = dependency('qt6', modules : 'Core', 'Gui', 'Widgets', 'Qml', 'Quick', + method: qt6_method, required: get_option('examples')) if not qt6_example_deps.found() subdir_done()
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
.