Projects
Essentials
gstreamer-plugins-bad-codecs
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 31
View file
gstreamer-plugins-bad-codecs.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Mon Feb 3 09:28:58 UTC 2025 - Bjørn Lie <zaitor@opensuse.org> + +- Update to version 1.24.12 + +------------------------------------------------------------------- Sat Jan 11 13:37:26 UTC 2025 - Bjørn Lie <zaitor@opensuse.org> - Update to version 1.24.11
View file
gstreamer-plugins-bad-codecs.spec
Changed
@@ -7,7 +7,7 @@ %define _version 1.24.0 Name: gstreamer-plugins-bad-codecs -Version: 1.24.11 +Version: 1.24.12 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.24.11.tar.xz</param> + <param name="path">/src/gst-plugins-bad/gst-plugins-bad-1.24.12.tar.xz</param> </service> <service name="set_version" mode="buildtime"/> </services>
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/ChangeLog -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/ChangeLog
Changed
@@ -1,3 +1,188 @@ +=== release 1.24.12 === + +2025-01-29 20:12:29 +0000 Tim-Philipp Müller <tim@centricular.com> + + * NEWS: + * RELEASE: + * gst-plugins-bad.doap: + * meson.build: + Release 1.24.12 + +2024-12-30 21:59:03 +0100 Samuel Thibault <samuel.thibault@ens-lyon.org> + + * ext/gtk/meson.build: + * tests/examples/gtk/meson.build: + * tests/examples/waylandsink/meson.build: + meson: Fix build with gtk3 but not wayland + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8260> + +2025-01-20 18:19:18 +0100 Andoni Morales Alastruey <ylatuya@gmail.com> + + * sys/applemedia/vtdec.c: + vtdec: fix seeks hangs due to a race condition draining + If the drain function of the decoder triggered by FLUSH_START + is run while the output loop is running, once the output loop + finished vtdec->downstream_ret will be GST_FLOW_FLUSHING instead + of GST_FLOW_OK, which must not be treated as an error since + the queue is cleaned correctly as well. + Fix #4179 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8361> + +2025-01-23 13:20:50 +0100 Guillaume Desmottes <guillaume.desmottes@onestream.live> + + * ext/wpe/gstwpevideosrc.cpp: + wpe: remove glFlush() when filling buffer + According to https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4162#note_2739338 + it was introduced as workaround for tearing issues. + I do not experience any tearing without flushing on both nvidia and AMD + GPU, so I suppose it's no longer needed. + Slightly improve CPU usage according to my tests. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8355> + +2025-01-20 18:37:23 +0200 Sebastian Dröge <sebastian@centricular.com> + + * gst/mpegtsdemux/mpegtspacketizer.c: + tsdemux: Fix backwards PTS wraparound detection with ignore-pcr=true + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8332> + +2025-01-10 14:15:21 +0200 Sebastian Dröge <sebastian@centricular.com> + + * sys/decklink/gstdecklinkvideosink.cpp: + decklinkvideosink: Fix handling of caps framerate in auto mode + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8306> + +2025-01-09 00:42:48 +0100 Carlos Bentzen <cadubentzen@igalia.com> + + * ext/webrtc/gstwebrtcbin.c: + * tests/check/elements/webrtcbin.c: + webrtc: fix duplicate payload types with RTX and multiple video codecs + Before this patch, there could be duplicate payload types in offers that + have, within a media section, multiple codecs and RTX enabled: + ``` + m=video 9 UDP/TLS/RTP/SAVPF 96 97 97 <-- HAS DUPLICATES + a=sendrecv + a=rtpmap:96 VP8/90000 + a=rtcp-fb:96 nack + a=rtcp-fb:96 nack pli + a=rtcp-fb:96 ccm fir + a=rtcp-fb:96 transport-cc + a=rtpmap:97 H264/90000 + a=rtcp-fb:97 nack + a=rtcp-fb:97 nack pli + a=rtcp-fb:97 ccm fir + a=rtcp-fb:97 transport-cc + a=rtpmap:97 rtx/90000 <--------- PT IS DUPLICATE + a=fmtp:97 apt=96 + ``` + Fix this by populating the media_mapping array with all media formats + rather than only the first one. The added test case reproduces the issue, + which fails without this patch. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8294> + +2025-01-09 11:39:11 +0100 Edward Hervey <edward@centricular.com> + + * sys/wasapi/gstwasapisink.c: + wasapi: Use signed value for can_frames + The can retrieval function can return negative values (which will be properly handled) + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293> + +2025-01-09 10:08:23 +0100 Edward Hervey <edward@centricular.com> + + * sys/amfcodec/gstamfav1enc.cpp: + * sys/amfcodec/gstamfh264enc.cpp: + * sys/amfcodec/gstamfh265enc.cpp: + amfcodec: Add missing break statement + Setting frame-sad would also set ltr + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293> + +2025-01-06 09:57:33 +0100 Edward Hervey <edward@centricular.com> + + * gst-libs/gst/codecparsers/gsth265bitwriter.c: + h265bitwriter: Don't use type too small + The computed `coef_val` could exceed the maximum range of a gint8. Use a bigger + one, the checks after will ensure it's properly cropped/padded + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293> + +2025-01-05 12:08:24 +0100 Edward Hervey <edward@centricular.com> + + * gst-libs/gst/mpegts/gstmpegtssection.c: + mpegts: Add missing break + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293> + +2025-01-05 11:46:21 +0100 Edward Hervey <edward@centricular.com> + + * gst-libs/gst/mse/gstmsemediatype.c: + msemediabuffer: Fix ASCII character detection + Use glib function. The previous check was checking whether a signed int was + lower than its limit (which ... is always TRUE). + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293> + +2025-01-05 11:43:49 +0100 Edward Hervey <edward@centricular.com> + + * gst-libs/gst/mse/gstsourcebuffer.c: + msesourcebuffer: Fix unsigned value handling + Use the explicit valid clocktime handler instead + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293> + +2025-01-05 11:41:44 +0100 Edward Hervey <edward@centricular.com> + + * gst/rist/gstristsink.c: + ristsink: Add missing break + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8293> + +2025-01-07 12:56:13 +0200 Sebastian Dröge <sebastian@centricular.com> + + * sys/decklink/gstdecklinkaudiosink.cpp: + decklinkaudiosink: Don't crash if started without corresponding video sink + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8291> + +2025-01-09 16:13:44 -0500 Monty C <montyc1999@gmail.com> + + * sys/d3d12/hlsl/VSMain_color.hlsl: + * sys/d3d12/hlsl/VSMain_coord.hlsl: + * sys/d3d12/hlsl/VSMain_pos.hlsl: + d3d12: Fix shaders failing to compile with newer dxc versions + Newer dxc versions enable HLSL 2021 by default, which disallows implicit casting of structs. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8274> + +2025-01-09 17:23:41 +0000 Colin Kinloch <colin.kinloch@collabora.com> + + * gst-libs/gst/wayland/gstwldisplay.c: + wayland: Print table split when DMABuf format changes + The `zwp_linux_dmabuf_v1` doesn't specify an order for modifier events + to be sent. + In my case the linear format was sent last resulting in the first item + in each row being the previous format. + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8277> + +2024-12-25 15:04:03 +0100 Philippe Normand <philn@igalia.com> + + * ext/wpe/gstwpethreadedview.cpp: + * ext/wpe/gstwpethreadedview.h: + * ext/wpe/gstwpevideosrc.cpp: + wpevideosrc: Clear cached SHM buffers after caps re-negotiation + Otherwise buffers not corresponding to the negotiated caps might be pushed + downstream. + Fixes #4094 + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8266> + +2024-12-27 13:28:18 +0100 Philippe Normand <philn@igalia.com> + + * ext/wpe/gstwpevideosrc.cpp: + wpevideosrc: Post progress messages on the bus + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8265> + +2024-12-25 14:42:16 +0100 Philippe Normand <philn@igalia.com> + + * ext/wpe/gstwpevideosrc.cpp: + wpevideosrc: Handle latency queries + Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8265> + +2025-01-06 20:11:58 +0000 Tim-Philipp Müller <tim@centricular.com> + + * meson.build: + Back to development after 1.24.11 + === release 1.24.11 === 2025-01-06 19:48:08 +0000 Tim-Philipp Müller <tim@centricular.com>
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/NEWS -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/NEWS
Changed
@@ -1276,7 +1276,7 @@ - There are known issues with FFmpeg version 6.0.0 due to opaque passing being broken in that version. This affects at least avdec_h264, but may affect other decoders as well. Versions before 6.0.0, and 6.0.1 or higher are not affected. -- gst-libav currently doesn’t build against the latest FFmpeg 7.0 release. This is being worked on and tracked in this “libav: +- gst-libav < 1.24.6 didn’t build against the latest FFmpeg 7.0 release. This has been worked on and tracked in this “libav: Fix compatibility with ffmpeg 7” Merge Request. ## Statistics @@ -3030,6 +3030,147 @@ - List of Merge Requests applied in 1.24.11 - List of Issues fixed in 1.24.11 +1.24.12 + +The twelfth 1.24 bug-fix release (1.24.12) was released on 29 January 2025. + +This release only contains bugfixes and it should be safe to update from 1.24.x. + +Highlighted bugfixes in 1.24.12 + +- d3d12: Fix shaders failing to compile with newer dxc versions +- decklinkvideosink: Fix handling of caps framerate in auto mode; also a decklinkaudiosink fix +- devicemonitor: Fix potential crash macOS when a device is unplugged +- gst-libav: Fix crash in audio encoders like avenc_ac3 if input data has insufficient alignment +- gst-libav: Fix build against FFmpeg 4.2 as in Ubuntu 20.04 +- gst-editing-services: Fix Python library name fetching on Windows +- netclientclock: Don’t store failed internal clocks in the cache, so applications can re-try later +- oggdemux: Seeking and duration handling fixes +- osxaudiosrc: Fixes for failing init/no output on recent iOS versions +- qtdemux: Use mvhd transform matrix and support for flipping +- rtpvp9pay: Fix profile parsing +- splitmuxsrc: Fix use with decodebin3 which would occasionally fail with an assertion when seeking +- tsdemux: Fix backwards PTS wraparound detection with ignore-pcr=true +- video-overlay-composition: Declare the video/size/orientation tags for the meta and implement scale transformations +- vtdec: Fix seeks occasionally hanging on macOS due to a race condition when draining +- webrtc: Fix duplicate payload types with RTX and multiple video codecs +- win32-pluginloader: Make sure not to create any windows when inspecting plugins +- wpe: Various fixes for re-negotiation, latency reporting, progress messages on startup +- x264enc: Add missing data to AvcDecoderConfigurationRecord in codec_data for high profile variants +- cerbero: Support using ccache with cmake if enabled +- Various bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements + +gstreamer + +- device: Fix racy nullptr deref on macOS when a device is unplugged +- iterator: Added error handling to filtered iterators +- netclientclock: Don’t ever store failed internal clocks in the cache +- netclock-replay: use gst_c_args when building, fixing build failure on Solaris +- pluginloader-win32: create no window +- pluginloader-win32: fix use after free in find_helper_bin_location +- sparsefile: ensure error is set when read_buffer() returns 0 +- basetransform: fix incorrect logging inside gst_base_transform_query_caps + +gst-plugins-base + +- oggdemux: fixes seeking in some cases by not overwriting a valid duration with CLOCK_TIME_NONE +- video-overlay-composition: Declare the video/size/orientation tags for the meta & implement scale transformation +- Various fixes found from adding extra warning flags + +gst-plugins-good + +- osxaudiosrc: Fixes for failing init/no output on recent iOS versions +- qtdemux: Use mvhd transform matrix and support for flipping +- qtmux: fix critical warnings on negotiation error +- rtpvp9pay: fix profile parsing +- splitmuxsrc: Ensure only a single stream-start event is pushed +- splitmuxsrc: decodebin3 Fails with assertion in mq_slot_handle_stream_start when seeking +- Various fixes found from adding extra warning flags + +gst-plugins-bad + +- decklinkvideosink: Fix handling of caps framerate in auto mode +- decklinkaudiosink: Don’t crash if started without corresponding video sink +- d3d12: Fix shaders failing to compile with newer dxc versions +- tsdemux: Fix backwards PTS wraparound detection with ignore-pcr=true +- vtdec: fix seeks hangs due to a race condition draining +- vtdec: seeks freeze the pipeline +- wayland: Print table split when DMABuf format changes +- webrtc: fix duplicate payload types with RTX and multiple video codecs +- wpevideosrc: Clear cached SHM buffers after caps re-negotiation +- wpe: Report latency and start-up progress messages +- wpe: remove glFlush() when filling buffer +- Fix build with gtk3 but not wayland +- Various fixes found from adding extra warning flags + +gst-plugins-ugly + +- x264enc: add missing data to AvcDecoderConfigurationRecord, and switch to GstByteWriter + +GStreamer Rust plugins + +- No changes + +gst-libav + +- avaudenc: fix crash in avenc_ac3 if input buffers are insufficiently aligned +- avcodecmap: Only use new channel positions when compiling against new enough ffmpeg +- gst-libav: 1.24.11: Fails to build with minimum supported ffmpeg version + +gst-rtsp-server + +- No changes + +gstreamer-vaapi + +- No changes + +gstreamer-sharp + +- No changes + +gst-omx + +- No changes + +gst-python + +- No changes + +gst-editing-services + +- ges: Fix Python library name fetching on Windows + +gst-devtools, gst-validate + gst-integration-testsuites + +- No changes + +gst-examples + +- No changes + +Development build environment + +- No changes + +Cerbero build tool and packaging changes in 1.24.12 + +- cmake: Support using ccache if enabled + +Contributors to 1.24.12 + +Adrian Perez de Castro, Alan Coopersmith, Alexander Slobodeniuk, Andoni Morales Alastruey, Andrew Yooeun Chun, Brad Hards, +Carlos Bentzen, Colin Kinloch, Edward Hervey, François Laignel, Guillaume Desmottes, Jochen Henneberg, Jordan Yelloz, L. E. +Segovia, Monty C, Nirbheek Chauhan, Philippe Normand, Piotr Brzeziński, Rares Branici, Samuel Thibault, Sebastian Dröge, Silvio +Lazzeretti, Tim-Philipp Müller, Tomas Granath, Will Miller, + +… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all! + +List of merge requests and issues fixed in 1.24.12 + +- List of Merge Requests applied in 1.24.12 +- List of Issues fixed in 1.24.12 + Schedule for 1.26 Our next major feature release will be 1.26, and 1.25 will be the unstable development version leading up to the stable 1.26
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/RELEASE -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/RELEASE
Changed
@@ -1,4 +1,4 @@ -This is GStreamer gst-plugins-bad 1.24.11. +This is GStreamer gst-plugins-bad 1.24.12. 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.24.11.tar.xz/ext/gtk/meson.build -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/ext/gtk/meson.build
Changed
@@ -1,3 +1,7 @@ +if not use_wayland + subdir_done() +endif + gtkwayland_sources = 'gstplugin.c', 'gstgtkutils.c', @@ -9,7 +13,7 @@ gtk_dep = dependency('gtk+-3.0', required : get_option('gtk3')) gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : get_option('gtk3')) -if gtk_dep.found() and gtk_wayland_dep.found() and use_wayland +if gtk_dep.found() and gtk_wayland_dep.found() gstgtkwayland = library('gstgtkwayland', gtkwayland_sources, c_args : gst_plugins_bad_args + '-DGST_USE_UNSTABLE_API',
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/ext/webrtc/gstwebrtcbin.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/ext/webrtc/gstwebrtcbin.c
Changed
@@ -3560,6 +3560,7 @@ for (i = 0; i < gst_caps_get_size (caps); i++) { GstCaps *format = gst_caps_new_empty (); GstStructure *s = gst_structure_copy (gst_caps_get_structure (caps, i)); + gint media_pt; if (i == 0) { gst_structure_foreach (extmap, (GstStructureForeachFunc) _copy_field, s); @@ -3582,6 +3583,9 @@ return FALSE; } + if (gst_structure_get_int (s, "payload", &media_pt)) + find_or_create_payload_map_for_media_pt (media_mapping, media_pt); + gst_caps_unref (format); } @@ -3594,10 +3598,7 @@ guint rtx_target_ssrc = -1; gint media_pt; - if (gst_structure_get_int (s, "payload", &media_pt) && - webrtc->bundle_policy == GST_WEBRTC_BUNDLE_POLICY_NONE) - find_or_create_payload_map_for_media_pt (media_mapping, media_pt); - + gst_structure_get_int (s, "payload", &media_pt); rtx_target_pt = media_pt; if (!gst_structure_get_int (s, "clock-rate", &clockrate))
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/ext/wpe/gstwpethreadedview.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/ext/wpe/gstwpethreadedview.cpp
Changed
@@ -711,6 +711,37 @@ }); } +void GstWPEThreadedView::clearBuffers() +{ + bool dispatchFrameComplete = false; + { + GMutexHolder lock(images_mutex); + + if (shm.pending) { + auto meta = gst_buffer_get_video_meta(shm.pending); + if (static_cast<int>(meta->width) != wpe.width || static_cast<int>(meta->height) != wpe.height) { + gst_clear_buffer(&shm.pending); + dispatchFrameComplete = true; + } + } + + if (shm.committed) { + auto meta = gst_buffer_get_video_meta(shm.committed); + if (static_cast<int>(meta->width) != wpe.width || static_cast<int>(meta->height) != wpe.height) { + gst_clear_buffer(&shm.committed); + dispatchFrameComplete = true; + } + } + } + + if (dispatchFrameComplete) { + frameComplete(); + // Wait until the next SHM buffer has been received. + threading.ready = false; + waitLoadCompletion(); + } +} + void GstWPEThreadedView::frameComplete() { GST_TRACE("frame complete");
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/ext/wpe/gstwpethreadedview.h -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/ext/wpe/gstwpethreadedview.h
Changed
@@ -45,6 +45,7 @@ void loadData(GBytes*); void runJavascript(const gchar*); void setDrawBackground(gboolean); + void clearBuffers(); GstEGLImage* image(); GstBuffer* buffer();
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/ext/wpe/gstwpevideosrc.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/ext/wpe/gstwpevideosrc.cpp
Changed
@@ -174,6 +174,17 @@ GST_PAD_ALWAYS, GST_STATIC_CAPS (WPE_VIDEO_SRC_CAPS)); +#define GST_ELEMENT_PROGRESS(el, type, code, text) \ + G_STMT_START { \ + gchar *__txt = _gst_element_error_printf text; \ + gst_element_post_message ( \ + GST_ELEMENT_CAST (el), \ + gst_message_new_progress (GST_OBJECT_CAST (el), \ + GST_PROGRESS_TYPE_##type, code, __txt)); \ + g_free (__txt); \ + } \ + G_STMT_END + static GstFlowReturn gst_wpe_video_src_create (GstBaseSrc * bsrc, guint64 offset, guint length, GstBuffer ** buf) @@ -270,7 +281,6 @@ gl->BindTexture (GL_TEXTURE_2D, tex_id); gl->EGLImageTargetTexture2D (GL_TEXTURE_2D, gst_egl_image_get_image (locked_image)); - gl->Flush (); WPE_UNLOCK (src); return TRUE; } @@ -284,6 +294,7 @@ gboolean created_view = FALSE; GBytes *bytes; + GST_ELEMENT_PROGRESS (src, START, "open", ("Starting up")); GST_INFO_OBJECT (src, "Starting up"); WPE_LOCK (src); @@ -298,26 +309,37 @@ auto & thread = GstWPEContextThread::singleton (); if (!src->view) { - src->view = thread.createWPEView (src, context, display, + GST_ELEMENT_PROGRESS (src, CONTINUE, "open", ("Creating WPE WebView")); + src->view = + thread.createWPEView (src, context, display, GST_VIDEO_INFO_WIDTH (&base_src->out_info), GST_VIDEO_INFO_HEIGHT (&base_src->out_info)); created_view = TRUE; GST_DEBUG_OBJECT (src, "created view %p", src->view); + GST_ELEMENT_PROGRESS (src, CONTINUE, "open", ("WPE WebView is ready")); } if (!src->view) { WPE_UNLOCK (src); + GST_ELEMENT_PROGRESS (src, ERROR, "open", + ("WPEBackend-FDO EGL display initialisation failed")); GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("WPEBackend-FDO EGL display initialisation failed"), (NULL)); return FALSE; } + if (!created_view) { + GST_INFO_OBJECT (src, "Re-starting after re-negotiation, clearing cached SHM buffers"); + src->view->clearBuffers (); + } + GST_OBJECT_LOCK (src); bytes = src->bytes; src->bytes = NULL; GST_OBJECT_UNLOCK (src); if (bytes != NULL) { + GST_ELEMENT_PROGRESS (src, CONTINUE, "open", ("Loading HTML data")); src->view->loadData (bytes); g_bytes_unref (bytes); } @@ -326,6 +348,7 @@ src->n_frames = 0; } WPE_UNLOCK (src); + GST_ELEMENT_PROGRESS (src, COMPLETE, "open", ("Ready to produce buffers")); return TRUE; } @@ -797,6 +820,42 @@ return ret; } +static gboolean +gst_wpe_video_src_query (GstBaseSrc * base_src, GstQuery * query) +{ + GstWpeVideoSrc *src = GST_WPE_VIDEO_SRC (base_src); + GstGLBaseSrc *gl_src = GST_GL_BASE_SRC (base_src); + gboolean ret = FALSE; + + switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_LATENCY:{ + GST_OBJECT_LOCK (src); + if (gl_src->out_info.fps_n > 0) { + GstClockTime latency; + + latency = gst_util_uint64_scale (GST_SECOND, gl_src->out_info.fps_d, + gl_src->out_info.fps_n); + GST_OBJECT_UNLOCK (src); + gst_query_set_latency (query, + gst_base_src_is_live (GST_BASE_SRC_CAST (src)), latency, + GST_CLOCK_TIME_NONE); + GST_DEBUG_OBJECT (src, "Reporting latency of %" GST_TIME_FORMAT, + GST_TIME_ARGS (latency)); + ret = TRUE; + } else { + GST_OBJECT_UNLOCK (src); + } + + break; + } + default: + ret = GST_CALL_PARENT_WITH_DEFAULT (GST_BASE_SRC_CLASS, query, + (base_src, query), FALSE); + break; + } + return ret; +} + static void gst_wpe_video_src_init (GstWpeVideoSrc * src) { @@ -859,6 +918,7 @@ GST_DEBUG_FUNCPTR (gst_wpe_video_src_decide_allocation); base_src_class->stop = GST_DEBUG_FUNCPTR (gst_wpe_video_src_stop); base_src_class->event = GST_DEBUG_FUNCPTR (gst_wpe_video_src_event); + base_src_class->query = GST_DEBUG_FUNCPTR (gst_wpe_video_src_query); gl_base_src_class->supported_gl_api = static_cast < GstGLAPI >
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst-libs/gst/codecparsers/gsth265bitwriter.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst-libs/gst/codecparsers/gsth265bitwriter.c
Changed
@@ -640,7 +640,6 @@ const guint8 *sl; const guint8 *default_sl; guint8 nextCoef; - gint8 coef_val; guint8 scaling_list_pred_matrix_id_delta; if (!_get_scaling_list_params (src_scaling_list, sizeId, matrixId, @@ -697,7 +696,7 @@ } for (i = 0; i < size; i++) { - coef_val = sli - nextCoef; + gint coef_val = sli - nextCoef; nextCoef = sli; if (coef_val > 127) {
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst-libs/gst/mpegts/gstmpegtssection.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst-libs/gst/mpegts/gstmpegtssection.c
Changed
@@ -1102,6 +1102,7 @@ case GST_MTS_TABLE_ID_SELECTION_INFORMATION: if (pid == 0x001f) return GST_MPEGTS_SECTION_SIT; + break; default: /* Handle ranges */ if (table_id >= GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_PRESENT &&
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst-libs/gst/mse/gstmsemediatype.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst-libs/gst/mse/gstmsemediatype.c
Changed
@@ -57,12 +57,6 @@ } static gboolean -is_ascii (const gchar c) -{ - return c > 0 && c <= G_MAXINT8; -} - -static gboolean is_eos (const gchar c) { return c == '\0'; @@ -135,8 +129,8 @@ g_return_val_if_fail (value != NULL, FALSE); const gchar *unparsed = *input; - char c = unparsed0; - if (!is_ascii (c)) { + gchar c = unparsed0; + if (!g_ascii_isprint (c)) { return FALSE; } @@ -160,7 +154,7 @@ } gchar c = (*input)0; - if (!is_ascii (c)) { + if (!g_ascii_isprint (c)) { return FALSE; }
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst-libs/gst/mse/gstsourcebuffer.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst-libs/gst/mse/gstsourcebuffer.c
Changed
@@ -1082,7 +1082,7 @@ /** * gst_source_buffer_set_append_window_start: * @self: #GstSourceBuffer instance - * @start: the append window end + * @start: the append window start * @error: (out) (optional) (nullable) (transfer full): the resulting error or `NULL` * * Modifies the current append window start of @self. If successful, samples @@ -1115,7 +1115,7 @@ return FALSE; } - if (start < 0 || start <= self->append_window_end) { + if (!GST_CLOCK_TIME_IS_VALID (start) || start <= self->append_window_end) { g_set_error (error, GST_MEDIA_SOURCE_ERROR, GST_MEDIA_SOURCE_ERROR_TYPE, "append window start must be between zero and append window end");
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst-libs/gst/wayland/gstwldisplay.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst-libs/gst/wayland/gstwldisplay.c
Changed
@@ -204,7 +204,7 @@ { GstWlDisplay *self = data; guint64 modifier = (guint64) modifier_hi << 32 | modifier_lo; - static gboolean table_header = TRUE; + static uint32_t last_format = 0; GstWlDisplayPrivate *priv = gst_wl_display_get_instance_private (self); @@ -220,14 +220,15 @@ if (fourcc == DRM_FORMAT_INVALID || modifier == DRM_FORMAT_MOD_INVALID) return; - if (table_header == TRUE) { + if (last_format == 0) { GST_INFO ("===== All DMA Formats With Modifiers ====="); GST_INFO ("| Gst Format | DRM Format |"); - table_header = FALSE; } - if (modifier == 0) + if (last_format != format) { GST_INFO ("|-----------------------------------------"); + last_format = format; + } GST_INFO ("| %-12s | %-23s |", (modifier == 0) ? gst_video_format_to_string (gst_format) : "",
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst-plugins-bad.doap -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst-plugins-bad.doap
Changed
@@ -35,6 +35,16 @@ <release> <Version> + <revision>1.24.12</revision> + <branch>1.24</branch> + <name></name> + <created>2025-01-29</created> + <file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.24.12.tar.xz" /> + </Version> + </release> + + <release> + <Version> <revision>1.24.11</revision> <branch>1.24</branch> <name></name>
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst/mpegtsdemux/mpegtspacketizer.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst/mpegtsdemux/mpegtspacketizer.c
Changed
@@ -2275,7 +2275,7 @@ pcrtable->base_time += diff; pcrtable->base_pcrtime += diff; } else if (pcrtable->base_pcrtime > tmp_pts - && pcrtable->base_pcrtime > PCR_GST_MAX_VALUE / 2) { + && pcrtable->base_pcrtime - tmp_pts > PCR_GST_MAX_VALUE / 2) { pcrtable->pcroffset += PCR_GST_MAX_VALUE; } }
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/gst/rist/gstristsink.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/gst/rist/gstristsink.c
Changed
@@ -909,6 +909,7 @@ * a NULL interface on a network without a default gateway */ if (gst_rist_sink_start (sink) == GST_STATE_CHANGE_FAILURE) return GST_STATE_CHANGE_FAILURE; + break; case GST_STATE_CHANGE_PAUSED_TO_READY: gst_rist_sink_disable_stats_interval (sink); break;
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/meson.build -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/meson.build
Changed
@@ -1,5 +1,5 @@ project('gst-plugins-bad', 'c', 'cpp', - version : '1.24.11', + version : '1.24.12', meson_version : '>= 1.1', default_options : 'warning_level=1', 'buildtype=debugoptimized' )
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/po/gst-plugins-bad-1.0.pot -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/po/gst-plugins-bad-1.0.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-bad-1.24.11\n" +"Project-Id-Version: gst-plugins-bad-1.24.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-06 19:52+0000\n" +"POT-Creation-Date: 2025-01-29 20:14+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/po/gst-plugins-bad.pot -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/po/gst-plugins-bad.pot
Changed
@@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: gst-plugins-bad-1.24.11\n" +"Project-Id-Version: gst-plugins-bad-1.24.12\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-06 19:52+0000\n" +"POT-Creation-Date: 2025-01-29 20:14+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/amfcodec/gstamfav1enc.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/amfcodec/gstamfav1enc.cpp
Changed
@@ -927,6 +927,7 @@ break; case PROP_PA_FRAME_SAD: update_bool (self, &self->pa.frame_sad, value); + break; case PROP_PA_LTR: update_bool (self, &self->pa.ltr, value); break;
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/amfcodec/gstamfh264enc.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/amfcodec/gstamfh264enc.cpp
Changed
@@ -1082,6 +1082,7 @@ break; case PROP_PA_FRAME_SAD: update_bool (self, &self->pa.frame_sad, value); + break; case PROP_PA_LTR: update_bool (self, &self->pa.ltr, value); break;
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/amfcodec/gstamfh265enc.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/amfcodec/gstamfh265enc.cpp
Changed
@@ -954,6 +954,7 @@ break; case PROP_PA_FRAME_SAD: update_bool (self, &self->pa.frame_sad, value); + break; case PROP_PA_LTR: update_bool (self, &self->pa.ltr, value); break;
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/applemedia/vtdec.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/applemedia/vtdec.c
Changed
@@ -303,7 +303,6 @@ GstVideoCodecFrame *frame; GstFlowReturn ret = GST_FLOW_OK; GstVideoDecoder *decoder = GST_VIDEO_DECODER (vtdec); - gboolean is_flushing; g_mutex_lock (&vtdec->queue_mutex); while (gst_queue_array_is_empty (vtdec->reorder_queue) @@ -321,6 +320,8 @@ * that we push in PTS order, or if we're draining/flushing */ while ((gst_queue_array_get_length (vtdec->reorder_queue) >= vtdec->dbp_size) || vtdec->is_flushing || vtdec->is_draining) { + gboolean is_flushing; + frame = gst_queue_array_pop_head (vtdec->reorder_queue); is_flushing = vtdec->is_flushing; g_cond_signal (&vtdec->queue_cond); @@ -358,7 +359,6 @@ g_mutex_unlock (&vtdec->queue_mutex); GST_VIDEO_DECODER_STREAM_LOCK (vtdec); - vtdec->downstream_ret = ret; /* We need to empty the queue immediately so that session_output_callback() * can push out the current buffer, otherwise it can deadlock */ @@ -370,10 +370,14 @@ gst_video_decoder_release_frame (decoder, frame); } + if (vtdec->is_flushing && ret == GST_FLOW_FLUSHING) { + ret = GST_FLOW_OK; + } g_cond_signal (&vtdec->queue_cond); g_mutex_unlock (&vtdec->queue_mutex); } + vtdec->downstream_ret = ret; GST_VIDEO_DECODER_STREAM_UNLOCK (vtdec); if (ret != GST_FLOW_OK) {
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/d3d12/hlsl/VSMain_color.hlsl -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/d3d12/hlsl/VSMain_color.hlsl
Changed
@@ -31,5 +31,5 @@ VS_OUTPUT VSMain_color (VS_INPUT input) { - return input; + return VS_OUTPUT(input); }
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/d3d12/hlsl/VSMain_coord.hlsl -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/d3d12/hlsl/VSMain_coord.hlsl
Changed
@@ -31,5 +31,5 @@ VS_OUTPUT VSMain_coord (VS_INPUT input) { - return input; + return VS_OUTPUT(input); }
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/d3d12/hlsl/VSMain_pos.hlsl -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/d3d12/hlsl/VSMain_pos.hlsl
Changed
@@ -29,5 +29,5 @@ VS_OUTPUT VSMain_pos (VS_INPUT input) { - return input; + return VS_OUTPUT(input); }
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/decklink/gstdecklinkaudiosink.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/decklink/gstdecklinkaudiosink.cpp
Changed
@@ -556,6 +556,12 @@ self->output->output->BeginAudioPreroll (); } + if (!self->output->videosink) { + GST_ERROR_OBJECT (self, + "Can't output audio without video sink on the same device"); + return GST_FLOW_ERROR; + } + video_sink = GST_DECKLINK_VIDEO_SINK (gst_object_ref (self->output->videosink)); @@ -926,7 +932,7 @@ GST_OBJECT_UNLOCK (self); g_mutex_lock (&self->output->lock); - if (self->output->start_scheduled_playback) + if (self->output->start_scheduled_playback && self->output->videosink) self->output->start_scheduled_playback (self->output->videosink); g_mutex_unlock (&self->output->lock); break;
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/decklink/gstdecklinkvideosink.cpp -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/decklink/gstdecklinkvideosink.cpp
Changed
@@ -921,7 +921,17 @@ if (self->mode == GST_DECKLINK_MODE_AUTO) { BMDPixelFormat f; - mode = gst_decklink_find_mode_and_format_for_caps (caps, &f); + GstCaps *tmp = gst_caps_copy (caps); + guint i, n = gst_caps_get_size (tmp); + + for (i = 0; i < n; i++) { + GstStructure *s = gst_caps_get_structure (tmp, 0); + gst_structure_remove_field (s, "framerate"); + } + + mode = gst_decklink_find_mode_and_format_for_caps (tmp, &f); + gst_caps_unref (tmp); + if (mode == NULL) { GST_WARNING_OBJECT (self, "Failed to find compatible mode for caps %" GST_PTR_FORMAT, caps); @@ -1025,7 +1035,10 @@ /* For output we support any framerate and only really care about timestamps */ gst_caps_map_in_place (mode_caps, reset_framerate, NULL); + GST_DEBUG_OBJECT (self, "Mode caps %" GST_PTR_FORMAT, mode_caps); + if (filter) { + GST_DEBUG_OBJECT (self, "Filter caps %" GST_PTR_FORMAT, filter); caps = gst_caps_intersect_full (filter, mode_caps, GST_CAPS_INTERSECT_FIRST); gst_caps_unref (mode_caps); @@ -1033,6 +1046,8 @@ caps = mode_caps; } + GST_DEBUG_OBJECT (self, "Returning caps %" GST_PTR_FORMAT, caps); + return caps; } @@ -1577,9 +1592,12 @@ timestamp = GST_BUFFER_TIMESTAMP (buffer); duration = GST_BUFFER_DURATION (buffer); if (duration == GST_CLOCK_TIME_NONE) { - duration = - gst_util_uint64_scale_int (GST_SECOND, self->info.fps_d, - self->info.fps_n); + if (self->info.fps_n == 0) + duration = 0; + else + duration = + gst_util_uint64_scale_int (GST_SECOND, self->info.fps_d, + self->info.fps_n); } running_time = gst_segment_to_running_time (&GST_BASE_SINK_CAST (self)->segment,
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/sys/wasapi/gstwasapisink.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/sys/wasapi/gstwasapisink.c
Changed
@@ -616,7 +616,8 @@ HRESULT hr; gint16 *dst = NULL; DWORD dwWaitResult; - guint can_frames, have_frames, n_frames, write_len, written_len = 0; + gint can_frames; + guint have_frames, n_frames, write_len, written_len = 0; HANDLE event_handle2; event_handle0 = self->event_handle;
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/tests/check/elements/webrtcbin.c -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/tests/check/elements/webrtcbin.c
Changed
@@ -5964,6 +5964,49 @@ GST_END_TEST; +GST_START_TEST (test_video_rtx_no_duplicate_payloads) +{ + struct test_webrtc *t = test_webrtc_new (); + GstWebRTCRTPTransceiverDirection direction; + GstWebRTCRTPTransceiver *trans; + GstCaps *caps; + + VAL_SDP_INIT (no_duplicate_payloads, on_sdp_media_no_duplicate_payloads, + NULL, NULL); + guint media_format_count = { 3 }; + VAL_SDP_INIT (media_formats, on_sdp_media_count_formats, + media_format_count, &no_duplicate_payloads); + VAL_SDP_INIT (count, _count_num_sdp_media, GUINT_TO_POINTER (1), + &media_formats); + const gchar *expected_offer_setup = { "actpass", }; + VAL_SDP_INIT (offer_setup, on_sdp_media_setup, expected_offer_setup, &count); + const gchar *expected_offer_direction = { "sendrecv", }; + VAL_SDP_INIT (offer, on_sdp_media_direction, expected_offer_direction, + &offer_setup); + + t->on_negotiation_needed = NULL; + t->on_ice_candidate = NULL; + t->on_pad_added = _pad_added_fakesink; + + /* Setup sendrecv transceiver with VP8 and H264. + * The RTX's payload type shouldn't be 96 or 97 since those are already taken. */ + caps = gst_caps_from_string (VP8_RTP_CAPS (96) ";" H264_RTP_CAPS (97)); + direction = GST_WEBRTC_RTP_TRANSCEIVER_DIRECTION_SENDRECV; + g_signal_emit_by_name (t->webrtc1, "add-transceiver", direction, caps, + &trans); + gst_caps_unref (caps); + fail_unless (trans != NULL); + g_object_set (trans, "do-nack", TRUE, NULL); + gst_object_unref (trans); + + /* We don't really care about the answer in this test */ + test_validate_sdp (t, &offer, NULL); + + test_webrtc_free (t); +} + +GST_END_TEST; + static Suite * webrtcbin_suite (void) { @@ -6053,6 +6096,7 @@ "All datachannel tests are disabled. sctpenc %p, sctpdec %p", sctpenc, sctpdec); } + tcase_add_test (tc, test_video_rtx_no_duplicate_payloads); } else { GST_WARNING ("Some required elements were not found. " "All media tests are disabled. nicesrc %p, nicesink %p, "
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/tests/examples/gtk/meson.build -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/tests/examples/gtk/meson.build
Changed
@@ -1,4 +1,8 @@ -if gtk_dep.found() and gtk_wayland_dep.found() and use_wayland +if not use_wayland + subdir_done() +endif + +if gtk_dep.found() and gtk_wayland_dep.found() executable('gtkwaylandsink', 'gtkwaylandsink.c', extra_files: 'window.ui',
View file
_service:download_url:gst-plugins-bad-1.24.11.tar.xz/tests/examples/waylandsink/meson.build -> _service:download_url:gst-plugins-bad-1.24.12.tar.xz/tests/examples/waylandsink/meson.build
Changed
@@ -1,22 +1,24 @@ +if not use_wayland + subdir_done() +endif + gtk_dep = dependency('gtk+-3.0', required : get_option('examples')) gtk_wayland_dep = dependency('gtk+-wayland-3.0', required : get_option('examples')) -if use_wayland - if gtk_dep.found() and gtk_wayland_dep.found() - executable('waylandsink', - 'main.c', - extra_files: 'window.ui', - install: false, - include_directories : configinc, - dependencies : gtk_dep, gtk_wayland_dep, gst_dep, gstwayland_dep, - c_args : gst_plugins_bad_args + '-DGST_USE_UNSTABLE_API', - ) - endif - executable('wayland_threads', - 'wayland-threads.c', +if gtk_dep.found() and gtk_wayland_dep.found() + executable('waylandsink', + 'main.c', + extra_files: 'window.ui', install: false, include_directories : configinc, - dependencies : gst_dep, gstwayland_dep, wl_client_dep, + dependencies : gtk_dep, gtk_wayland_dep, gst_dep, gstwayland_dep, c_args : gst_plugins_bad_args + '-DGST_USE_UNSTABLE_API', ) endif +executable('wayland_threads', + 'wayland-threads.c', + install: false, + include_directories : configinc, + dependencies : gst_dep, gstwayland_dep, wl_client_dep, + c_args : gst_plugins_bad_args + '-DGST_USE_UNSTABLE_API', +)
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
.