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