=== release 1.26.0 === 2025-03-11 20:14:44 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * README.md: * RELEASE: * gst-plugins-bad.doap: * meson.build: Release 1.26.0 2025-02-21 18:20:06 +0100 Ruben Gonzalez <rgonzalez@fluendo.com> * sys/va/gstvacompositor.c: vacompositor: Add missing GST_VIDEO_CROP_META_API_TYPE Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8537> 2025-03-07 09:54:35 +0100 Carlo Caione <ccaione@baylibre.com> * sys/uvcgadget/uvc.c: uvcgadget: Properly implement GET_INFO control responses According to the UVC 1.5 specification, section 4.1.2, the GET_INFO request must return a bitmap indicating supported operations for the control. Value 0x00 indicates that neither GET nor SET operations are supported. This patch fixes control handling in the UVC gadget implementation to properly respond to GET_INFO requests with the correct bitmap, allowing host systems to properly detect supported control operations (none in this case). The pipeline I'm using to test this is: gst-launch-1.0 videotestsrc ! uvcsink v4l2sink::device=/dev/video0 This is the equivalent of [0] but the difference is that we are now returning 0x00 instead of 0x03. Without this change the host in my case is unable to probe the UVC gadget at all, automatically disconnecting the device after a few seconds. Following is the log when the gadget is not working (without this fix): usb 1-1.2: new high-speed USB device number 73 using xhci_hcd usb 1-1.2: New USB device found, idVendor=0525, idProduct=a4a2, bcdDevice= 5.15 usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-1.2: Product: UVC Gadget usb 1-1.2: Manufacturer: localhost.localdomain usb 1-1.2: SerialNumber: 0123456789 usb 1-1.2: Found UVC 1.10 device UVC Gadget (0525:a4a2) usb 1-1.2: Failed to query (GET_INFO) UVC control 2 on unit 1: -110 (exp. 1). usb 1-1.2: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround. uvcvideo 1-1.2:1.1: Failed to query (129) UVC probe control : -71 (exp. 34). uvcvideo 1-1.2:1.1: Failed to initialize the device (-71). cdc_subset 1-1.2:1.0: probe with driver cdc_subset failed with error -22 cdc_subset 1-1.2:1.1: probe with driver cdc_subset failed with error -22 usb 1-1.2: USB disconnect, device number 73 With the fix the USB device is correctly probed: usb 1-1.2: new high-speed USB device number 88 using xhci_hcd usb 1-1.2: New USB device found, idVendor=0525, idProduct=a4a2, bcdDevice= 5.15 usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-1.2: Product: UVC Gadget usb 1-1.2: Manufacturer: localhost.localdomain usb 1-1.2: SerialNumber: 0123456789 usb 1-1.2: Found UVC 1.10 device UVC Gadget (0525:a4a2) [0] camera/uvc-gadget@0df9d3ad Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8572> 2025-03-06 10:22:00 +0100 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2decoder.c: v4l2codecs: Fix caps leak after sorting caps gst_v4l2_format_sort_caps() create a new caps which need to be release to avoid leak. Co-authored-by: Robert Mader <robert.mader@posteo.de> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8583> 2025-03-04 11:04:56 +0100 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2codecav1dec.c: * sys/v4l2codecs/gstv4l2codech264dec.c: * sys/v4l2codecs/gstv4l2codech265dec.c: * sys/v4l2codecs/gstv4l2codecmpeg2dec.c: * sys/v4l2codecs/gstv4l2codecvp8dec.c: * sys/v4l2codecs/gstv4l2codecvp9dec.c: v4l2codecs: Release sink allocator when deciding allocation All decoders have the same design pattern in decide allocation and forgot to release sink allocator before allocating a new one. Fixing the memory leak by clearing sink allocator before creating the new one. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8583> 2025-03-04 11:02:16 +0100 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2codecallocator.c: v4l2codecs: allocator: Fix buffers leak when using remove buffers When removing buffers from v4l2 queue do not forget to release the memory on gstreamer side. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8583> 2025-03-07 01:09:23 +0900 Seungha Yang <seungha@centricular.com> * ext/closedcaption/gsth264ccextractor.c: * ext/closedcaption/gsth265ccextractor.c: h264ccextractor,h265ccextractor: Do not resend caps per output buffer Send caps event only when it's required Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4281 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8596> 2025-03-06 11:24:28 +0100 Pablo GarcÃa <pgarcia@fluendo.com> * ext/curl/gstcurlbasesink.c: * ext/curl/gstcurlfilesink.c: * ext/curl/gstcurlftpsink.c: * ext/curl/gstcurlhttpsink.c: * ext/curl/gstcurlsmtpsink.c: * ext/curl/gstcurltlssink.c: curl: replace #if with #ifdef (part 2) Continuation of 47d1262402c81a9054e618052deeff7414b4f75d, that is not enough. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8595> 2025-03-03 11:30:38 +0100 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkimagememory.c: * gst-libs/gst/vulkan/gstvkoperation.c: vulkan/operation: fix timeline semaphore extension detection As for synchronization2, the timeline semaphore has been been promoted in 1.2 and does not have to be enabled explicitely. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554> 2025-03-03 12:59:02 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkoperation.c: vulkan/operation: fix synchronization2 extension detection The synchronization2 extension is a core part of Vulkan 1.3. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554> 2025-02-25 21:22:32 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkdevice.c: vulkan/device: only enable relevant extensions Extensions can have a minimum set of dependencies (e.g. API version) and may also be promoted to core in a later version. Don't explicitly enable extensions that fail to meet their requirements or that have been promoted to the core API. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554> 2025-02-25 21:17:57 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkoperation.c: vulkan/operation: retrieve function pointers directly from the device The instance API version supported may not be of the same version supported by the device. It is possible that the function that is returned may be non-0 but not functional due to the requested API version of the instance limiting the availability of calling the returned function. Can be reproduced by running a pipeline with GST_VULKAN_INSTANCE_API_VERSION=1.1 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554> 2025-02-25 21:04:35 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkinstance.c: vulkan/instance: allow the requested api version to be larger than the supported Since Vulkan 1.1, the requested API version is the maximum API version that the application is expecting to use. It is also possible for individual devices (backed by potentially different drivers) may support a higher or lower API version than the instance. Both cases (higher and lower) should be supported and as such, it is not an error to request an API version that is larger than the instance supported API version. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554> 2025-02-25 20:57:15 +1100 Matthew Waters <matthew@centricular.com> * ext/vulkan/gstvulkan.c: vulkan: plugin: add debug for why an instance fails to open Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554> 2025-02-25 20:55:09 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkformat.c: * gst-libs/gst/vulkan/gstvkformat.h: * gst-libs/gst/vulkan/gstvkimagebufferpool.c: * tests/check/libs/vkformat.c: vkformat: fix format_from_video_info_2 to actually runtime check versions and extensions If the vulkan plugin was compiled against a newer version than the supported vulkan runtime instance or device, then it was possible for format retrieval to fail. Failure was due to unconditionally using newer extensions and features without runtime checking them. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554> 2025-02-25 20:09:48 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkdecoder-private.c: * gst-libs/gst/vulkan/gstvkinstance.c: * gst-libs/gst/vulkan/gstvkinstance.h: * gst-libs/gst/vulkan/gstvkphysicaldevice.c: * tests/check/libs/vkdevice.c: vulkan: fix device related API version checks The API version exposed by a particular device can be completely different from what is exported by the parent instance. Since Vulkan 1.1 it is also possible to use newer device API than supported by the instance API version (with the appropriate version checks). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554> 2025-02-25 14:57:33 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkphysicaldevice.c: * gst-libs/gst/vulkan/gstvkphysicaldevice.h: * tests/check/libs/vkdevice.c: vulkan/physicaldevice: add methods for retrieving and checking against an API version Most version checks should actually be done against the device API version and not the instance API version. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8554> 2025-03-05 11:07:38 +0100 Pablo GarcÃa <pgarcia@fluendo.com> * ext/curl/gstcurlbasesink.c: * ext/curl/gstcurlfilesink.c: * ext/curl/gstcurlftpsink.c: * ext/curl/gstcurlhttpsink.c: * ext/curl/gstcurlsmtpsink.c: * ext/curl/gstcurltlssink.c: curl: replace #if with #ifdef Using #if instead of #ifdef was causing some issues when cross-compiling, like: ../ext/curl/gstcurlsmtpsink.c:54:5: error: "HAVE_SYS_SOCKET_H" is not defined, evaluates to 0 [-Werror=undef] 54 | #if HAVE_SYS_SOCKET_H Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8589> 2025-03-05 13:29:20 +0100 Pablo GarcÃa <pgarcia@fluendo.com> * ext/curl/gstcurlbasesink.c: * ext/curl/gstcurlfilesink.c: * ext/curl/gstcurlftpsink.c: * ext/curl/gstcurlhttpsink.c: * ext/curl/gstcurlhttpsrc.h: * ext/curl/gstcurlsftpsink.c: * ext/curl/gstcurlsmtpsink.c: * ext/curl/gstcurlsshsink.c: * ext/curl/gstcurltlssink.c: curl: remove unnecesary reference to unistd.h Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8589> 2025-02-21 16:24:58 -0600 Christopher Degawa <ccom@randomderp.com> * docs/plugins/gst_plugins_cache.json: * ext/svtav1/gstsvtav1enc.c: svtav1enc: update to use SVT-AV1 3.0.0 API changes Signed-off-by: Christopher Degawa <ccom@randomderp.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8539> 2025-03-04 14:33:29 +0100 Branko Subasic <branko@axis.com> * ext/voamrwbenc/meson.build: voamrwbenc: Do not install anything unless dependency found If the dependency for the plugin is not found then nothing should be installed, neither the element nor documentation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8586> 2025-03-04 22:08:46 +0100 Carlos Bentzen <cadubentzen@igalia.com> * gst/videoparsers/gsth266parse.c: h266parse: clear cache values with memset Fixes a stack overflow on Windows/MSVC. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8588> 2025-03-04 15:01:24 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/opencv/meson.build: * gst-libs/gst/opencv/meson.build: meson: Replace disabler dependencies with not-found dependencies If a plugin gets disabled due to a `disabler()` dependency, the plugin docs build itself will get disabled because `all_plugins_paths` will become a disabler. This was actually happening with opencv on systems that don't have opencv available, and could happen with libsoup too if the build files change in the future. Let's avoid wasting hours of debugging for people. A not-found dependency has the same effect. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8582> 2024-12-17 20:48:46 +0100 Stéphane Cerveau <scerveau@igalia.com> * tests/check/elements/dashsink.c: * tests/check/meson.build: tests: add dashsink unit test Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7916> 2024-12-20 14:54:01 +0100 Stéphane Cerveau <scerveau@igalia.com> * ext/dash/gstdashsink.c: dashsink: use gst_dash_sink_reset To be able to use the properties properly, the element should be reset by gst_dash_sink_reset during the state change from READY_PAUSED and PAUSED_READY. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7916> 2024-12-19 18:22:06 +0100 Stéphane Cerveau <scerveau@igalia.com> * ext/dash/gstdashsink.c: dashsink: send element message on event On new mpd update and new segment written, send an element message to signal the event. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7916> 2024-11-18 12:26:25 +0100 Stéphane Cerveau <scerveau@igalia.com> * docs/plugins/gst_plugins_cache.json: * ext/dash/gstdashsink.c: dashsink: cleanup the teardown process The stream was keeping a reference to the sink, preventing it to be removed properly by the pipleline bin. Clean up and simplify the code to get the stream from the pad. Add more mutex protection against add/remove requested pad. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7916> 2025-02-28 13:06:34 -0300 Denis Yuji Shimizu <denis.shimizu@collabora.com> * ext/analyticsoverlay/gstobjectdetectionoverlay.c: analytics: objectdetectionoverlay: improve event handling This change ensures that the `GST_EVENT_EOS`, `GST_EVENT_FLUSH_START` and `GST_EVENT_FLUSH_STOP` events are forwarded to the sink downstream. The logging message for `GST_EVENT_FLUSH_START` has also been fixed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8576> 2025-02-28 14:22:07 +0900 Dongyun Seo <dongyun.seo@lge.com> * ext/soundtouch/gstpitch.cc: pitch: fix build error fix build error due to sound integer sample caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8570> 2025-02-28 11:29:56 +0900 Elliot Chen <elliot.chen@nxp.com> * gst-libs/gst/play/gstplay.c: gstplay: support disabling the selected track at startup In some cases, need to disable some type tracks at startup before receiving the stream collection message. And fix printing error log in this case. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8568> 2025-02-26 10:39:06 +0100 Robert Mader <robert.mader@collabora.com> * tests/examples/waylandsink/main.c: waylandsink/demo: Use playbin3 instead of playbin Video looping currently does not work reliably with the later and playbin3 is generally considered the better choice. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8561> 2025-02-21 19:00:42 -0500 Olivier Crête <olivier.crete@collabora.com> * ext/avtp/gstavtpsrc.c: * ext/avtp/gstavtpsrc.h: * ext/avtp/meson.build: avtpsrc: Use GSocket to have cancellable wait Otherwise it would block forever when there is no sender. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8550> 2025-02-21 08:37:03 +0100 Roberto Viola <rviola@vicomtech.org> * ext/dash/gstmpdperiodnode.c: dashsink: fix period duration in dynamic MPD Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8531> 2025-02-21 09:35:37 +0800 Qian Hu (胡骞) <qian.hu@mediatek.com> * gst-libs/gst/wayland/gstwldisplay.c: wayland: leverage unified object destruction for wl_callback This patch refactors gst_wl_display_callback_destroy() to use the recently introduced gst_wl_display_object_destroy() helper. Previously, the function manually handled wl_callback destruction with explicit lock/unlock calls and direct invocation of wl_callback_destroy(). Switching to gst_wl_display_object_destroy() unifies the destruction process across similar objects, reducing code duplication and potential errors. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8242> 2025-02-24 09:53:48 +0800 Qian Hu (胡骞) <qian.hu@mediatek.com> * gst-libs/gst/wayland/gstwlwindow.c: wayland: fix crash issue during stop flow when received xdg config event fron wayland server, gst_wl_display_thread_run will call handle_xdg_surface_configure which protected by priv->sync_mutex. and in handle_xdg_surface_configure, configure_mutex also is locked but if waylandsink set state from paused to ready, that will dispose wlwindow, which will try to clear configure_mutex, and try to destroy xdg_surface, that do not proteced by anything. so, problem is: 1) if clear configure_mutex(with locked state), clear lock will abort 2) after xdg_surface destroy, handle_xdg_surface_config may still call ack_configure, that will lead wayland server go wrong so, this patch updates gst_wl_window_finalize to use the new destruction function for xdg_toplevel and xdg_surface, ensuring all destruction operations are properly synchronized. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8242> 2025-02-24 09:43:12 +0800 Qian Hu (胡骞) <qian.hu@mediatek.com> * gst-libs/gst/wayland/gstwldisplay.c: * gst-libs/gst/wayland/gstwldisplay.h: wayland: add synchronized object destruction function Introduces a new generic destruction function gst_wl_display_object_destroy that ensures all destruction operations are protected by sync_mutex. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8242> 2025-02-23 23:52:57 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development after 1.25.90 === release 1.25.90 === 2025-02-23 23:44:10 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-bad.doap: * meson.build: Release 1.25.90 2025-02-23 16:56:25 +0000 Tim-Philipp Müller <tim@centricular.com> * po/hr.po: * po/pt_BR.po: gst-plugins-bad: update translations 2025-02-21 20:11:09 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/plugin.c: nvcodec: Register all elements if CUDA kernel is precompiled GstCudaConverter dependent element can work if CUDA kernel is precompiled even if runtime compiler library is not found Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8536> 2025-02-21 19:18:01 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvjpegenc.cpp: * sys/nvcodec/kernel/gstnvjpegenc.cu: * sys/nvcodec/kernel/meson.build: nvjpegenc: Add support for kernel precompile Port to CUDA precompile/cache Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8536> 2025-02-21 18:40:21 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/gstcudanvrtc-private.h: * gst-libs/gst/cuda/gstcudanvrtc.cpp: * sys/nvcodec/gstcudaconverter.cpp: * sys/nvcodec/meson.build: cudaconverter: Add support for kernel precompile and cache Port to precompile/cache approach Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8536> 2025-02-20 15:26:37 +0900 Seungha Yang <seungha@centricular.com> * meson_options.txt: * sys/nvcodec/kernel/collect_ptx_headers.py: * sys/nvcodec/kernel/gstcudaconverter-unpack.cu: * sys/nvcodec/kernel/gstcudaconverter.cu: * sys/nvcodec/kernel/meson.build: * sys/nvcodec/meson.build: nvcodec: Add support for CUDA kernel precompile Enable build time CUDA kernel compile if nvcc is detected. Precompile is disabled by default and controlled by "nvcodec-cuda-precompile" build option. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8536> 2025-02-19 08:55:44 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/plugins/gst_plugins_cache.json: * sys/v4l2codecs/gstv4l2decoder.c: * sys/v4l2codecs/gstv4l2format.c: * sys/v4l2codecs/gstv4l2format.h: v4l2codecs: Sort formats to avoid quality lost When the driver prefered format is not picked by downstream, the decoders needs to select another format from the list. The selection was currently unsorted, resulting in 10bit data often being stripped to 8bit. To solve this, reorder the formats in an HW preference order. This order deviates slightly from the preferred order in libgstvideo. This is to prefer bandwidth saving over better CPU alignment. As an example NV15 is prefered over P010. We also prefer tiled over linear. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8522> 2025-02-19 08:53:13 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/plugins/gst_plugins_cache.json: * sys/kms/gstkmsutils.c: kmssink: Add NV12_10LE40 / NV15 support This is needed until kmssink is ported to use libgstvideo mapping. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8525> 2025-02-20 22:20:48 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: closedcaption: Add h264/h265 ccinserter docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8496> 2025-02-17 20:47:35 +0900 Seungha Yang <seungha@centricular.com> * ext/closedcaption/gstclosedcaption.c: * ext/closedcaption/gsth265ccinserter.c: * ext/closedcaption/gsth265ccinserter.h: * ext/closedcaption/gsth265reorder.c: * ext/closedcaption/gsth265reorder.h: * ext/closedcaption/meson.build: closedcaption: Add h265ccinserter element Adding new element for inserting closed caption SEI to H.265 stream Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8496> 2025-02-20 22:04:34 +0900 Seungha Yang <seungha@centricular.com> * ext/closedcaption/gstclosedcaption.c: * ext/closedcaption/gstcodecccinserter.c: * ext/closedcaption/gstcodecccinserter.h: * ext/closedcaption/gsth264ccinserter.c: * ext/closedcaption/gsth264ccinserter.h: * ext/closedcaption/gsth264reorder.c: * ext/closedcaption/gsth264reorder.h: * ext/closedcaption/meson.build: closedcaption: Add h264ccinserter element Adding new element for inserting closed caption SEI to H.264 stream Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8496> 2025-02-15 20:17:59 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/codecs/gsth264picture-private.h: h264picture: Export private method symbols That method will be used by plugin Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8496> 2025-02-19 18:34:41 +0900 Seungha Yang <seungha@centricular.com> * tests/examples/cuda/meson.build: * tests/examples/cuda/nvenc-extern-pool.c: examples: Add example for nvenc extern-cuda-bufferpool property Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8516> 2025-02-19 17:46:34 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: * sys/nvcodec/gstnvencobject.cpp: * sys/nvcodec/gstnvencobject.h: * sys/nvcodec/gstnvencoder.cpp: nvencoder: Add extern-cuda-bufferpool property Add new property to support application allocated GstCudaMemory. CUDA memory alloc/free is a global device synchronization point as if launching CUDA kernel on default CUDA stream. To avoid the global synchronization, we added stream-ordered allocation support which allocates CUDA memory asynchronously. However, NVENC does not allow registering the stream-ordered allocated memory. Thus encoder was allocating normal CUDA memory in case that input CUDA memory is stream-ordered type. In this commit, newly introduced property will allow application to provide encoder with GstCudaBufferPool. Application can preallocate sufficient amount of CUDA memory in advance to avoid global device synchronization while pipeline is running. For now, this pool is used only if input CUDA memory is allocated via stream-ordered-allocation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8516> 2025-02-19 15:38:08 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstcudaconverter.cpp: cudaconverter: Use stream ordered allocation if requested ... to avoid global device synchronization Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8516> 2025-02-19 14:47:10 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstcudaconverter.cpp: cudaconverter: Remove unnecessary CUDA memory allocation We can pass struct to kernel by value Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8516> 2025-02-13 15:30:04 +1100 Matthew Waters <matthew@centricular.com> * ext/vulkan/vkupload.c: vkupload: don't require that input memory count matches output memory count It can very easily not. e.g. videotestsrc ! video/x-raw,format=NV12 ! identity drop-allocation=true ! \ vulkanupload ! vulkancolorconvert ! vulkansink Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8530> 2025-02-18 01:33:40 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/closedcaption/gstclosedcaption.c: * ext/closedcaption/gsth265ccextractor.c: * ext/closedcaption/gsth265ccextractor.h: * ext/closedcaption/meson.build: closedcaption: Add h265ccextractor element This element will collect closed caption meta from H.265 stream and output caption buffers in display order Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8500> 2025-02-18 01:14:38 +0900 Seungha Yang <seungha@centricular.com> * ext/closedcaption/gsth264ccextractor.c: h264ccextractor: Port to GstVecDeque Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8500> 2025-02-18 10:39:24 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: mpegts: Rename un-namespaced REG_TO_UINT32 macro Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4226 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8506> 2025-02-12 10:37:09 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/mpegts/gst-atsc-section.c: * gst-libs/gst/mpegts/gst-dvb-descriptor.c: * gst-libs/gst/mpegts/gst-dvb-section.c: * gst-libs/gst/mpegts/gst-scte-section.c: * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: * gst-libs/gst/mpegts/gstmpegtssection.c: mpegts: Update annotations Specify whether the various functions can return a NULL value Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8466> 2024-12-09 17:42:18 +0100 Benjamin Gaignard <benjamin.gaignard@collabora.com> * docs/plugins/gst_plugins_cache.json: * gst/debugutils/gstvideocodectestsink.c: debugutils: videocodectestsink: Add GBR_10LE as supported pixel format Add GBR_10LE in the list of supported format of the element. GBR_10LE is used as output format in Fluster ARGON tests suite. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8502> 2024-12-09 10:57:30 +0100 Benjamin Gaignard <benjamin.gaignard@collabora.com> * gst/videoparsers/gstav1parse.c: videoparsers: av1: Fix typo in debug log comsumed -> consumed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8502> 2024-12-06 14:13:22 +0100 Benjamin Gaignard <benjamin.gaignard@collabora.com> * gst/videoparsers/gstav1parse.c: videoparsers: av1: Allow av1parse to parse annexb streams Let's av1 parser do it job event it receives an annexb stream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8502> 2025-02-13 21:10:40 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkfence.c: vkfencecache: call parent release() only after resources have been removed The parent class will allow the handle to be reused at the end of the function. If we are still modifying the released fence, then another thread can acquire the fence while we are still clearing some of its data and produce a data race or a leaked fence depending on which thread wins. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8491> 2025-02-16 20:08:58 -0500 Olivier Crête <olivier.crete@collabora.com> * gst-libs/gst/analytics/gstanalyticsmeta.c: analyticsmeta: Make output struct annotation more explicit Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8489> 2025-02-16 20:07:48 -0500 Olivier Crête <olivier.crete@collabora.com> * gst-libs/gst/analytics/gstanalyticsmeta.c: analyticsmeta: Avoid crash when adding Mtd with NULL Mtd structure It's documented that you don't need to get the position of the Mtd when adding it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8489> 2025-02-16 21:30:42 +0100 Stéphane Cerveau <scerveau@igalia.com> * ext/vulkan/gstvulkan.c: vulkan: register always vulkansink elements vulkansink elements were enabled only if the video extensions were present which is breaking backward compatibility such as Android or ios. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8488> 2024-12-23 15:37:17 +0100 Tim-Philipp Müller <tim@centricular.com> * ext/srtp/gstsrtp.c: * ext/srtp/gstsrtp.h: * ext/srtp/gstsrtpdec.c: * ext/srtp/gstsrtpdec.h: * ext/srtp/gstsrtpenc.c: * ext/srtp/meson.build: srtp: require libsrtp2, drop support for libsrtp1 Even old old debian stable from 2019 ships with a recent-enough libsrtp2 version. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8205> 2025-02-16 14:09:49 +0900 Seungha Yang <seungha@centricular.com> * ext/closedcaption/gstcccombiner.c: cccombiner: Fix critical warnings gst_buffer_add_video_caption_meta: assertion 'data != NULL' failed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8486> 2025-02-16 14:36:08 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/play/gstplay.c: play: Fix annotations of `parse_missing_plugins()` API Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8487> 2025-02-15 15:44:14 +0000 Tim-Philipp Müller <tim@centricular.com> * ext/svtjpegxs/gstsvtjpegxsenc.c: svtjpegxsenc: fix copy'n'paste error in property registration Doesn't change anything in practice because the default value was set correctly in the instance init function. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8485> 2024-12-09 13:39:16 -0500 Arun Raghavan <arun@asymptotic.io> * ext/onnx/gstonnxclient.cpp: onnx: Allow generic well-known names for tensors This allows us to use the upstream version of the ssd_mobilenet model[1], and starts setting us up to allow some tensor names by convention if we want to add more decoders. [1] https://github.com/onnx/models/tree/main/validated/vision/object_detection_segmentation/ssd-mobilenetv1 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8117> 2025-02-14 14:10:25 +0100 Edward Hervey <edward@centricular.com> * gst/mpegtsdemux/mpegtspacketizer.c: mpegts: Fix PCR Discontinuity handling for HLS We can only reliably use the adaptation field discontinuity flag if our input is properly timestamped on a regular basis (ex: UDP, DVB, RTP, etc...). For HLS and other systems which don't provide that information, we should not reset the base observations. Otherwise we would potentially end up picking a reference time from a long time ago. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8480> 2024-04-09 21:31:07 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/closedcaption/gstclosedcaption.c: * ext/closedcaption/gsth264ccextractor.c: * ext/closedcaption/gsth264ccextractor.h: * ext/closedcaption/meson.build: closedcaption: Add closed caption extractor element for H.264 stream Adding new h264ccextractor element. This element will extract closed caption meta from H.264 stream, and output in display order. For the frame reordering, this element is implemented as a subclass of h264decoder but without actual frame decoding. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6580> 2025-02-14 10:29:08 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * sys/applemedia/avfassetsrc.m: avfassetsrc: fix mutex leak Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8479> 2025-02-14 10:25:14 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * sys/applemedia/avfassetsrc.m: avfassetsrc: fix missing GObject dispose chainup Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8479> 2025-02-10 15:01:14 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * sys/applemedia/videotexturecache-gl.m: * sys/applemedia/videotexturecache-vulkan.mm: applemedia: fix chaining up GObject's constructed virtual method Fixes #4224 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8446> 2025-02-13 13:03:37 +0900 Seungha Yang <seungha@centricular.com> * ext/closedcaption/gstcccombiner.c: * ext/closedcaption/gstcccombiner.h: * tests/check/elements/cccombiner.c: cccombiner: Fix wrong caps and buffer ordering If there's queued video buffer, forwards new caps event once the queued video buffer is drained. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8473> 2025-02-13 10:04:16 +0800 James Oliver <james.oliver@icetana.ai> * sys/nvcodec/gstcudaipcserver.cpp: * sys/nvcodec/gstnvencobject.cpp: nvcodec: fix invalidated std::set::iterator usage As per the C++ standard, any usage of a std::set::iterator after it has been erased from the collection results in undefined behaviour. This has resulted in application crashes due to CUDA illegal address errors. This commit fixes the issue by copying and incrementing the iterator within any for-loops that also invoke std::set::erase. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8472> 2025-02-10 13:43:11 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * sys/d3d11/gstd3d11window_corewindow.cpp: * sys/d3d11/gstd3d11window_swapchainpanel.cpp: d3d11: fix chaining up GObject's constructed virtual method Fixes #4223 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8448> 2025-02-10 13:41:54 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * sys/wasapi/gstmmdeviceenumerator.cpp: wasapi: fix chaining up GObject's constructed virtual method Fixes #4223 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8448> 2025-02-10 13:41:19 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * sys/asio/gstasioobject.cpp: asio: fix chaining up GObject's constructed virtual method Fixes #4223 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8448> 2025-02-10 13:40:24 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * gst-libs/gst/winrt/gstwinrtdevicewatcher.cpp: winrt: fix chaining up GObject's constructed virtual method Fixes #4223 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8448> 2025-02-12 22:07:41 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter-builder.cpp: * gst-libs/gst/d3d12/gstd3d12converter-pack.cpp: * gst-libs/gst/d3d12/gstd3d12converter-unpack.cpp: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12mipgen.cpp: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12overlaycompositor.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12yadif.cpp: d3d12: Update root signature flags for old Windows10 Use root signature flags which are part of initial Direct3D12 release. Old OS does not understand newly introduced flags Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8469> 2025-02-12 16:51:24 +0100 wbartel <wilhelm.bartel@streamonkey.de> * gst-libs/gst/webrtc/webrtc-priv.h: * gst-libs/gst/webrtc/webrtc.h: * gst-libs/gst/webrtc/webrtc_fwd.h: webrtc: fix recursive G_BEGIN_DECLS and include missing sctptransport.h in webrtc.h Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8470> 2025-02-12 00:54:25 +0200 Mart Raudsepp <mart.raudsepp@globalm.media> * gst/mpegtsmux/gstbasetsmux.c: mpegtsmux: Fix error message for PID < 0x40 to be in the claimed base 16 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8463> 2025-02-12 00:53:24 +0200 Mart Raudsepp <mart.raudsepp@globalm.media> * gst/mpegtsmux/gstbasetsmux.c: mpegtsmux: Fix deadlock when requesting pad for PID < 0x40 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8463> 2025-02-11 00:02:50 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * sys/directshow/dshowdeviceprovider.cpp: dshowdeviceprovider: fix missing GObject vtable chainups Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8452> 2025-02-11 00:02:05 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * gst/transcode/gst-cpu-throttling-clock.c: cpu-throttling-clock: fix missing GObject vtable chainups Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8452> 2025-02-11 00:01:23 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * ext/wpe/wpe-extension/gstwpebusmsgforwarder.c: wpebusmsgforwarder: fix missing GObject vtable chainups Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8452> 2025-02-11 00:00:42 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * ext/qroverlay/gstbaseqroverlay.c: baseqroverlay: fix missing GObject vtable chainups Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8452> 2025-02-11 00:00:23 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * ext/codec2json/gstav12json.c: * ext/codec2json/gsth2642json.c: * ext/codec2json/gsth2652json.c: * ext/codec2json/gstvp82json.c: codec2json: fix missing GObject vtable chainups Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8452> 2025-02-11 16:51:38 +0100 Robert Mader <robert.mader@collabora.com> * gst-libs/gst/wayland/gstwldisplay.c: wayland: Report correct modifiers Fixes: e0e7a11089 ("wayland: De-dupe filling caps format fields") Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8460> 2025-02-10 19:51:57 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12screencapturesrc.cpp: d3d12screencapturesrc: Fix infinite negotiation on resolution change Updates crop rect if previous capture got error. The error might result from resolution change. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8444> 2025-02-10 19:34:28 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12dxgicapture.cpp: d3d12screencapturesrc: Fix capturing rotated monitor Acquired and reconstructed frames will have different resolution if monitor is rotated. Use the copying logic of d3d11 implementation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8444> 2025-02-07 17:48:32 +0100 Carlos Bentzen <cadubentzen@igalia.com> * docs/plugins/gst_plugins_cache.json: * gst/mpegtsmux/gstbasetsmux.c: * gst/mpegtsmux/gstmpegtsmux.c: * gst/mpegtsmux/tsmux/tsmuxstream.c: * gst/mpegtsmux/tsmux/tsmuxstream.h: mpegtsmux: add support for VVC/H.266 video Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8435> 2025-02-06 09:11:14 +0100 Edward Hervey <edward@centricular.com> * gst/mpegtsdemux/mpegtspacketizer.c: * gst/mpegtsdemux/tsdemux.c: mpegts: Take into account adaptation field discont If the flag is set, there is an *expected* discontinuity: * For CC, we ignore the fact it's not contiguous * For PCR, we acknowledge the values aren't contiguous Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8420> 2025-01-24 13:53:36 -0500 Daniel Morin <daniel.morin@collabora.com> * ext/srt/gstsrtsink.c: * ext/srt/gstsrtsink.h: srtsink: filter stream-config already sent - Only sent buffer with GST_BUFFER_FLAG_HEADER if this buffer is not present in the streamheader Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8373> 2025-02-10 13:16:20 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * sys/kms/gstkmsallocator.c: kms: fix chaining up GObject's constructed virtual method Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416> 2025-02-10 13:15:34 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * gst-libs/gst/mse/gstmsesrc.c: msesrc: fix chaining up GObject's constructed virtual method Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416> 2025-02-06 11:40:55 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * gst-libs/gst/vulkan/gstvkphysicaldevice.c: vkphysicaldevice: fix chaining up GObject's constructed virtual method Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416> 2025-02-06 11:33:50 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * gst/mpegtsmux/gstbasetsmux.c: basetsmux: fix chaining up GObject's constructed virtual method Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416> 2025-02-06 11:28:16 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * gst/rtp/gstrtpsrc.c: rtpsrc: fix chaining up GObject's constructed virtual method Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416> 2024-11-04 18:49:32 +0100 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkutils.c: vkutils: update gst_vulkan_handle_set_context doc device is a GstVulkanDevice Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7011> 2024-06-11 17:25:51 +0200 Stéphane Cerveau <scerveau@igalia.com> * ext/vulkan/gstvulkan.c: * ext/vulkan/vksink.c: * ext/vulkan/vksink.h: vksink: allow multiple device registration As for decoders, the plugin can register multiple device present on the system. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7011> 2024-06-04 18:49:37 +0200 Stéphane Cerveau <scerveau@igalia.com> * ext/vulkan/gstvulkan.c: * ext/vulkan/gstvulkanelement.c: * ext/vulkan/gstvulkanelements.h: * ext/vulkan/vkh264dec.c: * ext/vulkan/vkh264dec.h: * ext/vulkan/vkh265dec.c: * ext/vulkan/vkh265dec.h: vkh26xdec: register multiple elements Register the multiple devices available on the system in separate features in the registry for the vulkan decoders. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7011> 2024-10-21 17:05:18 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2codecav1dec.c: v4l2codecs: av1: Allow inter-frames resolution change When the stream resolution change it is needed to negotiate a new pools and to update the caps. Resolution change could occurs on a new sequence or a new picture so move resolution change detection code in a common function. Only call streamoff if the resolution occur while decoding a key frame. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8064> 2024-10-21 17:03:00 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * gst-libs/gst/codecs/gstav1decoder.c: codecs: av1 decoder: Drain output buffers resolution change We must drain the pending output picture so that subclass can renegotiate the caps. Not doing so while still renegotiating would mean that the subclass would have to do an allocation query before pushing the caps. Pushing the caps now without this would also not work since these caps won't match the pending buffers format. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8064> 2025-02-03 12:46:29 +0000 Glyn Davies <glyn@solet.io> * gst/videoparsers/gsth264parse.c: h264parse: Force full timestamp on all timecode updates. Was invalid between midnight and 1am Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8401> 2025-02-09 17:47:32 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development after 1.25.50 === release 1.25.50 === 2025-02-09 17:35:17 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-bad.doap: * meson.build: Release 1.25.50 2025-02-08 16:53:57 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/opencv/meson.build: opencv: Fix pkgconfig dependency name and gstopencv_dep Broke in bbdf8f599633627d4727b4cab6274c6a2b486a81 Also print the prefix inside which we try to detect opencv's data dir. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8403> 2025-02-08 01:49:07 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/opencv/gsthanddetect.cpp: * gst-libs/gst/opencv/meson.build: opencv: Fix hand detect profile paths This is the same mechanism used by facedetect Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8403> 2024-12-13 09:07:48 +0000 Cheung Yik Pang <pang.cheung@harmonicinc.com> * sys/va/gstvavp8dec.c: va: Add VP8 alpha decode bin Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8180> 2024-10-29 12:40:04 +0800 Cheung Yik Pang <pang.cheung@harmonicinc.com> * sys/va/gstvavp9dec.c: va: Add VP9 alpha decode bin Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8180> 2024-10-29 12:39:39 +0800 Cheung Yik Pang <pang.cheung@harmonicinc.com> * sys/va/gstvacodecalphadecodebin.c: * sys/va/gstvacodecalphadecodebin.h: * sys/va/meson.build: va: Add codec alpha decode bin base class A VA-API decoder bin base class for codecs with alpha channel support. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8180> 2025-02-07 15:43:05 +0100 wbartel <wilhelm.bartel@streamonkey.de> * gst-libs/gst/webrtc/meson.build: webrtc: fix pkg-config missing sdp dependency Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8433> 2025-02-07 08:44:53 +0100 Guillaume Desmottes <guillaume.desmottes@onestream.live> * gst-libs/gst/codecs/meson.build: codecs: include gsth266decoder.h when building gir Will hopefully fix cerbero ci job. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8430> 2025-02-05 15:27:14 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/plugins/gst_plugins_cache.json: * sys/v4l2codecs/gstv4l2format.c: * sys/v4l2codecs/gstv4l2format.h: v4l2codecs: Add NV12_10LE40 / NV15 support NV15 is common format on RK platform and is that only uncompressed 10bit format the display controller on RK3588 supports. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8426> 2023-05-22 16:15:33 +0200 Kévin Commaille <zecakeh@tedomum.fr> * ext/zbar/gstzbar.c: * tests/check/elements/zbar.c: zbar: allow to get symbol as bytes It would be possible to get some binary symbols with a string, but if they contain NUL bytes, the string will be cut off. To fix this, provide the decoded symbol as a GBytes too. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4688> 2023-05-22 16:09:28 +0200 Kévin Commaille <zecakeh@tedomum.fr> * docs/plugins/gst_plugins_cache.json: * ext/zbar/gstzbar.c: * ext/zbar/gstzbar.h: * ext/zbar/meson.build: zbar: allow to enable binary mode Added in zbar 0.23.1, it is a mode that prevents zbar from trying to convert the binary data of QR codes to text by guessing the encoding. Add a property that changes the configuration of the zbar image scanner accordingly. <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4688> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4688> 2025-01-09 23:42:14 +0800 He Junyan <junyan.he@intel.com> * gst/videoparsers/gstav1parse.c: av1parse: Handle the padding OBU correctly The current av1parse can not find the edge of frame correctly if there is padding OBUs inside the stream. We now use a flag seen_non_padding to check whether we see some valid data after a data push. Then the padding OBUs will be the part of the new frame. We also refine the code logic to make the code more readable. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4044 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8269> 2025-02-05 17:10:16 +0100 Carlos Bentzen <cadubentzen@igalia.com> * gst/videoparsers/gsth266parse.c: * gst/videoparsers/gsth266parse.h: h266parse: clean up unused APS fields Since APS is always carried in-band, we don't need to keep the APS NALs around in the parser anymore. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359> 2025-01-31 00:26:38 +0100 Carlos Bentzen <cadubentzen@igalia.com> * gst-libs/gst/codecparsers/gsth266parser.c: h266parser: do not fail when extension flags are set For VPS, PPS, APS, OPI and DCI, the extension flags are the last syntax in the structures, and according to the spec, should be ignored if set to 1. Therefore, we can just ignore them rather than failing. This fixes a few failures in fluster, like in the PSEXT_A_Nokia_2 stream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359> 2025-01-24 12:11:28 +0100 Carlos Bentzen <cadubentzen@igalia.com> * tests/check/elements/h266parse.c: h266parse: add tests for vvc1 and vvi1 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359> 2025-01-24 12:10:05 +0100 Carlos Bentzen <cadubentzen@igalia.com> * docs/plugins/gst_plugins_cache.json: * gst/videoparsers/gsth266parse.c: h266parse: enable vvc1 and vvi1 stream formats Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359> 2025-01-24 12:07:21 +0100 Carlos Bentzen <cadubentzen@igalia.com> * gst/videoparsers/gsth266parse.c: h266parse: handle packetized frames Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359> 2025-02-05 14:17:21 +0100 Carlos Bentzen <cadubentzen@igalia.com> * gst/videoparsers/gsth266parse.c: h266parse: don't prepend APS NALs on IDR frames Instead, APS NALs can just be pushed an in-band NALs like PH and SEI. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359> 2025-01-24 12:21:35 +0100 Carlos Bentzen <cadubentzen@igalia.com> * gst/videoparsers/gsth266parse.c: h266parse: negotiate before handling codec_data NALs If we find VPS/SPS/PPS in codec_data and call gst_h266_parse_process_nal with them, we need to have negotiated before in order to correctly process them with flags like h266parse->transform set or not depending on the negotiation. This is important because in certain vvc1/vvi1 streams we may have correct codec_data but faulty parameter sets in the stream and we would want to push the parameter sets from codec_data first. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359> 2025-02-05 14:17:45 +0100 Carlos Bentzen <cadubentzen@igalia.com> * gst/videoparsers/gsth266parse.c: h266parse: parse codec_data Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359> 2025-01-24 11:46:38 +0100 Carlos Bentzen <cadubentzen@igalia.com> * gst/videoparsers/gsth266parse.c: h266parse: update IDR position in more cases The IDR position should be updated if we're processing an IDR frame or pushing codec NALs. Not only when picture_header_in_slice_header_flag is set. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359> 2025-01-24 11:37:10 +0100 Carlos Bentzen <cadubentzen@igalia.com> * gst/videoparsers/gsth266parse.c: h266parse: fix typos Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359> 2025-01-24 11:30:36 +0100 Carlos Bentzen <cadubentzen@igalia.com> * gst/videoparsers/gsth266parse.c: h266parse: implement make_codec_data implement serialization of codec_data containing VvcDecoderConfigurationRecord as defined in ISO/IEC 14996-15. The VPS/SPS/PPS NALs are added to the codec_data. APS NALs could be optionally included as well but will be pushed in-band instead, because: 1. Logic is easier that way. We'd have to filter out for PREFIX_APS only (SUFFIX_APS aren't allowed in codec_data). 2. APS NALs can also be sent for every non-keyframe slice, and often are, so just pushing them in-band makes more sense to have less to keep track and avoid possible duplicates. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359> 2025-01-24 11:17:50 +0100 Carlos Bentzen <cadubentzen@igalia.com> * gst-libs/gst/codecparsers/gsth266parser.c: * gst-libs/gst/codecparsers/gsth266parser.h: * tests/check/libs/h266parser.c: h266parser: add API to parse VVCDecoderConfigurationRecord VVCDecoderConfigurationRecord is present in ISOBMFF files carrying VVC/H.266 streams via the vvcC box, as defined in ISO/IEC 14496-15. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359> 2025-02-06 08:34:46 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/opencv/meson.build: opencv: imgcodecs.hpp is also needed to build the plugin Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8418> 2025-02-06 08:08:58 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/opencv/meson.build: * gst-libs/gst/opencv/meson.build: meson: Modernize opencv build definitions Use the fs module instead of using `run_command('test')`, simplify some indentation, fix dependency management Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8418> 2025-01-03 15:15:57 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/play/gstplay.c: * gst-libs/gst/play/gstplay.h: play: Distinguish missing plugin errors and include more details in error/warning messages Include the URI (and if possible) stream-id in the messages. These are provided by uridecodebin3 / decodebin3 in most cases but there is fallback code to guess them otherwise. For missing plugin errors also the installer details are included. The URI is included in all message types. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3547 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8236> 2025-02-06 23:28:13 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/nvdswrapper/gstnvdsdewarp.cpp: * ext/nvdswrapper/plugin.cpp: docs: Add nvdswrapper docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8425> 2024-12-23 11:47:26 +0100 Philippe Normand <philn@igalia.com> * ext/wpe/gstwpethreadedview.cpp: * ext/wpe/gstwpethreadedview.h: wpe: Reduce gpointer usage in ThreadedView Those gpointers were introduced when we had to support some old WPE API, no need for them anymore. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8413> 2025-02-03 12:25:34 +0100 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/plugin.c: docs: v4l2codecs: Add plugin index documentation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5555> 2023-10-25 16:28:43 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/plugins/gst_plugins_cache.json: doc: Push v4l2codecs documentation cache These are normally autogenerated for the platform GStreamer runs on, though it is convenient to have everything listed in the doc. This was created with the new GST_V4L2_CODEC_GEN_DOC=1 environment. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5555> 2025-01-30 16:27:36 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2codecalphadecodebin.c: * sys/v4l2codecs/gstv4l2codecalphadecodebin.h: * sys/v4l2codecs/gstv4l2codecav1dec.c: * sys/v4l2codecs/gstv4l2codech264dec.c: * sys/v4l2codecs/gstv4l2codech265dec.c: * sys/v4l2codecs/gstv4l2codecmpeg2dec.c: * sys/v4l2codecs/gstv4l2codecvp8dec.c: * sys/v4l2codecs/gstv4l2codecvp9dec.c: doc: v4l2codecs: Document all decoders Add the documentation blob and since marker for all decoders. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5555> 2025-01-30 23:05:58 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2codecalphadecodebin.c: * sys/v4l2codecs/gstv4l2codecav1dec.c: * sys/v4l2codecs/gstv4l2codech264dec.c: * sys/v4l2codecs/gstv4l2codech265dec.c: * sys/v4l2codecs/gstv4l2codecmpeg2dec.c: * sys/v4l2codecs/gstv4l2codecvp8dec.c: * sys/v4l2codecs/gstv4l2codecvp9dec.c: * sys/v4l2codecs/gstv4l2decoder.c: * sys/v4l2codecs/gstv4l2decoder.h: v4l2codecs: Remove uneeded per-codec abstract class That subclass was not needed and was causing issues wit doc generation. The only down side of removing it is that the decoder cast macro is no longer type safe. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5555> 2025-01-30 20:00:55 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2codecvp8dec.c: * sys/v4l2codecs/gstv4l2codecvp9dec.c: v4l2codecs: Add Hardware class to alpha decoders This was accidently omitted, this is needed wen filterting hardware codecs. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5555> 2023-12-14 15:48:43 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2codecalphadecodebin.c: * sys/v4l2codecs/gstv4l2codecalphadecodebin.h: v4l2codecs: Cleanup alpha decodebin class header Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5555> 2023-12-14 15:26:27 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2codecav1dec.c: * sys/v4l2codecs/gstv4l2codecav1dec.h: * sys/v4l2codecs/gstv4l2codech264dec.c: * sys/v4l2codecs/gstv4l2codech264dec.h: * sys/v4l2codecs/gstv4l2codech265dec.c: * sys/v4l2codecs/gstv4l2codech265dec.h: * sys/v4l2codecs/gstv4l2codecmpeg2dec.c: * sys/v4l2codecs/gstv4l2codecmpeg2dec.h: * sys/v4l2codecs/gstv4l2codecvp8dec.c: * sys/v4l2codecs/gstv4l2codecvp8dec.h: * sys/v4l2codecs/gstv4l2codecvp9dec.c: * sys/v4l2codecs/gstv4l2codecvp9dec.h: v4l2codecs: Don't needlessly expose decoder types We have explicit register functions and have no use for these types in other components. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5555> 2023-12-14 15:19:56 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2codecallocator.h: * sys/v4l2codecs/gstv4l2codecalphadecodebin.h: * sys/v4l2codecs/gstv4l2codecav1dec.h: * sys/v4l2codecs/gstv4l2codecdevice.h: * sys/v4l2codecs/gstv4l2codech264dec.h: * sys/v4l2codecs/gstv4l2codech265dec.h: * sys/v4l2codecs/gstv4l2codecmpeg2dec.h: * sys/v4l2codecs/gstv4l2codecpool.h: * sys/v4l2codecs/gstv4l2codecvp8dec.h: * sys/v4l2codecs/gstv4l2codecvp9dec.h: * sys/v4l2codecs/gstv4l2decoder.h: * sys/v4l2codecs/gstv4l2format.h: v4l2codecs: Use pragma once This is a nice cleanup and removes comment referring to D3D notably. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5555> 2023-10-24 17:07:54 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2codecav1dec.c: v4l2codecs: Enable AV1 kernel version check The uAPI finally got merged into 6.5. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5555> 2023-10-24 17:04:17 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2codecav1dec.c: * sys/v4l2codecs/gstv4l2codecdevice.c: * sys/v4l2codecs/gstv4l2codech264dec.c: * sys/v4l2codecs/gstv4l2codech265dec.c: * sys/v4l2codecs/gstv4l2codecmpeg2dec.c: * sys/v4l2codecs/gstv4l2codecvp8dec.c: * sys/v4l2codecs/gstv4l2codecvp9dec.c: * sys/v4l2codecs/gstv4l2decoder.c: * sys/v4l2codecs/gstv4l2decoder.h: v4l2codecs: Add a doc generation mode This is enabled through an env, it allow exposing all elements without the needed driver supports. This is useful to fill the documentation cache. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5555> 2025-02-03 14:09:16 +0100 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/plugins/gst_plugins_cache.json: * ext/gtk/gstgtkwaylandsink.c: * ext/wayland/gstwaylandsink.c: waylandsink: Prefer DMABuf over system memory Swap the template and caps query around to that the sink can describe a preference for DMAbuf over system memory. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8404> 2025-02-04 17:33:23 +0100 Stéphane Cerveau <scerveau@igalia.com> * tests/check/libs/vkvideoencodeh265.c: vkvideoencodeh265: fix PicOrderCntVal usage remove `pic_order_cnt` member variable of GstVulkanH265EncodeFrame and use always `pic_num` instead. Intialize first `pic_num` value in test_encoder_h265_i_p. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8408> 2025-02-04 16:10:38 +0100 Stéphane Cerveau <scerveau@igalia.com> * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkvideoencodeh26x: tests: set constant qp Set constant qp to 26 in between 0 and 51, the qp range for h264 and h265. minQp in case of ANV is 10 for h265 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8407> 2025-02-04 03:49:00 +0900 Seungha Yang <seungha@centricular.com> * sys/mediafoundation/meson.build: mediafoundation: Enable MinGW build Update MinGW toolchain in cerbero can support MediaFoundation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8406> 2025-02-04 05:27:40 +0900 Seungha Yang <seungha@centricular.com> * sys/mediafoundation/gstmfcapturedshow.cpp: * sys/mediafoundation/gstmftransform.cpp: * sys/mediafoundation/gstmfvideobuffer.cpp: * sys/mediafoundation/gstmfvideobuffer.h: * sys/mediafoundation/gstmfvideoencoder.cpp: mediafoundation: Use DEFINE_GUID instead of DECLSPEC_UUID MinGW will not define IID for custom COM object Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8406> 2025-02-04 04:14:40 +0900 Seungha Yang <seungha@centricular.com> * sys/mediafoundation/gstmfutils.h: mediafoundation: Fix GUID_NULL related MinGW build error Include cguid.h for GUID_NULL Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8406> 2025-02-04 04:09:02 +0900 Seungha Yang <seungha@centricular.com> * sys/mediafoundation/gstmfaacenc.cpp: * sys/mediafoundation/gstmfcapturedshow.cpp: * sys/mediafoundation/gstmfmp3enc.cpp: * sys/mediafoundation/gstmfsourceobject.cpp: * sys/mediafoundation/gstmfsourcereader.cpp: * sys/mediafoundation/gstmftransform.cpp: * sys/mediafoundation/gstmfutils.cpp: * sys/mediafoundation/gstmfvideobuffer.cpp: * sys/mediafoundation/gstmfvideobuffer.h: * sys/mediafoundation/gstmfvideoencoder.cpp: * sys/mediafoundation/gstmfvideosrc.cpp: * sys/mediafoundation/gstmfvp9enc.cpp: * sys/mediafoundation/plugin.cpp: mediafoundation: Fix various GCC warnings Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8406> 2024-06-28 09:32:20 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvabasedec.h: * sys/va/gstvah266dec.c: * sys/va/gstvah266dec.h: * sys/va/gstvaprofile.c: * sys/va/gstvaprofile.h: * sys/va/meson.build: * sys/va/plugin.c: va: Implement the VA h266 decoder Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5865> 2024-12-20 18:13:23 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/codecs/gsth266decoder.c: * gst-libs/gst/codecs/gsth266decoder.h: * gst-libs/gst/codecs/gsth266picture.c: * gst-libs/gst/codecs/gsth266picture.h: * gst-libs/gst/codecs/meson.build: codecs: Add the H266/VVC decoder base class Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5865> 2025-02-04 05:27:20 +0900 Seungha Yang <seungha@centricular.com> * sys/mediafoundation/gstwin32devicewatcher.cpp: mfdevice: Unregister device notification callback on stop ... as intended Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8405> 2025-02-04 03:55:55 +0900 Seungha Yang <seungha@centricular.com> * sys/mediafoundation/gstmfvideoencoder.cpp: mfvideoenc: Fix profile string check profile_str is not std::string. Use strcmp instead Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8405> 2025-02-04 02:52:51 +0900 Seungha Yang <seungha@centricular.com> * sys/mediafoundation/gstmfdevice.cpp: mfdevice: Fix memory leak Release resources on dispose() as intended Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8405> 2025-02-03 20:39:53 +0900 Seungha Yang <seungha@centricular.com> * sys/dwrite/meson.build: * sys/nvcodec/meson.build: * sys/qsv/meson.build: meson: Check d3d12video header for MinGW build Old MinGW toolchain does not ship the header Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8400> 2025-02-03 09:39:07 +0100 Sebastian Dröge <sebastian@centricular.com> * ext/closedcaption/gstceaccoverlay.c: cc708overlay: Deprecate element in favour of cea708overlay Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3459 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8397> 2025-02-02 19:00:26 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12mipgen.cpp: d3d12mipgen: Respect requested mip levels Don't waste GPU power by generating more levels than requested Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8394> 2025-02-02 00:55:07 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12mipgen.cpp: d3d12mipgen: Serialize root signature only once ... and reuse serialized blob Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8394> 2024-06-11 17:46:11 +0200 Ruben Gonzalez <rgonzalez@fluendo.com> * meson.build: meson: use nls option to ENABLE_NLS Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7017> 2023-09-29 18:14:52 +0200 Tim-Philipp Müller <tim@centricular.com> * tools/gst-app-maker: * tools/gst-element-maker: * tools/gst-project-maker: bad: tools: update gst-{app,element,project}-maker for new gst-indent Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5192> 2023-09-29 18:10:09 +0200 Tim-Philipp Müller <tim@centricular.com> * scripts/update-orc-dist-files.py: scripts: update update-orc-dist-files.py scripts for new gst-indent And fix python indentation with autopep8 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5192> 2025-01-31 22:06:53 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: d3d12converter: Fix SRV descriptor heap size Converter was allocating smaller size of descriptor heap than required size when auto-mipgen is enabled Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8391> 2025-01-22 23:01:40 +0900 Seungha Yang <seungha@centricular.com> * tests/examples/codecparsers/meson.build: * tests/examples/codecparsers/parse-h264-drop-frames.c: examples: Add h264parser example An example to show how to detect frame type using h264parser Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8338> 2025-01-29 19:37:39 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: mpegtsdescriptor: Add (transfer none) annotation to out parameter of parse_registration() Out parameters are (transfer full) by default. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8380> 2025-01-09 14:27:11 +0000 Colin Kinloch <colin.kinloch@collabora.com> * ext/gtk/gstgtkwaylandsink.c: * ext/wayland/gstwaylandsink.c: * gst-libs/gst/wayland/gstwldisplay.c: * gst-libs/gst/wayland/gstwldisplay.h: wayland: De-dupe filling caps format fields Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8268> 2025-01-29 09:31:54 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2format.c: v4l2codecs: format: Fix tiled stride with modifiers After a bit of back and forth, we figure-out that for backward compatibility we need to set the tile stride the way GStreamer defines it. Sinks such as glimagesink/waylandsink translate it back to the number of bytes representation used by Linux. The change in !7355 when the other way around, breaking tiled playback through waylandsink and glimagesink. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7892> 2025-01-10 11:29:44 +0000 Colin Kinloch <colin.kinloch@collabora.com> * ext/gtk/gstgtkwaylandsink.c: * ext/wayland/gstwaylandsink.c: * gst-libs/gst/wayland/gstwldisplay.c: * gst-libs/gst/wayland/gstwlvideoformat.c: * gst-libs/gst/wayland/gstwlvideoformat.h: wayland: Don't filter out unrecognised DRM formats There is no requirement for a base DRM format to be supported by libgstvideo in order to be uploaded to. The linux-dmabuf-v1 format events are DRM_FORMAT codes and don't need to be converted before use with `gst_video_dma_drm_fourcc_to_string`. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8279> 2025-01-27 18:55:26 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * ext/closedcaption/ccutils.c: * ext/closedcaption/ccutils.h: * ext/closedcaption/gstcccombiner.c: cccombiner: Restore QoS messaging Reimplement the QoS message generation that was lost together with the caption frame counting. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7996> 2025-01-23 15:34:14 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * docs/plugins/gst_plugins_cache.json: * ext/closedcaption/gstcccombiner.c: * ext/closedcaption/gstcccombiner.h: cccombiner: Clean up property mutability Most settings are copied from properties on the READY → PAUSED state change. The recently added properties violate this scheme, and are probably unsafe to change. Make these properties consistently MUTABLE_READY. Also remove the unused `output_padding` field. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7996> 2024-11-19 17:38:43 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * tests/check/elements/cccombiner.c: tests: cccombiner: Test rescheduling 50fps to 25fps w/o overflow Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7996> 2024-11-19 17:38:43 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * ext/closedcaption/gstcccombiner.c: * ext/closedcaption/gstcccombiner.h: cccombiner: Replace caption frame counting with max_buffer_time The counting is defective when we are combining with a stream that has a higher max_cea608_count (such as 60p to 30i), as we produce less caption frames than we consume, leading to periodic queue drops. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7996> 2025-01-25 00:15:04 -0500 Arun Raghavan <arun@asymptotic.io> * ext/webrtcdsp/meson.build: webrtcdsp: Use C++20 with MSVC if needed The subproject fails on vs2022 builds with: [...]agc2/input_volume_stats_reporter.cc(89): error C7555: use of designated initializers requires at least '/std:c++20' So let's force C++20 in this case. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8270> 2025-01-09 11:37:05 -0500 Arun Raghavan <arun@asymptotic.io> * ext/webrtcdsp/gstwebrtcdsp.cpp: * ext/webrtcdsp/meson.build: webrtcdsp: Bump to WebRTC AudioProcessing 2.1 Keep 1.0 support around so distros can manage this bump more easily. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8270> 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/8328> 2025-01-23 11:50:43 +1100 Matthew Waters <matthew@centricular.com> * sys/nvcodec/gstcudacompositor.cpp: cudacompositor: pass correct variable to debug log functions Fixes spew of: gst_debug_log_full_valist: assertion 'id != NULL || object == NULL || G_IS_OBJECT (object)' failed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8345> 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/8348> 2025-01-22 19:37:02 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstcudacompositor.cpp: cudacompositor: Fix memory leak gst_cuda_compositor_upload_frame() returns buffers with increased refcount already Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8335> 2025-01-17 20:46:55 +1100 Brad Hards <bradh@frogmouth.net> * gst/videoparsers/gsth264parse.c: h264parse: add conditional values to AVCConfigurationRecord This adds the data required in AVCDecoderConfigurationRecord for higher profile (High variants) configurations - everything in the if(...) {...} part of ISO/IEC 14496-15:2024 Section 5.3.2.1.2. (or 5.3.3.1.2 in the 2019 version). Resolves an error flagged by ComplianceWarden when muxing this into ISOBMFF. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8308> 2025-01-20 03:14:22 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: * sys/nvcodec/gstcudacompositor.cpp: * sys/nvcodec/gstnvav1encoder.cpp: * sys/nvcodec/gstnvh264encoder.cpp: * sys/nvcodec/gstnvh265encoder.cpp: docs: Update nvcodec plugin docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8325> 2025-01-20 21:29:52 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstcudaipcsink.cpp: * sys/nvcodec/gstcudaipcsrc.cpp: cudaipc: Use empty string for address property docs Since Windows and Linux have different default values, use empty string when generating plugin docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8325> 2025-01-20 04:52:00 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvav1dec.cpp: * sys/nvcodec/gstnvav1encoder.cpp: * sys/nvcodec/gstnvdecoder.cpp: * sys/nvcodec/gstnvh264dec.cpp: * sys/nvcodec/gstnvh264encoder.cpp: * sys/nvcodec/gstnvh265dec.cpp: * sys/nvcodec/gstnvh265encoder.cpp: * sys/nvcodec/gstnvvp8dec.cpp: * sys/nvcodec/gstnvvp9dec.cpp: nvcodec: Specify documentation caps ... since produced caps will be different depending on OS and GPU model. Also adding Y444_16LE format to decoder's GL template caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8325> 2025-01-20 02:55:03 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/nvcomp/gstnvcompvideoenc.cpp: * ext/nvcomp/plugin.cpp: docs: Add nvcomp plugin docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8325> 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/8326> 2025-01-20 13:23:50 +0100 Mathieu Duponchelle <mathieu@centricular.com> * docs/meson.build: docs: explicitly list gir files as depends for generating configs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8324> 2024-12-18 01:45:28 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstcudacompositor.cpp: * sys/nvcodec/gstcudacompositor.h: * sys/nvcodec/meson.build: * sys/nvcodec/plugin.c: nvcodec: Add cudacompositor element Adding CUDA based compositor element Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8170> 2024-12-17 00:51:47 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstcudaconverter.cpp: cudaconverter: Add support for alpha blending Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8170> 2024-12-16 01:32:36 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstcudaconverter.cpp: * sys/nvcodec/gstcudaconverter.h: * sys/nvcodec/gstcudaconvertscale.c: * sys/nvcodec/meson.build: cudaconverter: Add support for configuration update Allow updating various configuration values via property Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8170> 2024-12-14 23:56:35 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstcudaconverter.c: cudaconverter: Pass constant values as kernel argument Make conversion kernel more flexible and reusable Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8170> 2024-12-14 21:44:55 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/cuda-gst.h: * gst-libs/gst/cuda/gstcudaloader.cpp: * gst-libs/gst/cuda/stub/cuda.h: cuda: Load 2D memset function symbols Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8170> 2025-01-15 17:36:00 +0100 Mathieu Duponchelle <mathieu@centricular.com> * docs/meson.build: * gst-libs/gst/adaptivedemux/meson.build: * gst-libs/gst/analytics/meson.build: * gst-libs/gst/audio/meson.build: * gst-libs/gst/basecamerabinsrc/meson.build: * gst-libs/gst/codecparsers/meson.build: * gst-libs/gst/codecs/meson.build: * gst-libs/gst/cuda/meson.build: * gst-libs/gst/dxva/meson.build: * gst-libs/gst/insertbin/meson.build: * gst-libs/gst/mpegts/meson.build: * gst-libs/gst/mse/meson.build: * gst-libs/gst/opencv/meson.build: * gst-libs/gst/play/meson.build: * gst-libs/gst/player/meson.build: * gst-libs/gst/transcoder/meson.build: * gst-libs/gst/va/meson.build: * gst-libs/gst/vulkan/meson.build: * gst-libs/gst/webrtc/meson.build: * gst-libs/meson.build: docs: generate hotdoc configs for libraries with our helper script With this patch, configure time is identical no matter whether doc is enabled or not. The configuration files also now contain explicitly-listed sources with no wildcards. For the four libraries where hotdoc needs to use clang to generate the documentation (as opposed to the rest of the libraries where hotdoc uses the gir), the script will call pkg-config to determine the appropriate C flags. This means a side effect of this patch is that pkg-config files are now generated for the gstadaptivedemux and gstopencv libraries. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312> 2025-01-17 16:51:22 +0100 Mathieu Duponchelle <mathieu@centricular.com> * meson.build: meson: bump minimum version to 1.4 in every subprojects 36c01d05797ad9c7778939c54870f979bdcbba1f bumped to 1.4 for gst-devtools and the root project, but we usually keep those in sync everywhere. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312> 2025-01-04 20:46:37 +0000 Sam James <sam@gentoo.org> * ext/lc3/meson.build: lc3: tweak meson style While this might seem a bit silly, it aids some of our infra in packaging. Tweak for consistency with other use. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8239> 2025-01-06 13:28:40 +0100 Stéphane Cerveau <scerveau@igalia.com> * ext/vulkan/vkh264dec.c: vkh264dec: enhance interlaced content support - Use frame_num instead of pic_num to set the long_term_pic_num fixing 10 interlaced tests in fluster test suite: JVT-AVC_V1 - Send the slice offset only once in case of interlaced content. Fixing 5 interlaced tests in fluster test suite: JVT-AVC_V1. - The default value for top and bottom field flag should be 0 in the case of a progressive content. - Use short and long term refs helper getter method to retrieve the reference frames according its none existing and interlaced state - Reorganize the find_next_slot_idx code to be easier to read. Co-authored-by: Daniel Almeida <daniel.almeida@collabora.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7854> 2024-06-21 16:55:05 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkh264dec.c: vkh264dec: enable h264 interlaced decoding First the slot_index shall have the same value for the first and second fields. Also, the reference frames are only those with both fields. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7854> 2024-06-21 16:43:52 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkh264dec.c: vkh264dec: make GstVulkanH264Picture a reference count Thus we could re-use the same structure for interlaced fields: a single bistream, single output buffer and single vulkan structures. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7854> 2024-10-25 15:24:49 +0200 Stéphane Cerveau <scerveau@igalia.com> * ext/vulkan/vkh264dec.c: vkh264dec: non existing picture are not refs The non existing picture or gap picture should not be considered as refs for vulkan decoder. Fix fluster tests: MR3_TANDBERG_B MR4_TANDBERG_C MR5_TANDBERG_C Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7854> 2024-10-25 12:36:43 +0200 Stéphane Cerveau <scerveau@igalia.com> * docs/plugins/gst_plugins_cache.json: * ext/vulkan/vkh264dec.c: vkh264dec: support h264 extended profile Extended is identical to main but allows FMO/ASO features to be used, and prevent using CABAC. Using similar logic to "baseline", assume that if we support main, we can also do extended. This fixes the following fluster vectors, which otherwise would fail when trying to link the parsebin pad. BA3_SVA_C MR6_BT_B MR7_BT_B MR8_BT_B Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7854> 2025-01-15 17:08:21 -0500 Daniel Morin <daniel.morin@collabora.com> * gst-libs/gst/analytics/gstanalyticssegmentationmtd.c: * gst-libs/gst/analytics/gstanalyticssegmentationmtd.h: gst-analytics: add missing mtd segmentation API - add gst_analytics_segmentation_mtd_get_mtd_type() which is required to retrieve the concrete type of a generic mtd (GstAnalyticsMtd). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8307> 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/8280> 2025-01-10 21:18:45 +0100 Carlos Bentzen <cadubentzen@igalia.com> * docs/plugins/gst_plugins_cache.json: * gst-libs/gst/mpegts/gstmpegtssection.h: * gst/mpegtsdemux/tsdemux.c: tsdemux: add support for VVC/H.266 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4940> 2025-01-14 17:22:12 +0000 Tim-Philipp Müller <tim@centricular.com> * gst-libs/gst/webrtc/nice/nice.c: webrtc-nice: fix compiler warning with older versions if libnice warning: "HAVE_LIBNICE_CONSENT_FIX" is not defined, evaluates to 0 [-Wundef] Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8305> 2025-01-13 00:39:43 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: d3d12: Update docs for max-mip-levels property Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290> 2025-01-13 00:08:28 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12convert.h: d3d12convert: Add max-mip-levels property Add support for automatic mipmap generation depending on viewport size Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290> 2025-01-12 23:37:58 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12swapchainsink.cpp: d3d12swapchainsink: Add max-mip-level property Add support for automatic mipmap generation depending on viewport size Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290> 2025-01-12 23:22:44 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12videosink.cpp: * sys/d3d12/gstd3d12window.cpp: * sys/d3d12/gstd3d12window.h: d3d12videosink: Add max-mip-level property Add support for automatic mipmap generation depending on viewport size Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290> 2025-01-10 21:57:58 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12converter.h: * gst-libs/gst/d3d12/gstd3d12mipgen-private.h: * gst-libs/gst/d3d12/gstd3d12mipgen.cpp: d3d12converter: Add support for mipmap generation Adding max-mip-levels property so that converter can generate mipmap textures if render target size is smaller than input texture resolution. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290> 2025-01-10 01:59:14 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: d3d12converter: Refactor to support mipmap handling Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290> 2025-01-10 21:05:45 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.h: * gst-libs/gst/d3dshader/plugin-hlsl/CSMain_mipgen_gray.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/hlsl.h: * gst-libs/gst/d3dshader/plugin-hlsl/meson.build: * sys/d3d12/gstd3d12mipmapping.cpp: d3d12mipmapping: Add support for GRAY output Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290> 2025-01-10 00:38:39 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12mipgen-private.h: * gst-libs/gst/d3d12/gstd3d12mipgen.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.h: * gst-libs/gst/d3dshader/plugin-hlsl/CSMain_mipgen_ayuv.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/CSMain_mipgen_vuya.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/hlsl.h: * gst-libs/gst/d3dshader/plugin-hlsl/meson.build: * sys/d3d12/gstd3d12mipmapping.cpp: d3d12mipmapping: Skip alpha sampling if possible If input format has no alpha and output format has no alpha, skip alpha sampling which can reduce the number of instruction slots Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290> 2025-01-09 23:12:05 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12mipgen-private.h: * gst-libs/gst/d3d12/gstd3d12mipgen.cpp: * gst-libs/gst/d3d12/meson.build: * sys/d3d12/gstd3d12mipmapping.cpp: * sys/d3d12/meson.build: d3d12: Move mipgen to libs converter object will use mipgen object Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8290> 2025-01-14 15:00:43 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development after 1.25.1 === release 1.25.1 === 2025-01-14 14:52:48 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * gst-plugins-bad.doap: * meson.build: Release 1.25.1 2024-12-20 13:28:38 -0700 Jordan Yelloz <jordan.yelloz@collabora.com> * sys/decklink/gstdecklink.cpp: decklink: Fixed caps-building for output devices When iterating through output devices, video_input_caps was being updated instead of video_output_caps. As a result, video output devices were being created with an empty caps object and `gst-device-monitor-1.0 Video/Sink` would produce no decklink devices. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8298> 2025-01-13 22:09:02 +0100 Ruben Gonzalez <rgonzalez@fluendo.com> * gst/videoparsers/gsth264parse.c: h264parse: drop duplicated call Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8299> 2025-01-13 12:48:52 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/gst_plugins_cache.json: docs: update vampeg2dec docs with new rank Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8295> 2025-01-13 12:46:26 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/gst_plugins_cache.json: docs: add svtjpegxs plugin Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8295> 2025-01-13 12:45:38 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/openaptx/openaptx-plugin.c: docs: add openaptx plugin Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8295> 2025-01-13 18:10:31 +0100 Mathieu Duponchelle <mathieu@centricular.com> * docs/meson.build: * ext/aes/meson.build: * ext/analyticsoverlay/meson.build: * ext/aom/meson.build: * ext/assrender/meson.build: * ext/avtp/meson.build: * ext/bs2b/meson.build: * ext/bz2/meson.build: * ext/chromaprint/meson.build: * ext/closedcaption/meson.build: * ext/codec2json/meson.build: * ext/colormanagement/meson.build: * ext/curl/meson.build: * ext/dash/meson.build: * ext/dc1394/meson.build: * ext/directfb/meson.build: * ext/dtls/meson.build: * ext/dts/meson.build: * ext/faac/meson.build: * ext/faad/meson.build: * ext/fdkaac/meson.build: * ext/flite/meson.build: * ext/fluidsynth/meson.build: * ext/gme/meson.build: * ext/gs/meson.build: * ext/gsm/meson.build: * ext/gtk/meson.build: * ext/hls/meson.build: * ext/iqa/meson.build: * ext/isac/meson.build: * ext/ladspa/meson.build: * ext/lc3/meson.build: * ext/lcevcdecoder/meson.build: * ext/lcevcencoder/meson.build: * ext/ldac/meson.build: * ext/libde265/meson.build: * ext/lv2/meson.build: * ext/mdns/meson.build: * ext/modplug/meson.build: * ext/mpeg2enc/meson.build: * ext/mplex/meson.build: * ext/musepack/meson.build: * ext/neon/meson.build: * ext/nvcomp/meson.build: * ext/nvdswrapper/meson.build: * ext/onnx/meson.build: * ext/openal/meson.build: * ext/openaptx/meson.build: * ext/opencv/meson.build: * ext/openexr/meson.build: * ext/openh264/meson.build: * ext/openjpeg/meson.build: * ext/openmpt/meson.build: * ext/openni2/meson.build: * ext/opus/meson.build: * ext/qroverlay/meson.build: * ext/qt6d3d11/meson.build: * ext/resindvd/meson.build: * ext/rsvg/meson.build: * ext/rtmp/meson.build: * ext/sbc/meson.build: * ext/sctp/meson.build: * ext/smoothstreaming/meson.build: * ext/sndfile/meson.build: * ext/soundtouch/meson.build: * ext/spandsp/meson.build: * ext/srt/meson.build: * ext/srtp/meson.build: * ext/svtav1/meson.build: * ext/svthevcenc/meson.build: * ext/svtjpegxs/meson.build: * ext/teletextdec/meson.build: * ext/ttml/meson.build: * ext/voaacenc/meson.build: * ext/voamrwbenc/meson.build: * ext/vulkan/meson.build: * ext/wayland/meson.build: * ext/webp/meson.build: * ext/webrtc/meson.build: * ext/webrtcdsp/meson.build: * ext/wildmidi/meson.build: * ext/wpe/meson.build: * ext/x265/meson.build: * ext/zbar/meson.build: * ext/zxing/meson.build: * gst/accurip/meson.build: * gst/adpcmdec/meson.build: * gst/adpcmenc/meson.build: * gst/aiff/meson.build: * gst/asfmux/meson.build: * gst/audiobuffersplit/meson.build: * gst/audiofxbad/meson.build: * gst/audiolatency/meson.build: * gst/audiomixmatrix/meson.build: * gst/audiovisualizers/meson.build: * gst/autoconvert/meson.build: * gst/bayer/meson.build: * gst/camerabin2/meson.build: * gst/codecalpha/meson.build: * gst/codectimestamper/meson.build: * gst/coloreffects/meson.build: * gst/debugutils/meson.build: * gst/dvbsubenc/meson.build: * gst/dvbsuboverlay/meson.build: * gst/dvdspu/meson.build: * gst/faceoverlay/meson.build: * gst/festival/meson.build: * gst/fieldanalysis/meson.build: * gst/freeverb/meson.build: * gst/frei0r/meson.build: * gst/gaudieffects/meson.build: * gst/gdp/meson.build: * gst/geometrictransform/meson.build: * gst/id3tag/meson.build: * gst/insertbin/meson.build: * gst/inter/meson.build: * gst/interlace/meson.build: * gst/ivfparse/meson.build: * gst/ivtc/meson.build: * gst/jp2kdecimator/meson.build: * gst/jpegformat/meson.build: * gst/librfb/meson.build: * gst/meson.build: * gst/midi/meson.build: * gst/mpegdemux/meson.build: * gst/mpegpsmux/meson.build: * gst/mpegtsdemux/meson.build: * gst/mpegtsmux/meson.build: * gst/mse/meson.build: * gst/mxf/meson.build: * gst/netsim/meson.build: * gst/onvif/meson.build: * gst/pcapparse/meson.build: * gst/pnm/meson.build: * gst/proxy/meson.build: * gst/rawparse/meson.build: * gst/removesilence/meson.build: * gst/rist/meson.build: * gst/rtmp2/meson.build: * gst/rtp/meson.build: * gst/sdp/meson.build: * gst/segmentclip/meson.build: * gst/siren/meson.build: * gst/smooth/meson.build: * gst/speed/meson.build: * gst/subenc/meson.build: * gst/switchbin/meson.build: * gst/tensordecoders/meson.build: * gst/timecode/meson.build: * gst/transcode/meson.build: * gst/unixfd/meson.build: * gst/videofilters/meson.build: * gst/videoframe_audiolevel/meson.build: * gst/videoparsers/meson.build: * gst/videosignal/meson.build: * gst/vmnc/meson.build: * gst/y4m/meson.build: * meson.build: * sys/aja/meson.build: * sys/amfcodec/meson.build: * sys/androidmedia/meson.build: * sys/applemedia/meson.build: * sys/asio/meson.build: * sys/bluez/meson.build: * sys/d3d11/meson.build: * sys/d3d12/meson.build: * sys/d3dvideosink/meson.build: * sys/decklink/meson.build: * sys/directshow/meson.build: * sys/directsound/meson.build: * sys/dvb/meson.build: * sys/dwrite/meson.build: * sys/fbdev/meson.build: * sys/ipcpipeline/meson.build: * sys/kms/meson.build: * sys/magicleap/meson.build: * sys/mediafoundation/meson.build: * sys/msdk/meson.build: * sys/nvcodec/meson.build: * sys/opensles/meson.build: * sys/qsv/meson.build: * sys/shm/meson.build: * sys/tinyalsa/meson.build: * sys/uvcgadget/meson.build: * sys/uvch264/meson.build: * sys/v4l2codecs/meson.build: * sys/va/meson.build: * sys/wasapi/meson.build: * sys/wasapi2/meson.build: * sys/webview2/meson.build: * sys/wic/meson.build: * sys/win32ipc/meson.build: * sys/winks/meson.build: * sys/winscreencap/meson.build: * tools/gst-project-maker: docs: port plugins to explicit sources Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8273> 2024-02-13 10:21:15 -0500 Xavier Claessens <xavier.claessens@collabora.com> * sys/androidmedia/magicleap/gstamc-codec-ml.c: * sys/androidmedia/magicleap/gstamc-codeclist-ml.c: * sys/androidmedia/magicleap/gstamc-format-ml.c: * sys/androidmedia/magicleap/gstamc-internal-ml.h: * sys/androidmedia/magicleap/gstamc-ml.c: * sys/androidmedia/magicleap/gstamc-surfacetexture-ml.c: * sys/androidmedia/magicleap/gstamc-surfacetexture-ml.h: * sys/androidmedia/meson.build: magicleap: Drop MLSDK support I was used by ML1 (first gen device) which is deprecated and not supported anymore. ML2 uses standard Android JNI and NDK. Note that mlaudiosink element remains in bad/sys/magiclea because it allows 3d spatial audio and that API is still supported by Magicleap SDK. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6108> 2025-01-06 09:12:19 +0100 Edward Hervey <edward@centricular.com> * ext/iqa/meson.build: * ext/sctp/usrsctp/meson.build: * ext/soundtouch/meson.build: * ext/ttml/meson.build: * gst-libs/gst/vulkan/meson.build: * gst/dvbsubenc/meson.build: * meson.build: * sys/dwrite/libcaption/meson.build: * sys/qsv/libmfx/meson.build: * tests/check/meson.build: bad: Add extra warning flags Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-11 13:40:39 +0100 Edward Hervey <edward@centricular.com> * sys/winscreencap/gstgdiscreencapsrc.c: * sys/winscreencap/gstwinscreencap.c: * sys/winscreencap/gstwinscreencap.h: winscreencap: Don't use aggregate returns Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-11 09:07:27 +0100 Edward Hervey <edward@centricular.com> * sys/decklink/meson.build: decklink: Ignore undef warnings in decklink API Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 17:24:40 +0100 Edward Hervey <edward@centricular.com> * ext/openni2/meson.build: openni2: Ignore undef in external header Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 17:24:30 +0100 Edward Hervey <edward@centricular.com> * ext/x265/meson.build: x265: Ignore undef in external headers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 16:31:01 +0100 Edward Hervey <edward@centricular.com> * sys/amfcodec/meson.build: amf: Ignore undef warnings in external headers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 16:30:25 +0100 Edward Hervey <edward@centricular.com> * ext/spandsp/meson.build: spandsp: Ignore undef issue in external headers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 16:29:53 +0100 Edward Hervey <edward@centricular.com> * gst/transcode/gsturitranscodebin.c: uritranscodebin: Fix definition usage Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 16:17:11 +0100 Edward Hervey <edward@centricular.com> * ext/sctp/sctpassociation.c: sctp: Convert function to avoid aggregate return It's only used locally and only to fill an existing variable Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 11:42:19 +0100 Edward Hervey <edward@centricular.com> * sys/applemedia/avfdeviceprovider.m: * sys/applemedia/avfvideosrc.m: * sys/applemedia/corevideobuffer.c: * sys/applemedia/videotexturecache-gl.h: * sys/applemedia/videotexturecache-gl.m: * sys/applemedia/videotexturecache-vulkan.mm: * sys/applemedia/videotexturecache.m: * sys/applemedia/vtdec.c: * sys/applemedia/vtenc.c: applemedia: Fix usage of HAVE_IOS define Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 11:10:44 +0100 Edward Hervey <edward@centricular.com> * gst/timecode/meson.build: timecode: Fix definition Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 11:10:25 +0100 Edward Hervey <edward@centricular.com> * ext/resindvd/resindvdbin.c: resindvd: Fix definition Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 11:09:58 +0100 Edward Hervey <edward@centricular.com> * ext/curl/gstcurlhttpsrc.h: * meson.build: curl: Fix definitions Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 10:27:51 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/vulkan/gstvkdebug.c: vulkan: Include api header Needed for GST_VULKAN_HAVE_VIDEO_EXTENSIONS Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-06 11:03:32 +0100 Edward Hervey <edward@centricular.com> * ext/wpe/wpe-extension/gstwpeaudiosink.c: wpeaudiosink: Check error value explicitly Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 15:55:42 +0100 Edward Hervey <edward@centricular.com> * sys/msdk/meson.build: msdk: Ignore aggregate return warning That's how their API is implemented Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-10 15:53:55 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/d3d11/meson.build: * sys/d3d11/meson.build: d3d11: Ignore undef issues with external headers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-06 15:06:58 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/d3d12/meson.build: * sys/d3d12/meson.build: d3d12: Disable implicit fallthrough checks There are some missing explicit fallthrough statements in the direct headers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-06 10:36:04 +0100 Edward Hervey <edward@centricular.com> * gst/rtmp2/gstrtmp2locationhandler.c: * gst/rtmp2/rtmp/rtmpclient.c: * gst/rtmp2/rtmp/rtmpclient.h: rtmp2: Explicitly define scheme error enum Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-06 10:28:20 +0100 Edward Hervey <edward@centricular.com> * ext/directfb/dfbvideosink.c: dfbvideosink: Rework escape handling Detected by a fallthrough. * Just use if/else for clarity * Remove 2002 fart joke Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-06 09:10:48 +0100 Edward Hervey <edward@centricular.com> * gst/mxf/mxfdemux.c: mxfdemux: Fix segments iteration `i >= 0` is always true since it's an unsigned integer ... Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-06 09:10:08 +0100 Edward Hervey <edward@centricular.com> * gst/siren/encoder.c: siren: Cast shift mask to unsigned value Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 18:42:01 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/codecparsers/gsth265parser.c: h265parser: Fix unsigned value reading Unsigned values are always above 0, use MAX variant for reading Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 12:13:23 +0100 Edward Hervey <edward@centricular.com> * tests/examples/ipcpipeline/ipc-play.c: examples/ipcpipeline: Fix ESC handler Same as for gst-play Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 12:12:54 +0100 Edward Hervey <edward@centricular.com> * tests/check/libs/play.c: tests/play: Fix debug statement The interval is in milliseconds, convert to nanoseconds for debugging statement Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 12:12:21 +0100 Edward Hervey <edward@centricular.com> * tests/check/elements/webrtcbin.c: tests/webrtcbin: Remove useless checks with unsigned values Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 12:10:59 +0100 Edward Hervey <edward@centricular.com> * ext/closedcaption/gstcccombiner.c: * ext/closedcaption/gstcea608mux.c: closedcaption: Use proper type for storing result drop_ccp_from_cc_data() will return a negative value if there was an error. Storing that in an unsigned value will cause the checks for errors to never happen. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 12:10:21 +0100 Edward Hervey <edward@centricular.com> * ext/closedcaption/gstcea708decoder.c: cea708decoder: Remove useless checks No need to check for the type limits Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 12:09:28 +0100 Edward Hervey <edward@centricular.com> * ext/isac/gstisacdec.c: isacdec: Remove impossible check WebRtcIsac_DecodePlc() never returns a negative value (confirmed by documentation and current/historical code) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 12:09:00 +0100 Edward Hervey <edward@centricular.com> * ext/sctp/gstsctpdec.c: sctpdec: Remove useless check A uint16 will always be below ... the maximum value Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 11:47:11 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/codecs/gstmpeg2decoder.c: mpeg2decoder: Remove useless check The enum is unsigned Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 11:43:19 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/vulkan/gstvkinstance.c: vkinstance: Remove useless check priv->requested_api_major is unsigned Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 11:42:22 +0100 Edward Hervey <edward@centricular.com> * gst/mpegtsmux/gstbasetsmux.c: basetsmux: Add explicit macro for GstClockTimeDiff handling The checks in the other macro were useless for unsigned values Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 11:41:54 +0100 Edward Hervey <edward@centricular.com> * gst/mxf/mxfdemux.c: mxfdemux: Remove useless check values will always be positive Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-05 11:41:18 +0100 Edward Hervey <edward@centricular.com> * gst/speed/gstspeed.c: speed: Refactor event handler To avoid fallthrough issues which were tricky to fix Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 2025-01-04 18:00:41 +0100 Edward Hervey <edward@centricular.com> * ext/fdkaac/gstfdkaacdec.c: * gst-libs/gst/audio/gstnonstreamaudiodecoder.c: * gst-libs/gst/isoff/gstisoff.c: * gst/aiff/aiffparse.c: * gst/dvbsuboverlay/gstdvbsuboverlay.c: * gst/mpegpsmux/psmuxstream.c: * gst/mpegtsdemux/mpegtsbase.c: * gst/mpegtsdemux/pesparse.c: * gst/rtmp2/rtmp/amf.c: * gst/rtmp2/rtmp/rtmpchunkstream.c: * gst/videoparsers/gsth266parse.c: * gst/videoparsers/gstmpeg4videoparse.c: * gst/videoparsers/gstmpegvideoparse.c: * sys/ipcpipeline/gstipcpipelinesrc.c: * sys/msdk/gstmsdkenc.c: * sys/msdk/gstmsdkh265enc.c: * sys/va/gstvabasedec.c: * sys/va/gstvabaseenc.c: * tests/examples/audiomixmatrix/test-audiomixmatrix.c: * tests/examples/waylandsink/wayland-threads.c: bad: Clearly specify fallthrough in switch/case Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229> 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/8259> 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/8286> 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/8286> 2025-01-06 10:39:35 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/d3d12/gstd3d12device.cpp: d3d12: Add missing breaks to switch/case Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8286> 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/8286> 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/8286> 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/8286> 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/8286> 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/8286> 2025-01-10 13:27:13 +0100 Ruben Gonzalez <rgonzalez@fluendo.com> * gst/videoparsers/gstvideoparseutils.c: videoparsers: Fix indentation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8281> 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/8253> 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/8272> 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/8212> 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/8217> 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/8217> 2025-01-08 00:56:45 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: * sys/d3d12/gstd3d12mipmapping.cpp: d3d12mipmapping: Add mip-levels property Generating full levels would result in waste of GPU resource depending on rendering usecase. Adding a property to make it controllable Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8255> 2025-01-08 00:38:39 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12mipgen.cpp: * sys/d3d12/gstd3d12mipmapping.cpp: d3d12mipmapping: Add YUV and 64bits output formats Add support for YUV and 64bits output formats to avoid colorspace conversion and bitdepth loss Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8255> 2025-01-06 15:16:02 -0600 Olivier Crête <olivier.crete@collabora.com> * ext/onnx/gstonnxclient.cpp: * gst-libs/gst/analytics/gsttensor.c: * gst-libs/gst/analytics/gsttensor.h: analytics: Tensor dimensions are always row-major or col-major Simplify by removing the extra fields, as this is what all frameworks give us. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8250> 2024-12-27 20:55:56 +0100 Tim-Philipp Müller <tim@centricular.com> * ext/svtjpegxs/gstsvtjpegxsenc.c: svtjpegxsenc: add support for interlaced video Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219> 2024-12-27 18:02:12 +0100 Tim-Philipp Müller <tim@centricular.com> * ext/svtjpegxs/gstsvtjpegxsenc.c: svtjpegxsenc: factor out encoding of codestream into separate function Prepare for interlacing support where an interlaced image is coded as two codestreams each representing a field. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219> 2024-12-26 18:08:14 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst/mpegtsmux/gstbasetsmux.c: * gst/mpegtsmux/gstmpegtsmux.c: mpegtsmux: add support for interlaced JPEG XS Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219> 2024-12-25 22:54:16 +0100 Tim-Philipp Müller <tim@centricular.com> * ext/svtjpegxs/gstsvtjpegxsdec.c: svtjpegxsdec: add support for interlaced video Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219> 2024-12-25 22:40:06 +0100 Tim-Philipp Müller <tim@centricular.com> * ext/svtjpegxs/gstsvtjpegxsdec.c: svtjpegxsdec: drop frames that had decoding errors Follow-up to !8163 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219> 2024-12-25 18:07:04 +0100 Tim-Philipp Müller <tim@centricular.com> * ext/svtjpegxs/gstsvtjpegxsdec.c: svtjpegxsdec: factor out decoding of codestream into separate function Prepare for interlacing support where an interlaced image is coded as two codestreams each representing a field. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219> 2024-12-20 13:49:47 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/mpegtsdemux/tsdemux.c: tsdemux: handle interlaced JPEG XS Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219> 2024-12-10 15:09:24 +0100 Stéphane Cerveau <scerveau@igalia.com> * ext/vulkan/vkh265dec.c: vkh265dec: update only vps/sps on demand and pass pps always As PPS can change over the stream, the pps should be always updated to avoid missing picture parameters sets. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8124> 2024-12-10 12:48:32 +0100 Stéphane Cerveau <scerveau@igalia.com> * ext/vulkan/vkh264dec.c: vkh264dec: update only sps on demand and pass pps always As PPS can change over the stream, the pps should be always updated to avoid missing picture parameters sets. See CABA3_TOSHIBA_E.264 in fluster resources. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8124> 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/8222> 2025-01-04 20:30:01 +0000 Sam James <sam@gentoo.org> * meson_options.txt: codec2json: move option to right section It has an external dependency (json-glib) so should be under that heading. Fixes: fd588a50e415feb0ab21c4a3386bd426c8c9043b Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8238> 2025-01-04 19:52:48 +0000 Sam James <sam@gentoo.org> * meson_options.txt: analyticsoverlay: move option to right section It has an external dependency (pango/cairo) so should be under that heading. Also, fix an inconsistency with the ':' style. Fixes: 95464c89772e144088af54c1e8a4c1fecc45f09a Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8238> 2024-12-20 14:51:45 -0500 Daniel Morin <daniel.morin@collabora.com> * ext/onnx/gstonnxclient.cpp: * gst-libs/gst/analytics/gsttensor.c: * gst-libs/gst/analytics/gsttensor.h: analytics: remove batch-size - Batch-size will be the outer-most dimension. Presence of batch dimension can be identified using `dims` and `id`. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8191> 2025-01-01 00:43:41 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12graphicscapture.cpp: * sys/d3d12/gstd3d12screencapture.cpp: * sys/d3d12/gstd3d12screencapture.h: * sys/d3d12/gstd3d12screencapturedevice.cpp: * sys/d3d12/gstd3d12screencapturesrc.cpp: d3d12screencapturesrc: Add support for HDR capture in DDA mode Use IDXGIOutput5::DuplicateOutput1() if HDR is enabled. Note that scRGB color space is not defined in GStreamer, this element will output SDR tonemapped frame with linear or reinhard filtering. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3834 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8227> 2025-01-01 22:15:58 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.h: * gst-libs/gst/d3dshader/plugin-hlsl/PSMain_sample_scrgb.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/PSMain_sample_scrgb_tonemap.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/hlsl.h: * gst-libs/gst/d3dshader/plugin-hlsl/meson.build: d3dshader: Add sampling pixel shader for scRGB SRV Shaders required for HDR capturing Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8227> 2024-11-22 12:46:22 +0100 Albert Sjolund <alberts@axis.com> * docs/plugins/gst_plugins_cache.json: * ext/webrtc/gstwebrtcbin.c: webrtc: add new post-rtp-aux-sender signal Adds a new signal to webrtcbin, to allow for placement of an object after rtp, before sendbin. This is usable for objects such as congestion control elements, that don't want to be burdened by the synchronization requirements of rtpsession. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7940> 2024-12-26 01:33:37 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/mpegtsdemux/tsdemux.c: tsdemux: fix JPEG XS framerate handling for 29.97fps .. and other framerate values with a 1.001 denominator. The coded framerate denominator value is a code that maps to either 1 (for 1) or 1.001 (for 2) not a direct value. Before, 29.97fps would be announced as 15fps because it would calculate 30/2 instead of 30/1.001. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8226> 2024-12-30 22:53:02 +0100 Samuel Thibault <samuel.thibault@ens-lyon.org> * meson.build: meson: Also disable drm on GNU/Hurd Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8223> 2024-12-28 22:29:23 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: docs: Update qsv plugin docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220> 2024-12-28 22:26:48 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: docs: Update d3d11 plugin docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220> 2024-12-28 21:43:46 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: docs: Update d3d12 plugin docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220> 2024-12-28 21:35:44 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12deinterlace.cpp: * sys/d3d12/gstd3d12memorycopy.cpp: * sys/d3d12/gstd3d12mipmapping.cpp: * sys/d3d12/gstd3d12screencapturesrc.cpp: * sys/d3d12/gstd3d12swapchainsink.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12videosink.cpp: * sys/d3d12/gstd3d12window.cpp: d3d12: Add "Since" markers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220> 2024-12-28 21:06:24 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: docs: Add asio plugin docs Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3745 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220> 2024-12-28 20:42:56 +0900 Seungha Yang <seungha@centricular.com> * sys/asio/gstasiosink.cpp: * sys/asio/gstasiosrc.cpp: * sys/asio/plugin.c: asio: Add "Since" markers and fix typos in property description Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220> 2024-12-28 20:38:13 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: docs: Add webview2 plugin docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220> 2024-12-28 13:26:18 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/play/gstplay.c: play: Fix stream id leaks on initial stream selection Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7650> 2024-12-27 19:01:21 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/check/meson.build: play: Actually check for valgrind for the tests Other tests in gst-plugins-bad also assumed it to be checked. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7650> 2024-12-27 13:31:09 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/check/libs/play.c: play: Fix tests after the switch to playbin3 And also fix various memory leaks and other issues that always existed in the tests. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7650> 2024-10-10 15:54:04 -0400 Sebastian Dröge <sebastian@centricular.com> * tests/check/libs/play.c: * tests/check/meson.build: play: Port tests to libsoup 3 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7650> 2024-10-10 15:08:33 -0400 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/play/gstplay-media-info-private.h: * gst-libs/gst/play/gstplay-media-info.c: * gst-libs/gst/play/gstplay-media-info.h: * gst-libs/gst/play/gstplay.c: * gst-libs/gst/play/gstplay.h: play: Add stream-id based selection of streams to match better playbin3's API As part of this - Add accessors for the stream ID and selection API based on the stream ID - Deprecate the old index-based APIs - Remove playbin support - Implement the track enable API based on stream selection Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7648> 2024-12-23 15:17:57 +0100 Tim-Philipp Müller <tim@centricular.com> * ext/srtp/gstsrtpdec.c: srtpdec: fix build when libsrtp1 is being used Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8204> 2024-12-23 14:58:31 +0100 Philippe Normand <philn@igalia.com> * ext/wpe/wpe-extension/gstwpeextension.c: * ext/wpe/wpe-extension/meson.build: wpe: Fix build for version 2.44 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8203> 2024-12-22 15:00:07 +0100 Philippe Normand <philn@igalia.com> * ext/srtp/gstsrtpdec.c: srtpdec: Fix a use-after-free buffer issue The gst_srtp_dec_decode_buffer() function modifies the input buffer after making it writable, so the pointer might change as well, depending on the refcount of the buffer. This issue was detected using a netsim element upstream of the decoder in a WebRTC pipeline. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8198> 2020-08-10 14:27:29 +0900 Hosang Lee <hosang10.lee@lge.com> * ext/smoothstreaming/gstmssdemux.c: mssdemux: Use gsturi structure to form fragment urls We can use gst_uri_from_string_with_base () to join base url and the fragment url path. The previous method of forming base url in update_base_url(), by looking for the string 'manifest' or 'Manifest' is insufficient. A query may include these string in their paths and thus an invalid base url string will be kept. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8193> 2024-12-18 13:18:32 -0300 Thibault Saunier <tsaunier@igalia.com> * docs/meson.build: doc: Handle gst_dep.get_variable('libexecdir') failure Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178> 2024-12-18 12:27:30 -0300 Thibault Saunier <tsaunier@igalia.com> * docs/meson.build: doc: Allow updating the plugins cache for all modules even if hotdoc is not present This was possible for some modules but not all, for no good reason. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178> 2024-12-20 12:52:31 +0100 Robert Mader <robert.mader@collabora.com> * sys/v4l2codecs/gstv4l2format.c: v4l2codecs: decoder: Fix drm format query A late change that slipped through as it mainly affects NC12 at the moment. Fixes: 4b07d54931 ("v4l2codecs: decoder: Translate V4L2 formats into DRM fourcc/mod pairs") Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8188> 2023-04-18 11:37:25 +0200 Edward Hervey <edward@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst/mpegtsdemux/gstmpegdesc.h: * gst/mpegtsdemux/tsdemux.c: * gst/mpegtsmux/gstbasetsmux.c: * gst/mpegtsmux/gstmpegtsmux.c: * gst/mpegtsmux/tsmux/tsmuxstream.c: * gst/mpegtsmux/tsmux/tsmuxstream.h: mpegts: Add provisional AV1 mapping The main difference with the WIP av1-in-mpegts mapping is that the payload data is not startcode-escaped. Most of the rest is sensible usage of it: * Custom AV1G (AV1 Gstreamer) registration descriptor instead of AV01 * AV1CodecConfigurationRecord is stored in the same 0x80 custom descriptor and conforms fully to the isobmff spec (i.e. does not the HDR fields from the provisional mpegts specification which conflict with that one). * Data is stored as OBU * Access Unit is the frame level (same as provisional mpegts mapping) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4442> 2024-11-18 12:31:21 +0100 Stéphane Cerveau <scerveau@igalia.com> * ext/dash/gstxmlhelper.c: * tests/check/elements/dash_mpd.c: dash: handle 0 duration in gst_xml_helper_set_prop_duration Add dash_mpdparser_check_mpd_client_set_period_to_0 unit test to demonstrate it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8114> 2024-12-02 11:39:11 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/videoparsers/gstav1parse.c: av1parse: Fix some debug trace and comment typo Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8026> 2024-12-02 11:32:13 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/videoparsers/gstav1parse.c: av1parse: Don't immediatly reset timestamp in presence of TD When a TD is being processed, it is not always pushed immediatly. Resetting the time information lead to lost of timestamp in TU to Frame conversion. The TU would be formed by buffer of [TD][Frame], and the timestamp taken from the TU buffer was lost then the TD was handled. The handling of TS should be entirely done by the 3 functions: - gst_av1_parse_handle_obu_to_obu() (direct input to output) - gst_av1_parse_handle_to_big_align() Reset DTS on detected TU or TD - gst_av1_parse_handle_to_small_and_equal_align() PTS on show frame, flat DTS Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/79312357a6ab8ebc4cfc1ed2243bdbc0660c39d5 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8026> 2024-12-20 08:18:15 +0800 He Junyan <junyan.he@intel.com> * gst/videoparsers/gstav1parse.c: av1parse: Fix a typo in the comments about its usage Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710> 2024-12-04 23:27:37 +0800 He Junyan <junyan.he@intel.com> * docs/plugins/gst_plugins_cache.json: Doc: Update the plugin document for h266parse Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710> 2024-12-13 00:00:01 +0800 He Junyan <junyan.he@intel.com> * tests/check/elements/h266parse.c: * tests/check/meson.build: test: Add the h266parse element test Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710> 2023-09-09 01:10:18 +0800 He Junyan <junyan.he@intel.com> * gst/videoparsers/gsth266parse.c: * gst/videoparsers/gsth266parse.h: * gst/videoparsers/gstvideoparserselements.h: * gst/videoparsers/meson.build: * gst/videoparsers/plugin.c: h266parse: Add the new h266parse element TODO: Need to refer to the new ISO/IEC 14496-15 for vvc1 and vvi1's codec data Co-authored-by: Zhong Hongcheng <spartazhc@gmail.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710> 2024-12-17 00:12:51 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/codecparsers/gsth266parser.c: * gst-libs/gst/codecparsers/gsth266parser.h: libs: codecparsers: Add the missing ilrp_idx field in H266's ref list Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710> 2024-12-17 00:15:07 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/codecparsers/gsth266parser.h: libs: codecparsers: H266 GstH266RefPicListStruct's abs_delta_poc_st should be 16 bits Its value range is 0~(2^15 − 1) according to the spec. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710> 2024-12-16 11:39:10 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/videoparsers/gstvp9parse.c: vp9parse: Add video codec tag to the tag list Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8156> 2024-12-16 11:38:52 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/videoparsers/gstav1parse.c: av1parse: Add video codec tag to the tag list Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8156> 2024-11-08 12:38:09 +0100 Robert Mader <robert.mader@collabora.com> * sys/v4l2codecs/gstv4l2format.c: v4l2codecs: format: Add V4L2_PIX_FMT_NC12 Which is used by the Raspberry Pi 4 and 5 for 8-bit HEVC. Adding it here in order to show-case how the V4L2<->DRM translation is supposed to work. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7355> 2024-08-14 02:11:06 +0200 Robert Mader <robert.mader@collabora.com> * sys/v4l2codecs/gstv4l2codecpool.c: * sys/v4l2codecs/gstv4l2decoder.c: * sys/v4l2codecs/gstv4l2format.c: * sys/v4l2codecs/gstv4l2format.h: * sys/v4l2codecs/linux/drm_fourcc.h: v4l2codecs: decoder: Translate V4L2 formats into DRM fourcc/mod pairs V4L2 and DRM choose different, incompatible ways to represent tiled/compressed etc. formats. While the later uses combinations of format fourccs and opaque, vendor/hardware specific modifiers, for the later every such combination is a distinct new format. Traditionally Gst implemented each of the V4L2 formats if needed. Given the large number of tiling and compression modes, this is quite work intensive - and often actually not needed. In many situations Gst just needs to pass buffers from V4L2 to DRM in the form of EGL, VK, Wayland or KMS. Thus implement a direct translation for some V4L2 formats to DRM ones, limited to the DMA_DRM API, allowing much quicker enablement of formats while requiring peers to use external implementations (usually Mesa or KMS) for tiling etc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7355> 2024-12-12 14:41:08 +0100 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder: init debug category earlier The encoder has not been created if the codec is not supported by the hardware, so the GST_WARNING_OBJECT will fail to find a suitable category. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8138> 2024-12-12 14:40:55 +0100 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkdecoder-private.c: vkdecoder: init debug category earlier The decoder has not been created if the codec is not supported by the hardware, so the GST_WARNING_OBJECT will fail to find a suitable category. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8138> 2024-12-16 19:01:15 +0000 Tim-Philipp Müller <tim@centricular.com> * ext/svtjpegxs/gstsvtjpegxsdec.c: svtjpegxsdec: handle decode errors more gracefully Use GST_VIDEO_DECODER_ERROR instead of just erroring out unconditionally, so that the error handling behaviour is determined by the "max-errors" property and we'll just continue after decoding errors now instead of erroring out. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8163> 2024-12-16 17:32:20 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/cuda/gstcudacontext.cpp: cuda/context: add gpu stack size property Allows reducing the initial stack size of GPU threads. Cuda should automatically increase this value if a kernel requires a larger stack. Can save roughly 40MB of GPU memory for a single nvh264enc instance. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8158> 2024-12-16 17:31:17 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/cuda/cuda-gst.h: * gst-libs/gst/cuda/gstcudaloader.cpp: * gst-libs/gst/cuda/stub/cuda.h: cuda: add CuGet/SetCtxLimit() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8158> 2024-12-18 13:35:53 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/va/gstvadisplay.c: va: display: Optimize out some property indirection Because it was visible during some profiling, I thought it cost nothing to optimize out the uneeded property get roundtrip. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8179> 2024-12-17 17:36:19 +0100 Guillaume Desmottes <guillaume.desmottes@onestream.live> * ext/wpe/wpe-extension/gstwpeextension.c: wpe: enable console message with WPE2 Looks like the WebKitConsoleMessage API is now available in WPE2 as well: https://webkitgtk.org/reference/webkitgtk-web-process-extension/stable/signal.WebPage.console-message-sent.html Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8169> 2024-12-16 21:41:55 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/va/gstvah264dec.c: va: h264dec: Allow "extended" profile decoding Extended is identical to main but allows for FMO/ASO features to be used, and prevent using CABAC. Using similar logic to "baseline", assume that if we support main, we can also do extended. This fixes the following fluster vectors, which otherwise would fail when trying to link the parsebin pad. - BA3_SVA_C - MR6_BT_B - MR7_BT_B - MR8_BT_B Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8164> 2024-11-18 07:54:55 +0100 Emil Ljungdahl <emillj@axis.com> * ext/webrtc/gstwebrtcbin.c: webrtcbin: Tear down src and sink bins before removing them from webrtc Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7900> 2024-11-15 15:00:00 +0100 Emil Ljungdahl <emillj@axis.com> * ext/webrtc/gstwebrtcbin.c: webrtcbin: Fix potential deadlock on bin elements cleanup Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7900> 2024-12-10 13:12:18 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * docs/plugins/gst_plugins_cache.json: * sys/applemedia/vtenc.c: * sys/applemedia/vtenc.h: vtenc: Fix authors of encoder features Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120> 2024-12-10 00:05:53 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * docs/plugins/gst_plugins_cache.json: * sys/applemedia/vtenc.c: * sys/applemedia/vtenc.h: vtenc: Fix class hierarchy in an attempt to fix property docs Also fix some convention-nits in the process. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120> 2024-12-09 15:12:57 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/vtenc.c: vtenc, osxaudio: Fix missing since markers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120> 2024-12-09 15:12:57 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * docs/plugins/gst_plugins_cache.json: * sys/applemedia/vtenc.c: vtenc: Mark rate-control enum as plugin API, and update cache Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120> 2024-12-09 15:12:06 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/avfvideosrc.m: avfvideosrc: Add missing since markers for screen-crop properties Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120> 2024-12-05 00:32:37 +0530 Nirbheek Chauhan <nirbheek@centricular.com> docs: Update macOS plugin docs again Contains the following updates: * New properties on avfvideosrc: screen-crop-* * H265 and H265 Alpha support in vtdec and vtenc (VideoToolbox) * ProRes support in vtenc * New properties on vtenc elements: rate-control, data-rate-limits, max-frame-delay * New plugin atenc (AudioToolbox) with support for encoding AAC * Plugin move: atdec moved from -bad to -good * New property on osxaudio elements: unique-id * OS X -> macOS Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120> 2024-12-06 19:13:50 +0100 Mathieu Duponchelle <mathieu@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/closedcaption/gstcccombiner.c: * ext/closedcaption/gstcccombiner.h: cccombiner: expose new input-meta-processing type, force In force mode, generated captions are discarded even if input video buffers do not hold CC meta. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8091> 2024-12-02 17:12:00 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/cuda/meson.build: meson: Improve NVMM CUDA detection 1. Add some comments explaining what headers and libs are expected on what systems 2. Only look in default incdirs if no incdir is specified 3. Require libnvbufsurface.so on Jetson when cuda-nvmm=enabled 4. Require libatomic on Jetson when cuda-nvmm=enabled Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8021> 2024-12-16 00:22:47 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12descheappool.cpp: d3d12: Suppress misleading leak report Set may-be-leaked flag to child objects if needed, since the parent object holding refcount of the child will be leaked intentionally Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8152> 2024-04-07 19:23:52 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device-private.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: * sys/d3d12/gstd3d12deinterlace.cpp: * sys/d3d12/gstd3d12deinterlace.h: * sys/d3d12/gstd3d12yadif.cpp: * sys/d3d12/gstd3d12yadif.h: * sys/d3d12/meson.build: * sys/d3d12/plugin.cpp: d3d12: Add d3d12deinterlace element Adding D3D12 compute shader based deinterlace element with YADIF filtering Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8140> 2024-10-09 10:02:09 -0400 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.h: * gst-libs/gst/d3dshader/plugin-hlsl/CSMain_yadif_1.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/CSMain_yadif_1_10.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/CSMain_yadif_1_12.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/CSMain_yadif_2.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/CSMain_yadif_4.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/hlsl.h: * gst-libs/gst/d3dshader/plugin-hlsl/meson.build: d3dshader: Add YADIF deinterlacing compute shader code Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8140> 2024-12-11 11:53:47 +0100 Oskar Fiedot <oskar.fiedot@intel.com> * gst-libs/gst/analytics/gstanalyticsobjectdetectionmtd.c: * gst-libs/gst/analytics/gstanalyticsobjectdetectionmtd.h: * gst-libs/gst/analytics/meson.build: * tests/check/libs/analyticsmeta.c: analytics: add rotation to object detection mtd Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7938> 2024-12-10 16:15:09 +0000 Philippe Normand <philn@igalia.com> * ext/webrtc/gstwebrtcstats.c: webrtc: Simplify fmtp handling in codec stats Parsing the whole caps as SDP media only to retrieve the fmtp field afterwards seems a bit superfluous. By looking up the a-fmtp attribute directly the number of allocations in this function gets down a bit. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8125> 2024-12-10 12:52:33 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: unset GST_TRACERS for g-ir-scanner to avoid warnings People might have GST_TRACERS=leaks set in their environment by default, which will now trigger criticals during the build when calling g-ir-scanner, because we unset GST_PLUGIN_SYSTEM_PATH so that the scanner doesn't load any plugins. Fixes #4093 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8121> 2024-12-10 13:42:41 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkoperation.c: vkoperation: enable inline query only if it's a video operation This commit enables the usage of inline queries, if and only if, the provided pNext structure, in gst_vulkan_opeation_enable_query(), chains a VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR typed structure. Also it guards "gstvkvideo-private.h" include Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8112> 2024-12-09 14:45:01 +0100 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkoperation.c: * gst-libs/gst/vulkan/gstvkvideo-private.c: * gst-libs/gst/vulkan/gstvkvideo-private.h: vkvideo: add video_maintenance1 check Add gst_vulkan_video_maintenance1_supported to check if the video session needs VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8112> 2024-12-06 15:15:45 +0100 Armin Begovic <armin.begovic@hotmail.com> * docs/plugins/gst_plugins_cache.json: * sys/decklink/gstdecklink.cpp: decklink: Add missing video modes to gst_decklink_mode_get_type() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8110> 2024-12-06 15:15:34 +0100 Armin Begovic <armin.begovic@hotmail.com> * sys/decklink/gstdecklink.cpp: decklink: Fix copy-paste errors regarding 8K modes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8110> 2024-12-09 12:02:01 -0300 Thibault Saunier <tsaunier@igalia.com> * docs/meson.build: docs: Do not try to generate cuda documentation when gir is not generated On macos it is not Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8086> 2024-12-06 00:04:45 -0500 Daniel Morin <daniel.morin@collabora.com> * gst-libs/gst/analytics/gstanalyticsmeta.c: * gst-libs/gst/analytics/gstanalyticsmeta.h: analytics: add _N_TO_N relation type This relation type define relations between each components of two groups. First component of first group relate to first component of second group, Second component of second group relate to second component of second group, and so on. It's a denser way to express relations in this context. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8087> 2024-11-19 10:30:09 +0100 Peter Stensson <petest@axis.com> * ext/curl/gstcurlhttpsink.c: curlhttpsink: Set auth any for http_proxy and https_proxy There was different behaviour if the proxy was configured through properties or environment. For properties libcurl would be configured with any auth, but for environment libcurl would default to using basic. Now any auth is set for both configuration methods. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7935> 2024-11-19 07:31:20 +0100 Peter Stensson <petest@axis.com> * ext/curl/gstcurlhttpsink.c: * ext/curl/gstcurlhttpsink.h: curlhttpsink: Don't set Content-Length to 0 for proxy The Content-Length header would unconditionally be included when the proxy property was set. This would result in requests with both Content-Length and Transfer-Encoding header. Now we rely on the use-content-length property in the proxy case aswell. This also makes sure that Content-Type is set correctly, since before that would be skipped if proxy was used. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7935> 2024-12-07 00:23:33 -0500 Daniel Morin <daniel.morin@collabora.com> * ext/onnx/gstonnxclient.cpp: onnx: disable onnxruntime telemetry Disable the telemetry feautre on onnxruntime. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8092> 2024-12-05 13:39:38 +0100 Francisco Javier Velázquez-GarcÃa <francisco.velazquez@appear.net> * ext/zxing/gstzxing.cpp: zxing: Update decode hints usage for compatibility with ZXing >= 2.2 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7879> 2024-12-04 14:33:07 -0500 Aaron Boxer <aaron.boxer@collabora.com> * gst/videoparsers/gsth265parse.c: h265parse: reset nalparser to NULL after it is freed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8074> 2024-08-01 14:54:11 +0000 sachin gadag <sggadag@amazon.com> * gst/videoparsers/gsth264parse.c: h264parse: set nalparser to NULL after it is freed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8074> 2024-12-05 06:41:35 -0500 Aaron Boxer <aaron.boxer@collabora.com> * gst-libs/gst/codecparsers/gsth265parser.c: h265parse: remove useless NULL setting in gst_h265_parser_free Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8082> 2024-12-05 06:39:06 -0500 Aaron Boxer <aaron.boxer@collabora.com> * gst-libs/gst/codecparsers/gsth264parser.c: h264parse: remove useless NULL setting in gst_h264_nal_parser_free Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8082> 2024-10-16 15:56:40 +0900 Aniket Hande <ahande@ftilab.com> * gst/mpegtsdemux/mpegtspacketizer.c: * gst/mpegtsdemux/mpegtspacketizer.h: * gst/mpegtsdemux/mpegtsparse.c: tsparse: Extract and fill m2ts header for each packet Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7625> 2024-12-02 16:42:06 +0100 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkdecoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkoperation.c: * gst-libs/gst/vulkan/gstvkoperation.h: vkoperation: use inline query with video maintenance1 When video_maintenance1 is supported, gst_vulkan_operation_begin_query will now use the inline query mechanism instead of vkCmdBeginQuery API. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7995> 2024-11-28 15:49:14 +0100 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkdevice.c: vkdevice: enable VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7995> 2024-07-29 13:49:05 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkphysicaldevice.c: vkphysicaldevice: dump if video maintenance1 is supported Dump if VK_KHR_video_maintenance1 features is supported by the driver. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7995> 2024-11-28 23:17:40 +0100 Robert Mader <robert.mader@collabora.com> * sys/v4l2codecs/gstv4l2codecav1dec.c: * sys/v4l2codecs/gstv4l2codech264dec.c: * sys/v4l2codecs/gstv4l2codech265dec.c: * sys/v4l2codecs/gstv4l2codecmpeg2dec.c: * sys/v4l2codecs/gstv4l2codecpool.c: * sys/v4l2codecs/gstv4l2codecpool.h: * sys/v4l2codecs/gstv4l2codecvp8dec.c: * sys/v4l2codecs/gstv4l2codecvp9dec.c: * sys/v4l2codecs/gstv4l2decoder.c: * sys/v4l2codecs/gstv4l2decoder.h: v4l2codecs: Use GstVideoInfoDmaDrm more consistently This avoids some duplications and makes the DRM info available in more places, which will help with future changes. Also fix some error messages while on it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8028> 2024-12-03 13:14:33 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/codecparsers/gsth264parser.c: h264parse: Free SEI if parsing succeeds but alignment afterwards fails Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8056> 2024-12-03 13:10:04 +0200 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/codecparsers/gsth265parser.c: h265parse: Free SEI if parsing succeeds but alignment afterwards fails Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4076 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8056> 2024-11-29 14:41:12 +0100 Jan Alexander Steffens (heftig) <heftig@archlinux.org> * ext/neon/meson.build: meson: Drop max version bound from neon Neon 0.34.0 broke the build again, but the API+ABI has been stable since 0.27 and the library is so-versioned. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8008> 2024-12-03 14:44:30 +0100 Guillaume Desmottes <guillaume.desmottes@onestream.live> * gst-libs/gst/codecparsers/gsth265parser.c: * gst/videoparsers/gsth265parse.c: h265parse: parse unregistered SEI without user data Same change as in h264parse. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7931> 2024-11-20 14:16:23 +0100 Guillaume Desmottes <guillaume.desmottes@onestream.live> * gst-libs/gst/codecparsers/gsth264parser.c: * gst/videoparsers/gsth264parse.c: * tests/check/elements/h264parse.c: h264parse: parse unregistered SEI without user data We get loads of warnings when parsing videos from users: gsth264parser.c:1115:gst_h264_parser_parse_user_data_unregistered: No more remaining payload data to store gsth264parse.c:646:gst_h264_parse_process_sei:<h264parse0> failed to parse one or more SEI message Those are raised because of unregistered SEI without user data. The spec does not explicitly state that unregistered SEI needs to have data and I suppose the UUID by itself can carry valuable information. FFmpeg also parses and exposes such SEI so there is no reason for us no too as well. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7931> 2024-11-15 16:44:10 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/mpegtsdemux/mpegtsbase.c: tsdemux: Lower a GST_FIXME to a GST_DEBUG This is not really a refcounting issue and can happen if a new program is in the process of being activated that contains streams with the same PIDs. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7898> 2024-08-20 20:43:42 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: add gst_vulkan_encoder_is_started() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-11-15 12:41:15 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: vkencoder-private: add again GST_TYPE_VULKAN_ENCODER_RATE_CONTROL_MODE It was already part of the old rate control mechanism but it had wrong the namespace. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-11-08 18:05:55 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: implement callback to chain control rate structures Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-11-08 11:44:40 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: implement callback to chain codec specific structures Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-09-19 16:43:09 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * gst-libs/gst/vulkan/gstvkvideo-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: handle quality level It creates a new structure for passing the codec quality structure at _start(), where it will be filled. The quality level can be set or changed according encoder limits. Later the quality level will be set at _update_session_parameters() and at each frame encoding. That's why it has to be set at _start(). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-09-19 15:04:09 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: rename first_encode_cmd to session_reset Since it reflect better when it's needed to be used: to reset the current session. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-09-19 12:47:17 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: shuffle down VkVideoBeginCodingInfoKHR initialization to make it more cohesive Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-09-05 14:52:31 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: remove rate control handling It will be reintroduced later with different approach. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-09-19 13:28:15 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: enhance algorithm to get the slot index The algorithm for generating the current slot index is a simple round robin, nonetheless it's not assured that the next slot index it's not still used by a still living encode picture. This new way holds an array with the still living encode pictures and the next slot index looks for a released index in the array. Its downside is deallocating a picture need to be removed from the array, so the helper has to be passed to the uninit() function Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-09-19 12:21:04 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: add VkVideoReferenceSlotInfoKHR in GstVulkanEncoderPicture And remove slotIndex since it's part of VkVideoReferenceSlotInfoKHR, simplifying the reference slots array creation, and changing the tests accordingly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-12-03 15:39:47 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: check for codec buffer gst_vulkan_video_codec_buffer_new() can return NULL, so it's required to check the returned value and bail out if needed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-09-06 11:23:40 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: avoid GstVulkanEncoderPicture allocation By using it as apart of the encoder picture structure that has to initialized and uninitalized. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-09-04 14:14:04 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: remove width, height and fps from GstVulkanEncoderPicture In GStreamer that buffer information is decoupled, holding other structures to describe the stream: GstCaps. So, to keep the GStreamer design this patch removes these information from GstVulkanEncoderPicture and pass to gst_vulkan_encoder_encode() a pointer to GstVideoInfo. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-11-26 20:10:15 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: vkencoder-private: replace packed headers with offset handling Instead of holding all headers in an external array and add them into the bitstream buffer before the encoding operation, adding extra memory and extra copy operations, the encoder picture should specify the offset where the Vulkan will start to add the bitstream slices/frame, because the element has written already the headers until that offset. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-09-04 13:17:01 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: remove nb_refs from GstVulkanEncoderPicture That's the number of references that gst_vulkan_encoder_encode() receives to process, so it has to go as a parameter, because it's part of the reference list, not of the picture. This commit also modified unit tests accordingly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-09-04 12:31:25 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: remove pic_num and pic_order_cnt from GstVulkanEncoderPicture Since they aren't semantically part of the codec-independent encoding operation. And modify unit tests accordingly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-09-03 21:36:56 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: remove is_ref member from GstVulkanEncoderPicture It's not used. Modified the unit test accordingly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-08-12 17:31:14 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: don't store output data size There's no need to store in encoder helper the output data size, that's responsibility of the caller when an output buffer is allocated. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-08-22 10:51:52 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: enhance capabilities logging Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-08-19 17:52:10 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkdecoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkvideoutils.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vulkan: store in GstVulkanVideoCapabilities encoder and decoder caps The structure already stored the generic video capabilities and the specific codec capabilities both for encoding an decoding. The generic decoder capabilities weren't stored because it was only used internally in the decoder helper object. Nonetheless, for the encoder, the elements will need the generic encoder capabilities to configure the encoding. That's why it's required to expose it as part of GstVulkanVideoCapabilities. And the generic decoder is included for the sake of symmetry. While updating the API vkvideoencodeh265 test got some code-style fixes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-11-27 10:51:38 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: rename GstVulkanEncoderPicture GstVulkanEncodePicture breaks the namespace. This commit fixes it by renaming it to GstVulkanEncoderPicture, also new() and free() signature functions. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8007> 2024-08-13 01:03:56 +0900 Seungha Yang <seungha@centricular.com> * ext/meson.build: * ext/nvdswrapper/gstnvdsdewarp.cpp: * ext/nvdswrapper/gstnvdsdewarp.h: * ext/nvdswrapper/meson.build: * ext/nvdswrapper/plugin.cpp: * ext/nvdswrapper/stub/cuda_runtime.h: * meson_options.txt: nvdswrapper: Add NVIDIA DeepStream wrapper plugin Adding a NVIDIA DeepStream SDK based plugin with a dewarp element Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7357> 2024-12-02 19:34:14 +0800 Pablo Sun <pablo.sun@mediatek.com> * sys/kms/gstkmssink.c: kmssink: Add mediatek auto-detection Add MediaTek display controller into list of auto-detected modules. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8023> 2024-10-03 22:42:36 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: keep only one DPB view for layered DPB Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993> 2024-09-19 12:29:23 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: increase reference slots array H264 has the maximum number of refs (36) of any supported codec. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993> 2024-09-18 16:28:41 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder_private: move view creation to picture init Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993> 2024-09-17 22:14:46 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: shuffle up operation and query creation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993> 2024-09-17 13:44:53 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: shuffle up get format to bail out better Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993> 2024-09-17 13:43:06 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: define encoded feedback flags by removing override bit Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993> 2024-08-27 18:32:42 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: fix parameters overrides First remove validations since they will fail if there isn't a write operation. It's valid to pass data without write operations. Finally, it should check for hasOverride in feedback info. Nonetheless, there's a NVIDIA bug returning always FALSE for hasOverride, that's why we currently force it to TRUE. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7993> 2024-11-28 12:24:11 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/kms/gstkmssink.c: * sys/kms/gstkmssink.h: * sys/kms/meson.build: kms: Bump libdrm requirement to 2.4.108 DRM modifier support requires drmModeFormatModifierBlobIterNext() which was added in 2.4.108. See: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5174#note_2673883 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7991> 2022-02-18 17:19:57 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * ext/closedcaption/gstcccombiner.c: cccombiner: Improve get_next_time to avoid spinning Avoid aggregate getting called in a loop when timed out but we're not in a state where we can produce a buffer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1746> 2022-02-18 17:06:44 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * ext/closedcaption/gstcccombiner.c: * ext/closedcaption/gstcccombiner.h: cccombiner: Add caption_pad field to avoid get_static_pad Save a reference to the caption pad as well. This will make the `get_next_time` implementation cheaper. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1746> 2024-11-26 16:27:19 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * ext/closedcaption/gstcccombiner.c: cccombiner: Pass caption_pad to schedule_caption Avoid having to find this pad again. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1746> 2022-02-18 17:06:44 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * ext/closedcaption/gstcccombiner.c: * ext/closedcaption/gstcccombiner.h: cccombiner: Add video_pad field to avoid pad get/ref/unref Saving a reference to this always-present pad simplifies the code and avoids a lot of pad list scans and refcounting. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1746> 2024-10-03 21:04:28 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkdecoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkvideo-private.c: * gst-libs/gst/vulkan/gstvkvideo-private.h: vulkan: add gst_vulkan_video_image_create_view() This function is moved from gstvkdecoder-private so it could be used by gstvkencoder-private too, removing there what it should be duplicated code. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7984> 2024-11-26 21:22:25 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: fix documentation The function doesn't take the reference from caller, it keeps it's own reference, so transfer is none. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974> 2024-09-06 11:22:54 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.h: vkencoder-private: fix code style and use gpointer Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974> 2024-11-26 14:46:40 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: fix and complete public functions prechecks Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974> 2024-11-26 16:22:47 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: check for layered buffer when new picture And balance `if` curly brackets. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974> 2024-10-03 22:31:54 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: early return if dpb pool or dpb buffer already exist Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974> 2024-08-15 17:51:23 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * tests/check/libs/vkvideoencodeh265.c: vkencoder-private: usage structure is provided by caller As all the profile structure, it's not intended to be filled in gst_vulkan_encoder_start() function, but by the caller. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974> 2024-09-19 12:31:33 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: fix how to get bitstream buffer size Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974> 2024-09-04 14:21:33 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: doc: fix function name Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974> 2024-10-03 22:22:17 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: use gst_clear_object() Instead of g_clear_object() for sake of coherence. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974> 2024-09-04 14:21:04 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: fix return value to gst_vulkan_encoder_encode() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974> 2024-11-25 17:51:31 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: doc: remove (in) annotation because it's the default one Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974> 2024-09-05 14:53:07 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: move out indent macros Outside of the structures whenever is possible, given indent limitations. In this way the code has a better readability. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974> 2024-11-26 21:34:25 +0800 Xi Ruoyao <xry111@xry111.site> * ext/x265/gstx265enc.c: x265: Allow building with x265-4.1 In x265-4.1 masteringDisplayColorVolume is changed from a pointer to a character array embedded in struct x265_param. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7968> 2024-11-26 16:52:05 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * tests/check/meson.build: meson: Don't unconditionally invoke the libsoup subproject fallback: kwarg will invoke the specified subproject even if required: false, which is not what we want here. Reported at https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4045#note_2674340 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7965> 2024-02-01 18:45:01 +0100 Mathieu Duponchelle <mathieu@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/closedcaption/gstcccombiner.c: * ext/closedcaption/gstcccombiner.h: cccombiner: expose input-meta-processing property It can be used to discard closed captions from the input pad if the matching video buffer already held closed captions. It is useful in a scenario where captions are generated for an AV stream, but the incoming stream already has embedded captions for some intervals, and those original captions should be preferred. It can also be used to make sure input CC meta is always dropped, the default behavior remains to append aggregated CC to whatever CC meta was already present on the input video buffer Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6072> 2024-11-23 22:08:56 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12device-private.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: d3d12converter: Gamma LUT related enhancements * Build gamma LUT using shader, instead of CPU side math then uploading * Make gamma LUT sharable across multiple converters Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7951> 2024-11-23 11:47:00 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3dshader/converter-hlsl/PSMain_gamma_lut.hlsl: * gst-libs/gst/d3dshader/converter-hlsl/hlsl.h: * gst-libs/gst/d3dshader/converter-hlsl/meson.build: * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.h: d3dshader: Add shader for building gamma LUT Newly added shader will be used by converter to construct gamma encode/decode LUT texture Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7951> 2024-11-19 16:52:29 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * ext/closedcaption/ccutils.c: ccutils: Rename wrote_first to write_field1 This better describes what we're doing. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7967> 2024-11-19 17:21:16 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * ext/closedcaption/ccutils.c: ccutils: Fix a typo in cc_buffer_take_cea608_field2 There are no users of cc_buffer_take_cea608_field2, so this never was a problem. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7967> 2024-11-19 16:42:11 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * ext/closedcaption/ccutils.c: ccutils: Fix a typo in max_buffer_time handling All users set max_buffer_time to GST_CLOCK_TIME_NONE, effectively infinite, so this never was a problem. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7967> 2024-11-19 13:47:55 +0100 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * ext/closedcaption/ccutils.c: ccutils: Remove broken branch This branch was added in dd00dab5e9e8650f3f00660c2e611f81f1e8cd5b but is never actually taken, as it requires `cc_data` to be null but `cc_data_len` to be non-null. It would then dereference the null `cc_data`. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7967> 2024-11-26 09:23:51 +0100 Albert Sjolund <alberts@axis.com> * ext/webrtc/gstwebrtcbin.c: webrtc: don't crash on invalid bundle id If the bundle id forwarded to connect_rtpfunnel is not valid, the assertion fails and crashes the program. This is now instead an error. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7963> 2024-11-22 11:31:18 -0700 Sebastien Cote <sebas642@gmail.com> * sys/applemedia/vtenc.c: vtenc: add support for the HLG color transfer Fixes #4047 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7947> 2024-11-13 16:04:44 +0100 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkoperation.c: vkoperation: update doc to skip barriers array methods Some methods are using arrays of element which type can vary at compile time. These methods should not be introspectable as it's not possible to determine the final type. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7880> 2023-10-20 23:05:01 +0800 Zhong Hongcheng <spartazhc@gmail.com> * tests/check/libs/h266parser.c: * tests/check/meson.build: tests: Add the VVC(H266) parser test cases Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5003> 2024-11-21 01:17:27 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/codecparsers/gsth266parser.c: libs: codecparsers: Implement the VVC(H266) parser part II Implement the picture header, slice header and SEI parsing functions. Co-authored-by: spartazhc <spartazhc@gmail.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5003> 2024-11-13 15:42:03 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/codecparsers/gsth266parser.c: * gst-libs/gst/codecparsers/meson.build: libs: codecparsers: Implement the VVC(H266) parser part I Implement all the VPS, SPS and APS parsing functions. Co-authored-by: spartazhc <spartazhc@gmail.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5003> 2024-11-13 15:39:49 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/codecparsers/gsth266parser.h: libs: codecparsers: Add the VVC(H266) parser header file Co-authored-by: spartazhc <spartazhc@gmail.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5003> 2024-11-20 20:32:09 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12utils.h: * sys/d3d12/plugin.cpp: d3d12: Add gst_d3d12_flush_all_devices() method ... and removing implicit flushing behavior on GstD3D12Device::finalize Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7929> 2024-11-20 10:42:13 +0200 Sebastian Dröge <sebastian@centricular.com> * sys/aja/gstajadeviceprovider.cpp: aja: Fix infinite loop in device provider Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7928> 2024-11-14 10:59:35 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/wayland/gstwllinuxdmabuf.c: wayland: dmabuf: Translate tiled strides GStreamer uses a different representation of tiled strides that needs to be translated before being sent to wayland. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7849> 2024-11-14 10:59:05 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2decoder.c: v4l2codecs: Use new helpers for DRM handling Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7849> 2024-11-14 09:46:28 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2decoder.c: v4l2codecs: Fix caps string leak in v4l2codecs Unlike gst_video_format_to_string(), gst_video_dma_drm_fourcc_to_string() return a freshly allocated string which needs to be free. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7849> 2024-11-08 16:22:16 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2decoder.c: v4l2codecs: decoder: Fixed unset dimension in caps When the driver does not implement ENUM_FRMESIZE for some specific formats, the caps limiting the sizes may endup empty, which results in assuming the driver can scale to any sizes. Ensure that the original size is in the caps to prevent this assumption. This happens with Hantro drive, since it only reply to that call if the format is postprocessed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7849> 2024-11-12 12:09:46 +0100 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2decoder.c: v4l2codecs: Use drm modifier to build caps Do not only use drm fourcc to build drm-format but also include the format modifier. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7849> 2024-11-07 13:06:03 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * ext/gtk/gstgtkwaylandsink.c: * ext/wayland/gstwaylandsink.c: waylandsink: Properly handle unrecoverable errors Allocation failures cannot be recovered and should lead to an error being posted on the bus. Otherwise the pipeline will just stall. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7903> 2024-11-07 12:49:10 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * ext/gtk/gstgtkwaylandsink.c: * ext/wayland/gstwaylandsink.c: waylandsink: Do not offer SHM pool when DMABuf is negotiated Pools are expected to produce DMABuf when the caps are negotiated with the associated caps feature. For that reason, avoid sharing the SHM pool in this case. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7903> 2024-11-18 11:00:36 +0100 Stéphane Cerveau <scerveau@igalia.com> * ext/zbar/gstzbar.c: zbar: fix documentation Fix some typos and markdown cleanup. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7914> 2024-11-18 10:59:51 +0100 Stéphane Cerveau <scerveau@igalia.com> * ext/zxing/gstzxing.cpp: zxing: update documentation Fix some typos and markdown cleanup. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7914> 2024-11-13 17:00:17 +1100 Matthew Waters <matthew@centricular.com> * sys/uvcgadget/configfs.c: uvcgadget: silence a maybe-uninitialized warning Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875> 2024-11-13 16:59:46 +1100 Matthew Waters <matthew@centricular.com> * ext/fdkaac/gstfdkaacenc.c: fdkaacenc: silence a maybe-unitialized warning Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875> 2024-11-13 16:58:41 +1100 Matthew Waters <matthew@centricular.com> * gst/rist/gstristrtxsend.c: ristrtxsend: silence a maybe-uninitialized warning Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875> 2024-11-13 16:58:15 +1100 Matthew Waters <matthew@centricular.com> * ext/codec2json/gstav12json.c: av12json: silence a maybe-unitialized warning Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875> 2024-11-13 16:12:41 +1100 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkvideoutils.c: vulkan/videoutils: silence some maybe-unitialized warnings Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875> 2024-11-16 13:20:16 +0800 He Junyan <junyan.he@intel.com> * docs/plugins/gst_plugins_cache.json: Doc: Update the kmssink caps after adding DMA support Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5174> 2024-11-08 13:43:53 +0100 Jakub Adam <jakub.adam@collabora.com> * sys/kms/gstkmsbufferpool.c: kmsbufferpool: Accept DMA_DRM caps in the config Only linear modifier is supported due to the dumb allocator's limitation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5174> 2024-09-07 00:43:37 +0200 Jakub Adam <jakub.adam@collabora.com> * sys/kms/gstkmssink.c: kmssink: ensure we have a valid vinfo_drm after set_caps Consequently drop the check in import_dmabuf Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5174> 2024-08-29 20:58:04 +0200 Jakub Adam <jakub.adam@collabora.com> * sys/kms/gstkmssink.c: kmssink: enumerate drm formats when IN_FORMATS not present Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5174> 2024-05-24 12:26:20 +0800 He Junyan <junyan.he@intel.com> * sys/kms/gstkmssink.c: kmssink: Do not provide DMA buffer pool for non-linear caps The dumb allocator does not support modifiers, so we can not allocate non-linear buffers by ourself. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5174> 2023-08-11 18:43:57 +0800 He Junyan <junyan.he@intel.com> * sys/kms/gstkmssink.c: * sys/kms/gstkmssink.h: kmssink: Handle the DMA buffer importing correctly Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5174> 2023-08-11 18:37:18 +0800 He Junyan <junyan.he@intel.com> * sys/kms/gstkmssink.c: * sys/kms/gstkmsutils.c: kmssink: Add DMA kind caps into sink caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5174> 2023-08-11 18:32:45 +0800 He Junyan <junyan.he@intel.com> * sys/kms/gstkmssink.c: kmssink: Add helper functions to create DMA and raw caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5174> 2023-08-11 18:28:49 +0800 He Junyan <junyan.he@intel.com> * sys/kms/gstkmssink.c: kmssink: Add a helper function to collect formats and modifiers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5174> 2023-08-11 18:02:42 +0800 He Junyan <junyan.he@intel.com> * sys/kms/gstkmsallocator.c: * sys/kms/gstkmsallocator.h: * sys/kms/gstkmssink.c: kmssink: Add modifier to gst_kms_allocator_dmabuf_import Use the new drmModeAddFB2WithModifiers() API for binding the non-linear BO. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5174> 2024-11-15 11:46:14 -0300 Thibault Saunier <tsaunier@igalia.com> * meson.build: meson: Bump minimum version to 1.3 Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4025 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7899> 2024-11-12 12:12:17 +0100 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2decoder.c: v4l2codecs: Test ioctl return value and errno Fix error testing when using V4L2_FMTDESC_FLAG_ENUM_ALL by using both errno and the return value. Fixes !7686 (merged) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7873> 2024-11-06 12:47:32 +0100 Stéphane Cerveau <scerveau@igalia.com> * ext/vulkan/vkdownload.c: * ext/vulkan/vkh264dec.c: * ext/vulkan/vkh265dec.c: * ext/vulkan/vksink.c: * ext/vulkan/vkupload.c: * gst-libs/gst/vulkan/gstvkutils.c: * gst-libs/gst/vulkan/gstvkutils.h: * gst-libs/gst/vulkan/gstvkvideofilter.c: * sys/applemedia/vtdec.c: vkutils: add gst_vulkan_ensure_element_device In order to keep the same device across the elements in the pipeline, use either the device id to create the device or get the device from the context set by the peer elements. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7843> 2024-11-08 10:21:19 +0100 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkinstance.c: * gst-libs/gst/vulkan/gstvkinstance.h: vkinstance: add gst_vulkan_instance_create_device_with_index This method will allow to create a device with its device_index preparing the support of multiple device. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7843> 2024-11-11 18:24:37 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/codecparsers/gsth264parser.c: * gst-libs/gst/codecparsers/gsth265parser.c: * gst-libs/gst/codecparsers/gstjpegparser.c: * gst-libs/gst/codecparsers/nalutils.c: * gst-libs/gst/codecparsers/nalutils.h: codecparser: remove unused headers Mainly <string.h> but also <stdlib.h> in jpegparse Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7869> 2024-11-11 17:47:48 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/codecparsers/gsth265bitwriter.c: * gst-libs/gst/codecparsers/gsth265parser.c: * gst-libs/gst/codecparsers/meson.build: * gst-libs/gst/codecparsers/nalutils.h: codecparsers: avoid libc math library Instead of the libc ceil() and pow() machinery for double types, since the library uses it for unsigned integers use a simple math function for for ceil division and bit left shift for integer power of two. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7869> 2024-10-09 13:47:41 -0400 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/codecparsers/gsth265bitwriter.c: * gst-libs/gst/codecparsers/gsth265parser.c: h265parser/bitwriter: add some comments for ceil_log2 use Validate that the length of field must be calculate with ceil_logs2 and not bit storage. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7429> 2024-10-09 13:46:17 -0400 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/codecparsers/gsth264parser.c: h264parse: use of ceil_log2 instead of bit_storage According to the specification: The length of the slice_group_id[ i ] syntax element is Ceil( Log2( num_slice_groups_minus1 + 1 ) ) bits Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7429> 2021-07-01 13:09:04 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/mpegtsmux/gstbasetsmux.c: mpegtsmux: Mux timestampless buffers immediately Instead of leaving them queued indefinitely, or until we're timing out and it's the only buffer queued. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7870> 2024-11-12 11:01:03 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/mpegtsmux/gstbasetsmux.c: mpegtsmux: Don't time out in live mode if no timestamped next buffer is available The muxer can only advance the time if it has a timestamped buffer that can be output, otherwise it will just busy-wait and use up a lot of CPU. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3912 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7870> 2024-11-14 10:37:05 +0100 Stéphane Cerveau <scerveau@igalia.com> * docs/plugins/gst_plugins_cache.json: * ext/zxing/gstzxing.cpp: * ext/zxing/gstzxingplugin.c: gst_plugins-cache: add zxing plugin update documentation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7887> 2024-11-12 09:01:49 +0100 Edward Hervey <edward@centricular.com> * gst/mpegtsmux/gstbasetsmux.c: mpegtsmux: Post error on the bus if no mapping is found This is more useful/visible Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7707> 2024-10-22 08:42:17 +0200 Edward Hervey <edward@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst/mpegtsdemux/gstmpegdesc.h: * gst/mpegtsdemux/tsdemux.c: * gst/mpegtsmux/gstbasetsmux.c: * gst/mpegtsmux/gstbasetsmux.h: * gst/mpegtsmux/gstmpegtsmux.c: * gst/mpegtsmux/tsmux/tsmuxstream.c: * gst/mpegtsmux/tsmux/tsmuxstream.h: mpegts: Add custom mapping for vp9 This is a custom mapping. There isn't much needed apart from that to store vp9 in mpeg-ts since the bitstream is self contained. Since there are no official specification we don't want people to be mistaken in believing that. Therefore that mapping is only used in the muxer if the (new) property `enable-custom-mappings` is set to TRUE. * The MPEG-TS Stream Type is Private Data (0x6) with the registration descriptor set to `VP09`. * The Access Unit are VP9 frames stored in PES packets * As there is no emulation prevention byte in VP9 elementary stream, the can be misdetection of PES start code. To avoid this, the start of a PES packet must be signalled using the Payload Unit Start Indicator in the transport packet header Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7707> 2024-11-08 10:18:09 -0300 Thibault Saunier <tsaunier@igalia.com> * sys/nvcodec/gstnvdecoder.cpp: nvcodec: gl now supports Y444_16LE Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7858> 2024-11-12 02:06:39 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12swapchainsink.cpp: d3d12swapchainsink: Fix error when the sink is reused Release backbuffer just before releasing swapchain Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7867> 2024-11-05 14:34:03 +0100 Théo Maillart <tmaillart@freebox.fr> * gst/videoparsers/gstmpegvideoparse.c: mpegvideoparse: do not set delta unit flag on unknown frame type When encoding an image to mpeg2 video, with something like: gst-launch-1.0 encodebin name=e profile=mpegpsmux:video/mpeg,mpegversion=2,systemstream=false ! \ filesink location=sample.mpg filesrc num-buffers=1 blocksize=$(stat -c%s sample.png) \ location=sample/dts.png ! pngdec ! e. The only frame's type is set to an invalid value 0 The consequence is that mpegvideoparse sets the delta unit flag on the buffer because it is not an I frame, then decodebin3 drops this only frame because the delta unit flag is set and the decoder receives eos before it was able to receive any encoded data Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7832> 2024-11-11 17:44:22 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/codecparsers/gsth264bitwriter.c: * gst-libs/gst/codecparsers/gsth265bitwriter.c: h26Xbitwriter: use quote form directive for internal header Since nalutils.h is not installed it should be included for the local path. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7868> 2024-10-11 11:57:15 -0400 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/codecparsers/gsth264bitwriter.c: * gst-libs/gst/codecparsers/gsth264bitwriter.h: * tests/check/libs/h264bitwriter.c: h264bitwriter: implement gst_h264_bit_writer_filler() This is required for vulkan encoder since it can only write slides after aligned offsets. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7785> 2024-11-08 19:05:41 -0500 Sid Sethupathi <sid.sethupathi@gmail.com> * ext/gs/README.md: gs: update building README Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7860> 2023-10-28 13:01:58 +0200 Diego Nieto <diego.nieto.m@outlook.com> * tests/check/elements/jifmux.c: exiftag: handle GST_TAG_CAPTURING_LIGHT_SOURCE tag This exif tag allows to specify the different light conditions when taking a picture. This tag is defined in: https://exiftool.org/TagNames/EXIF.html#LightSource Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5571> 2024-09-17 11:47:47 +0300 Sebastian Dröge <sebastian@centricular.com> * ext/closedcaption/gstccconverter.c: * tests/check/elements/ccconverter.c: ccconverter: Don't override in_fps_entry when trying to take output This allows to handle CDP streams where the framerate is not provided by the caps and generally gives preference to the framerate inside the CDP packets over the one in the caps. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7532> 2024-11-04 19:30:02 -0500 Olivier Crête <olivier.crete@collabora.com> * gst-libs/gst/analytics/gsttensor.h: * gst-libs/gst/analytics/gsttensormeta.c: * gst-libs/gst/analytics/gsttensormeta.h: * gst/tensordecoders/gstssdobjectdetector.c: tensormeta: Add APIs to create and access GstTensorMeta contents Also document those APIs better. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6000> 2024-11-04 19:29:43 -0500 Olivier Crête <olivier.crete@collabora.com> * gst-libs/gst/analytics/gsttensor.c: * gst-libs/gst/analytics/gsttensor.h: * gst-libs/gst/analytics/gsttensormeta.c: tensor: Add APIs to create and access GstTensor contents Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6000> 2024-11-04 17:04:28 -0500 Olivier Crête <olivier.crete@collabora.com> * ext/onnx/gstonnxclient.cpp: * ext/onnx/gstonnxinference.cpp: * gst-libs/gst/analytics/gsttensor.h: * gst/tensordecoders/gstssdobjectdetector.c: tensors: Use full GstTensorDataType type name in type members Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6000> 2024-10-31 16:03:31 -0400 Olivier Crête <olivier.crete@collabora.com> * ext/onnx/gstonnxclient.cpp: * gst-libs/gst/analytics/gsttensormeta.c: * gst-libs/gst/analytics/gsttensormeta.h: analytics: Add APIs to add or get a GstTensorMeta Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6000> 2024-09-24 10:53:05 -0400 Daniel Morin <daniel.morin@collabora.com> * ext/onnx/gstonnxclient.cpp: * gst-libs/gst/analytics/gsttensor.c: * gst-libs/gst/analytics/gsttensor.h: analytics: Adding abstraction on tensor dims Tensor can be row or col major, but it's also possible that the order by we need to read the tensor with more than two dimension need to be described. The reserved field in GstTensorDim is there for this purpose. If we need this we can add GST_TENSOR_DIM_ORDER_INDEXED, and follow an index defining order for each dimension. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6000> 2024-10-17 17:28:24 -0400 Daniel Morin <daniel.morin@collabora.com> * ext/onnx/gstonnxclient.cpp: * gst-libs/gst/analytics/gsttensor.c: * gst-libs/gst/analytics/gsttensor.h: * gst-libs/gst/analytics/gsttensormeta.c: * gst-libs/gst/analytics/gsttensormeta.h: * gst-libs/gst/analytics/meson.build: * gst/tensordecoders/gstssdobjectdetector.c: analytics: Make GstTensor more suitable for inline allocation GstTensor contained two fields (data, dims) that were dynamicallay allocated. For data it's for a GstBuffer and we have pool for efficient memory management. For dims it's a small array to store the dimension of the tensor. The dims field can be allocated inplace by moving it at the end of the structure. This will allow a better memory management when GstTensor is stored in an analytics meta which will take advantage of the _clear interface for re-use. - New api to allocate and free GstTensor To continue to support use-cases where GstTensor is not stored in an analytics-meta we provide gst_tensor_alloc, gst_tensor_alloc_n and gst_tensor_free that will facilitate memory management. - Make GstTensor a boxed type Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6000> 2024-07-17 14:39:42 -0400 Daniel Morin <daniel.morin@collabora.com> * ext/onnx/gstonnxclient.cpp: * ext/onnx/gstonnxinference.cpp: * gst-libs/gst/analytics/gsttensor.h: * gst-libs/gst/analytics/gsttensormeta.h: analytics: Move batch to GstTensor - batch_size is required to interpret the tensor depending on the tensor format the batch are not necessarily memory plane therefore it's preferable to keep it inside GstTensor. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6000> 2024-10-17 17:27:37 -0400 Daniel Morin <daniel.morin@collabora.com> * ext/onnx/gstonnxinference.cpp: * gst-libs/gst/analytics/gsttensor.h: * gst-libs/gst/analytics/gsttensormeta.h: * gst-libs/gst/analytics/meson.build: analytics: Decouple GstTensor from GstTensorMeta - To support transporting tensor as GstMeta, Analytics-Meta and Media we need to decouple GstTensor from GstTensorMeta. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6000> 2024-01-25 01:09:13 -0500 Olivier Crête <olivier.crete@collabora.com> * docs/plugins/gst_plugins_cache.json: * ext/onnx/gstonnx.c: * ext/onnx/meson.build: * gst/meson.build: * gst/tensordecoders/gstssdobjectdetector.c: * gst/tensordecoders/gstssdobjectdetector.h: * gst/tensordecoders/gsttensordecoders.c: * gst/tensordecoders/meson.build: * meson_options.txt: tensordecoders: Move decoder out of the ONNX plugin Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6000> 2024-01-24 21:12:17 -0500 Olivier Crête <olivier.crete@collabora.com> * ext/onnx/decoders/gstssdobjectdetector.c: * ext/onnx/gstonnx.c: * ext/onnx/gstonnxclient.h: * ext/onnx/meson.build: * gst-libs/gst/analytics/analytics.h: * gst-libs/gst/analytics/gsttensormeta.c: * gst-libs/gst/analytics/gsttensormeta.h: * gst-libs/gst/analytics/meson.build: analytics: Move tensor meta to the analytics library Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6000> 2024-11-06 16:35:10 +0100 wbartel <wilhelm.bartel@streamonkey.de> * ext/webrtc/gstwebrtcbin.c: webrtcbin: fix malformed docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7847> 2024-11-06 12:05:25 +0100 Adrien De Coninck <a.deconinck@intopix.com> * gst/mpegtsdemux/tsdemux.c: tsdemux: validate frat before setting framerate in caps From JPEG-XS part3 : "If the frame rate is unknown, the frat parameter is 0." Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7836> 2024-11-05 18:04:44 +0100 Adrien De Coninck <a.deconinck@intopix.com> * gst/mpegtsdemux/tsdemux.c: tsdemux: use JXS_video_descriptor "frat" to set caps "framerate" Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7836> 2024-11-05 14:23:05 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/timecode/gsttimecodestamper.c: timecodestamper: Don't fail the latency query in LTC mode if we have no framerate Only in LTC mode we introduce additional latency that is depending on only on a property and not on the framerate, so waiting for the framerate is not necessary. In all other modes no latency is introduced at all and the latency query can simply be proxied. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7831> 2024-03-16 00:38:58 +0200 Mart Raudsepp <mart.raudsepp@globalm.media> * docs/plugins/gst_plugins_cache.json: * gst/mpegtsmux/gstbasetsmux.c: * gst/mpegtsmux/gstmpegtsmux.c: * gst/mpegtsmux/tsmux/tsmuxstream.c: * gst/mpegtsmux/tsmux/tsmuxstream.h: mpegtsmux: Add support for SMPTE 302M (audio/x-smpte-302m) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6530> 2024-11-03 17:30:40 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/meson.build: meson: bail out earlier in docs subdir if docs are disabled The gst_dep.get_variable('libexecdir') may fail in some scenarios (e.g. building a module alone inside an uninstalled devenv) and it shouldn't really be reached in the first place if docs are disabled via options. Also to avoid confusing meson messages when cross-compiling or doing a static build. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7818> 2024-11-03 10:42:33 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12swapchainsink.cpp: d3d12swapchainsink: Add support for GstColorBalance interface ... and adding hue, saturation, brightness, and contrast properties Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7817> 2024-11-03 09:20:24 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12convert.h: d3d12convert: Add support for GstColorBalance interface ... and adding hue, saturation, brightness, and contrast properties Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7817> 2024-11-03 06:36:32 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12videosink.cpp: * sys/d3d12/gstd3d12window.cpp: * sys/d3d12/gstd3d12window.h: d3d12videosink: Add support for GstColorBalance interface ... and adding hue, saturation, brightness, and contrast properties Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7817> 2024-11-03 04:00:25 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d11/gstd3d11converter.cpp: * gst-libs/gst/d3d12/gstd3d12converter-builder.cpp: * gst-libs/gst/d3d12/gstd3d12converter-builder.h: * gst-libs/gst/d3d12/gstd3d12converter-private.h: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12converter.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3dshader/converter-hlsl/PSMain_converter.hlsl: * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.h: d3d12converter: Add support for colorbalance Adding support for hue, saturation, brightness, and contrast adjustment Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7817> 2024-11-03 17:37:03 +0000 Tim-Philipp Müller <tim@centricular.com> * po/de.po: * po/es.po: * po/hr.po: * po/ro.po: * po/sl.po: * po/sv.po: gst-plugins-bad: update translations Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7819> 2024-11-02 03:18:26 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d11/gstd3d11converter.cpp: d3d11converter: Fix constant buffer update Fixing regression of https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6434 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7814> 2024-08-06 18:09:58 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/videoparsers/gsth264parse.c: * gst/videoparsers/gsth264parse.h: h264parse: Fix pic_timing SEI replacement The calculated position was off. I'm not sure of the exact cause; possibly because we're in AU-aligned byte-stream mode, which means `transform` is true. Replacing the math that calculates the NALU positions with code more similar to what is already in use for `idr_pos` seems to have fixed it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7318> 2024-07-30 14:31:45 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/videoparsers/gsth264parse.c: * gst/videoparsers/gsth265parse.c: h264parse, h265parse: Support drop frame codes with counting_type 6 Tested with an Ateme Kyrion CM5000, which uses 6 when it drops 4 frames from the code for 1080p@59.94. Apply the same change to h265parse, with reference to the spec. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7316> 2024-10-27 04:26:46 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12videosink.cpp: * sys/d3d12/gstd3d12window-win32.cpp: * sys/d3d12/gstd3d12window.cpp: * sys/d3d12/gstd3d12window.h: d3d12videosink: Add support for mouse scroll events Handle WM_MOUSEHWHEEL and WM_MOUSEWHEEL events Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7774> 2024-10-29 09:49:50 +0100 Edward Hervey <edward@centricular.com> * gst/mpegtsdemux/tsdemux.c: * gst/mpegtsmux/gstbasetsmux.c: mpegts: Fix bit-depth storage for jpeg-xs As per ISO/IEC 21122-3 2019: > Sample_Bitdepth code shall specify directly the bitdepth of the components minus 1 Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3945 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7775> 2024-10-29 09:43:11 +0100 Edward Hervey <edward@centricular.com> * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: mpegts: Fix JPEG-XS Extension Descriptor handling The initial specification for the descriptor (from H.222.0 06/21) was wrong and introduced duplicate descriptor_tag/descriptor_length field. This was later corrected in H.222.0 (2021) Amendment 1 (12/22) Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3945 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7775> 2024-10-29 11:29:05 +0100 Edward Hervey <edward@centricular.com> * ext/srt/gstsrtobject.c: srt: Don't attempt to reconnect on authentication failures This is a fatal issue which can't be recovered Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1550 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7776> 2024-10-22 22:29:51 +1100 Jan Schmidt <jan@centricular.com> * sys/androidmedia/gstamc-constants.h: * sys/androidmedia/gstamc.c: androidmedia: Add more pixel format mappings Add missing pixel format constants, and mappings for P010, packed variants of 420 and RGBA layouts to GStreamer buffer formats. This fixes problems with android decoders refusing to output raw video frames with decoders that announce support for these common pixel formats and only allowing the 'hardware surfaces output' path. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7743> 2024-10-22 21:28:04 +1100 Jan Schmidt <jan@centricular.com> * sys/androidmedia/gstamc-constants.h: * sys/androidmedia/gstamc.c: androidmedia: Add extra H.26[45] profile mappings Update the android headers and add missing mappings for H.264/H.265 profiles that have been added in newer android releases Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7743> 2024-10-28 14:37:04 +0100 Mathieu Duponchelle <mathieu@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/closedcaption/gstcea608mux.c: cea608mux: expose force-live property Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7765> 2024-10-22 18:08:19 +1100 Matthew Waters <matthew@centricular.com> * docs/plugins/gst_plugins_cache.json: * sys/decklink/gstdecklink.cpp: * sys/decklink/gstdecklink.h: * sys/decklink/gstdecklinkvideosink.cpp: * sys/decklink/gstdecklinkvideosrc.cpp: decklink: reinstate some hardcoded colorimetry handling Needed when we don't yet have an open device and are doing negotiation. colorimetry=bt601 is only actually supported by decklink for PAL and NTSC formats. All other formats use bt709 or above. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7742> 2024-10-22 18:06:46 +1100 Matthew Waters <matthew@centricular.com> * sys/decklink/gstdecklink.cpp: decklink: only expose HDR colorimetry if 2020 colorspace is supported Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7742> 2024-10-22 13:23:06 +1100 Matthew Waters <matthew@centricular.com> * sys/decklink/gstdecklinkvideosrc.cpp: decklinkvideosrc: ignore HDR metadata consisting of all zeros In some cases decklinkvideosink may produce such stream when the information is unknown. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7742> 2024-10-22 13:20:30 +1100 Matthew Waters <matthew@centricular.com> * sys/decklink/gstdecklinkvideosink.cpp: decklinkvideosink: provide default values when HDR metadata is not available Some file format standards don't require mastering-display-info and content-light-level values to be provided. Decklink however requires the static HDR metdata for the PQ transfer function which we may not have. CTA-861-G mentions that in this case, 0 may provided as an 'unknown' value which is what we use here. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7742> 2024-10-22 13:18:58 +1100 Matthew Waters <matthew@centricular.com> * sys/decklink/gstdecklinkvideosink.cpp: decklinkvideosink: fix incorrect EOTF value Checking for mastering-display-info twice is incorrect. One of the checks should be for the content-light-level. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7742> 2024-09-24 13:55:39 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/plugins/gst_plugins_cache.json: * gst-libs/gst/wayland/gstwlvideoformat.c: * gst-libs/gst/wayland/gstwlvideoformat.h: wayland: Add NV15 support This format, which maps to NV12_10LE40 in GStreamer is produced by Rockchip video decoders when decoding 4:2:0 10 bit content. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7569> 2024-10-22 23:41:13 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/codecs/gstvp8decoder.c: vp8decoder: Fix resolution change handling Do not store resolution in set_format() so that resolution change can be detected on keyframe as intended. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3928 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7710> 2024-10-25 16:37:15 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/rtmp2/gstrtmp2sink.c: rtmp2sink: Initialize base_ts / last_ts with the actual first observed timestamp Initializing it with zero can falsely trigger the overflow / underflow detection code if the first observed timestamp is a big integer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7745> 2024-10-28 18:58:48 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/va/gstvaav1enc.c: * sys/va/gstvavp9enc.c: va{av1,vp9}enc: fix return value Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7773> 2024-05-27 09:45:00 -0400 Xavier Claessens <xavier.claessens@collabora.com> * tests/check/elements/unixfd.c: Revert "unixfd: disable flaky test_unixfd_segment for now" This reverts commit 06cd4e24578caf1e16e364eb56edbbb065b8533e. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6765> 2024-04-29 14:30:49 -0400 Xavier Claessens <xavier.claessens@collabora.com> * docs/plugins/gst_plugins_cache.json: * gst/unixfd/gstunixfdsink.c: * tests/check/elements/unixfd.c: unixfd: Fix racy unit test by adding wait-for-connection property Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6765> 2024-10-26 11:42:48 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/play/gstplay.c: * gst-libs/gst/play/gstplay.h: play: Improve play message API inconsistencies * Consistently name parse functions according to their message type and deprecate the misnamed ones, * Add missing parse functions, * Check for the correct message type when parsing * Use correct field name for warning message details Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7754> 2024-10-25 11:10:38 -0400 Julian Bouzas <julian.bouzas@collabora.com> * ext/lcevcencoder/gstlcevch264enc.c: lcevch264enc: Set 'byte-stream' format and 'au' alignment in output caps This is because the LCEVC EIL SDK from V-Nova always outputs encoded video in that format. This also avoids using the parser in some scenarios. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7750> 2024-10-21 13:32:03 +0200 Pablo GarcÃa <pgarcia@fluendo.com> * sys/d3d11/gstd3d11videosink.cpp: * sys/d3d11/gstd3d11window.cpp: * sys/d3d11/gstd3d11window.h: * sys/d3d11/gstd3d11window_win32.cpp: d3d11: implement mouse wheel events Adittion of d3d11 support for WM_MOUSEWHEEL and WM_MOUSEHWHEEL events, which are triggered when the mouse is scrolled vertically or horizontally respectively. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7705> 2024-09-21 19:16:29 +0300 Jordan Petridis <jordan@centricular.com> * tests/check/gst-plugins-bad.supp: ci: add suppressions for OpenSSL false positives Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7455> 2024-09-21 19:01:55 +0300 Jordan Petridis <jordan@centricular.com> * tests/check/gst-plugins-bad.supp: gst-plugins-bad.supp: Remvoe gssdp leaks that have been fixed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7455> 2024-09-20 11:02:42 +0200 Edward Hervey <edward@centricular.com> * sys/va/gstvacompositor.c: vacompositor: Add since marker Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7455> 2024-09-04 17:57:08 +0200 Edward Hervey <edward@centricular.com> * gst-libs/gst/codecparsers/gstav1parser.c: * gst-libs/gst/codecparsers/gstav1parser.h: * gst-libs/gst/codecparsers/gsth264parser.c: * gst-libs/gst/codecparsers/gsth265parser.c: codecparsers: Fix gtk-doc Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7455> 2024-09-04 10:11:40 +0200 Edward Hervey <edward@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/isac/gstisacenc.c: * ext/ldac/gstldacenc.c: * ext/svtav1/gstsvtav1enc.c: * ext/svthevcenc/gstsvthevcenc.c: bad: Mark more types as plugin API Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7455> 2024-09-03 15:00:39 +0200 Edward Hervey <edward@centricular.com> * gst-libs/gst/codecparsers/gstav1parser.h: docs: Fix av1parser symbols Don't use un-named structures Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7455> 2024-06-28 14:24:54 +0200 Edward Hervey <edward@centricular.com> * docs/plugins/gst_plugins_cache.json: plugins_cache: Update for fedora 40 build Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7455> 2024-09-21 18:11:20 +0300 Jordan Petridis <jordan@centricular.com> * docs/plugins/gst_plugins_cache.json: * sys/va/gstvafilter.c: gstvafilter: Add back missing property comments In b1cda4439bc9170b4af60ab464471f58ea770f58 the property comments were removed, even though these are marked as public api. Add back the comments, and a Since version for interpolation-method. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7455> 2024-10-24 09:17:54 +0200 Edward Hervey <edward@centricular.com> * gst-libs/gst/vulkan/gstvkdevice.c: * gst-libs/gst/vulkan/gstvkdisplay.c: * gst-libs/gst/vulkan/gstvktrash.c: all: Fix closure annotations This was misused almost everywhere. See https://gi.readthedocs.io/en/latest/annotations/giannotations.html#support-for-gobject-closures and: https://www.bassi.io/articles/2023/02/20/bindable-api-2023/ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7725> 2024-10-15 16:07:42 +0200 Diego Nieto <diego.nieto.m@outlook.com> * gst/debugutils/gstvideocodectestsink.c: debugutils: videocodectestsink: support GRAY8 and GRAY10_LE{16,32} Add support for: * GST_VIDEO_FORMAT_GRAY8 * GST_VIDEO_FORMAT_GRAY10_LE16 * GST_VIDEO_FORMAT_GRAY10_LE32 These formats are used by Fraunhofer VVC encoder and decoder. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7706> 2024-10-21 11:50:23 +0200 Carlos Falgueras GarcÃa <cfalgueras@fluendo.com> * docs/plugins/gst_plugins_cache.json: video: Add GRAY10_LE16 support This adds a 10-bit variant of grayscale packed into 16 bits little-endian words. The MSB 6 bits are padding and should be ignored. This format is used by Fraunhofer VVC encoder and decoder libraries. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7706> 2024-10-23 14:28:30 +0200 Peter Stensson <petest@axis.com> * gst/codectimestamper/gstcodectimestamper.c: * tests/check/elements/h264timestamper.c: codectimestamper: Fix gint wraparound in pts_compare_func The diff between compared timestamps might be outside the gint range resulting in wrong sorting results. This patch corrects that by comparing the timestamps and then returning -1, 0 or 1 depending on the result. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7726> 2024-10-24 14:40:23 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> * sys/applemedia/vtdec.c: vtdec: add support for level 6 6.1 and 6.2 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7729> 2024-10-22 09:13:06 -0600 Jordan Yelloz <jordan.yelloz@collabora.com> * gst/mpegtsmux/tsmux/tsmux.c: mpegtsmux: Schedule PMT update on stream removal Following the behavior of tsmux_program_add_stream(), this ensures that a PMT update will also be caused by removal of a stream from a program. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7719> 2024-09-30 15:51:04 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/mpegtsdemux/mpegtspacketizer.c: mpegtsdemux: Handle PTS/DTS wraparound with ignore-pcr=true The wraparound handling code assumes that the PCR gets updated regularly for being able to detect wraparounds. With ignore-pcr=true that was not the case and it stayed initialized at 1h forever. To avoid this problem, update the fake PCR whenever the PTS advanced by more than 5s, and also detect wraparounds in these fake PCRs. Problem can be reproduced with $ gst-launch-1.0 videotestsrc pattern=black ! video/x-raw,framerate=1/5 ! \ x264enc speed-preset=ultrafast tune=zerolatency ! mpegtsmux ! \ tsdemux ignore-pcr=true ! fakesink which restarts timestamps at 0 after around 26h30m. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7588> 2024-10-24 06:10:13 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/meson.build: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12decodercpbpool.cpp: * sys/d3d12/gstd3d12mipgen.cpp: * sys/d3d12/gstd3d12pluginutils.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12window-win32.cpp: * sys/d3d12/meson.build: * sys/nvcodec/gstcudainterop_d3d12.cpp: d3d12: Additional fixes for MinGW build Various fixes for GCC build, including actual bug fixes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7722> 2024-10-23 04:41:23 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/meson.build: * sys/d3d12/meson.build: d3d12: Fix MinGW build with installed DirectX-Headers Required for cerbero MinGW build Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7154> 2024-10-18 18:09:01 -0400 Daniel Morin <daniel.morin@collabora.com> * ext/onnx/decoders/gstssdobjectdetector.c: tensordecoder: Correct Klass, for ssd TD Tensor decoder need a specific klass to be able to auto-plug them Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7698> 2024-10-10 17:24:34 +0200 Jochen Henneberg <jochen@centricular.com> * tests/examples/va/vaenc-dynamic-reconfigure.c: examples: va: Added VP8 encoder to dynamic reconfigure Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6959> 2024-10-10 17:22:34 +0200 Jochen Henneberg <jochen@centricular.com> * sys/va/gstvavp8enc.c: * sys/va/gstvavp8enc.h: * sys/va/meson.build: * sys/va/plugin.c: va: Added VP8 encoder Fixes #3430 Fixes #3576 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6959> 2024-10-10 17:21:25 +0200 Jochen Henneberg <jochen@centricular.com> * gst-libs/gst/codecparsers/gstvp8parser.h: codecparsers: vp8parser: Added frame type enums Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6959> 2024-10-21 00:23:41 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12mipmapping.cpp: d3d12mipmapping: Fix debug category Fixing copying-and-pasting mistake Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7701> 2024-06-20 16:52:46 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2codecav1dec.c: * sys/v4l2codecs/gstv4l2codecdevice.h: * sys/v4l2codecs/gstv4l2codech264dec.c: * sys/v4l2codecs/gstv4l2codech265dec.c: * sys/v4l2codecs/gstv4l2codecmpeg2dec.c: * sys/v4l2codecs/gstv4l2codecvp8dec.c: * sys/v4l2codecs/gstv4l2codecvp9dec.c: * sys/v4l2codecs/gstv4l2decoder.c: * sys/v4l2codecs/gstv4l2decoder.h: v4l2codecs: dynamically discovers supported pixels formats If the driver allows it, for each stateless decoder, enumerate all the pixels formats and use this list for source pad instead of a static template. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7686> 2024-06-20 16:51:07 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/linux/videodev2.h: v4l2codecs: Update videodev2.h with V4L2_FMTDESC_FLAG_ENUM_ALL flag Add V4L2_FMTDESC_FLAG_ENUM_ALL flag to support discovering all possible pixel formats. Add V4L2_FMT_FLAG_META_LINE_BASED to not create a hole in flag definition. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7686> 2024-10-11 11:58:37 -0400 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/codecparsers/gsth264bitwriter.c: * gst-libs/gst/codecparsers/gsth265bitwriter.c: h26xbitwriter: false have_space if aligning fails on aud Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7655> 2024-10-18 15:10:56 +0200 Edward Hervey <edward@centricular.com> * ext/qroverlay/gstbaseqroverlay.c: qrbaseoverlay: Add doc/since Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7692> 2024-10-15 16:44:27 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: vaav1enc: Do not enable palette mode by default Palette mode should only be enabled only when we know that the content of the picture is simple. For example, only white letters on black screen in SCC mode. So, by default, we need to disable it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7668> 2024-09-27 18:01:53 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/kms/gstkmssink.c: kmssink: Add IMX-DCSS auto-detection Add IMX DCSS display controller into list of auto-detected modules. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7685> 2024-09-20 13:34:34 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2codecvp9dec.c: v4l2codecs: vp9: Allow inter-frames resolution change When the stream resolution change it is needed to negotiate a new pools and to update the caps. Resolution change could occurs on a new sequence or a new picture so move resolution change detection code in a common function. For memory allocation reasons, only allows resolution change on non keyframe if the driver support remove buffer feature. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7684> 2024-09-20 10:48:39 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2decoder.c: codecs:vp9 decoder: Remove unsused info field Video info field is never used so remove it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7684> 2024-09-20 10:30:01 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * gst-libs/gst/codecs/gstvp9decoder.c: codecs: vp9 decoder: Drain output buffers before resolution change We must drain the pending output picture so that subclass can renegotiate the caps. Not doing so while still renegotiating would mean that the subclass would have to do an allocation query before pushing the caps. Pushing the caps now without this would also not work since these caps won't match the pending buffers format. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7684> 2024-05-27 14:28:18 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2codecallocator.c: * sys/v4l2codecs/gstv4l2decoder.c: * sys/v4l2codecs/gstv4l2decoder.h: v4l2codecs: Add remove buffers helpers Add helpers function to call VIDIOC_REMOVE_BUFS ioctl. If the driver support this feature buffers are removed from the queue when: - the pool when is detached from the decoded. - the pool is released. - allocation failed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7684> 2024-05-27 13:52:28 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2decoder.c: v4l2codecs: Do not register stateless decoder if the driver doesn't support VIDIOC_CREATE_BUFS If the driver can't allocate buffers with VIDIOC_CREATE_BUFS do not register it has stateless decoder. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7684> 2023-06-19 11:09:22 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2codecallocator.c: * sys/v4l2codecs/gstv4l2decoder.c: * sys/v4l2codecs/gstv4l2decoder.h: v4l2codecs: Replace VIDIOC_REQBUFS calls by VIDIOC_CREATE_BUFS Use VIDIOC_CREATE_BUFS ioctl to create buffers instead of VIDIOC_REQBUFS because it allows to create buffers also while streaming. To prepare the introduction of VIDIOC_REMOVE_BUFFERS create the buffers one per one instead of a range of them. This way it can, in the futur, fill the holes. gst_v4l2_decoder_request_buffers() is stil used to remove all the buffers of the queue. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7684> 2024-05-07 10:48:05 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/linux/videodev2.h: v4l2codecs: udpate videodev2.h Update videodev2.h to be aligned with kernel version v6.10 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7684> 2024-10-14 11:26:20 +0200 Emil Ljungdahl <emillj@axis.com> * ext/webrtc/gstwebrtcbin.c: webrtcbin: Clean up bin elements when datachannel is removed When a datachannel within a session is removed after proper close, reference to the error_ignore_bin elements of the datachannel appsrc/appsink were left in webrtcbin. This caused the bin-objects to be left and not freed until the whole webrtc session was terminated. Among other things that includes a thread from the appsrc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7675> 2024-10-09 12:32:34 -0400 Francisco Javier Velázquez-GarcÃa <francisco.velazquez@appear.net> * ext/srt/gstsrtsink.c: srtsink: Add guard for null error when SRT open fails Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7628> 2024-10-09 12:08:10 -0400 Francisco Javier Velázquez-GarcÃa <francisco.velazquez@appear.net> * ext/srt/gstsrtobject.c: srtsink: Register SRT listen callback before binding socket This change https://github.com/Haivision/srt/pull/2683 forces us to call `srt_listen_callback` before `srt_listen`. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7628> 2024-07-08 17:54:03 -0400 Daniel Morin <daniel.morin@collabora.com> * tests/check/libs/analyticsmeta.c: test: Adding a test for segmentation analytics-meta Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6026> 2024-07-08 17:52:24 -0400 Daniel Morin <daniel.morin@collabora.com> * gst-libs/gst/analytics/analytics.h: * gst-libs/gst/analytics/gstanalyticssegmentationmtd.c: * gst-libs/gst/analytics/gstanalyticssegmentationmtd.h: * gst-libs/gst/analytics/meson.build: analytics: add segmentation analytics-meta - Add a new analytics-meta to store segmentation analysis result. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6026> 2024-07-08 17:47:13 -0400 Daniel Morin <daniel.morin@collabora.com> * gst-libs/gst/analytics/gstanalyticsmeta.c: * gst-libs/gst/analytics/gstanalyticsmeta.h: * gst-libs/gst/analytics/gstanalyticssegmentationmtd.c: analytics: Allow specific analytics-meta (Mtd) to handle their clear - Add mtd_meta_clear to allow specific analytics-meta to handle their clear operation specific to their type. - Clear mtd's attached when analytic-meta is freed. When the buffer where analytics-meta is attached is not from a buffer pool gst_analytics_relation_meta_clear will not be called unless we explicitly call it in _free. This important otherwise _mtd_clear are not called and lead to leak if embedded mtd's allocated memory - Un-ref in transform if it's a copy Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6026> 2024-10-12 21:38:08 +0300 Jordan Petridis <jordan@centricular.com> * tests/check/elements/lc3.c: lc3: tests: Zero out the buffer we allocate for the tests Otherwise liblc3 will try to access the uninitialized memory and it makes valgrind very sad. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7657> 2024-10-14 15:31:54 +0200 Stéphane Cerveau <scerveau@igalia.com> * gst/videofilters/gstscenechange.c: scenechange: fix memory leak A reference to the last buffer(oldbuf) was kept leading to a memory leak on stop. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7662> 2024-10-11 12:07:27 -0400 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/codecparsers/gstav1bitwriter.c: * gst-libs/gst/codecparsers/gsth264bitwriter.c: * gst-libs/gst/codecparsers/gsth265bitwriter.c: * gst-libs/gst/codecparsers/gstvp9bitwriter.c: codecparsers: add debug categories to bitwriters Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7653> 2024-10-13 23:04:58 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/dxva/meson.build: meson: Explicitly use cpp_std=c++11 for dxva dxva is built unconditionally on all platforms where introspection is enabled, so let's fix the build on macOS so that introspection can be enabled there: https://gitlab.freedesktop.org/nirbheek/cerbero/-/jobs/65009118 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7659> 2024-10-12 19:10:46 -0300 L. E. Segovia <amy@centricular.com> * gst-libs/gst/winrt/meson.build: * meson.build: * sys/dwrite/meson.build: * sys/wasapi2/meson.build: * sys/webview2/meson.build: * sys/wic/meson.build: meson: Undefine any WINVER and _WIN32_WINNT entries before redefining them Fixes Cerbero build with MinGW GCC 14, where specifying -DWINVER=0x0601 -DWINVER=0x0A00 is a hard -Werror. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7658> 2024-10-12 19:05:17 -0300 L. E. Segovia <amy@centricular.com> * sys/amfcodec/meson.build: meson: amfcodec: fix build with MinGW GCC 14 > ../sys/amfcodec/include/core/PropertyStorage.h:87:50: error: 'virtual void > amf::AMFPropertyStorage::RemoveObserver(amf::AMFPropertyStorageObserver*)' was hidden [-Werror=overloaded-virtual=] Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7658> 2024-10-12 19:01:46 -0300 L. E. Segovia <amy@centricular.com> * gst-libs/gst/d3d12/meson.build: * sys/d3d12/meson.build: meson: d3d12: fix build with MinGW GCC 14 Also apply the d3d11 fix since both use the same header. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7658> 2024-10-12 19:01:13 -0300 L. E. Segovia <amy@centricular.com> * gst-libs/gst/d3d11/meson.build: * sys/d3d11/meson.build: meson: d3d11: fix build with MinGW GCC 14 In my tests with the new GCC 14 compiler for Cerbero, I got the following error: > In file included from include/directxmath/DirectXMath.h:2275, > from ../gst-libs/gst/d3d11/gstd3d11converter.cpp:46: > include/directxmath/DirectXMathMatrix.inl: In function 'bool > DirectX::XMMatrixDecompose(XMVECTOR*, XMVECTOR*, XMVECTOR*, FXMMATRIX)': > include/directxmath/DirectXMathMatrix.inl:1161:16: > error: variable 'aa' set but not used [-Werror=unused-but-set-variable] Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7658> 2024-08-29 20:50:59 +1000 Jan Schmidt <jan@centricular.com> * ext/webrtc/gstwebrtcstats.c: webrtcbin: Retrieve RR stats from internal sources Check and generate remote reception statistics from the info stored on internal sources, as they are stored there when running against newer rtpbin since MR !7424 This fixes cases where statistics are incomplete when peers send RR reports from a single remote ssrc, which GStreamer does when bundling is enabled and other RTP stacks may too. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7425> 2024-10-04 23:37:35 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/vtdec.c: vtdec: Set input formats when we get incomplete caps In some cases, decodebin3 will send us incomplete caps (not containing codec_data), and then a GAP event, which will force a negotiation. This segfaults due to a null pointer deref because self->input_state is NULL. The only possible fix is to avoid negotiating when we get incomplete caps (to avoid re-negotiationg immediately afterwards, which isn't supported by some muxers), but also set as much input state as possible so that a renegotiation triggered by a GAP event can complete successfully. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7634> 2024-10-09 17:19:42 -0400 Xavier Claessens <xclaessens@netflix.com> * ext/qroverlay/gstbaseqroverlay.c: qroverlay: Change pixel-size to percent of width or height The size is now expressed in percent of the smallest dimention. 100 means the biggest square that fits the render area. Fixes: #3695 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7638> 2024-10-09 17:16:46 -0400 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * tests/check/elements/vapostproc.c: tests: va: fix vapostproc test for DMABuf Now it picks the first format in the template srcpad list and do the convertion. Also the format size is reduced because not all drives support 4K as DMABuf (radeonsi). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7636> 2024-10-09 16:48:18 -0400 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12.h: * gst-libs/gst/d3d12/gstd3d12_fwd.h: * gst-libs/gst/d3d12/gstd3d12cmdallocpool.cpp: * gst-libs/gst/d3d12/gstd3d12cmdallocpool.h: * gst-libs/gst/d3d12/gstd3d12cmdlistpool.cpp: * gst-libs/gst/d3d12/gstd3d12cmdlistpool.h: * gst-libs/gst/d3d12/gstd3d12cmdqueue-private.h: * gst-libs/gst/d3d12/gstd3d12cmdqueue.cpp: * gst-libs/gst/d3d12/gstd3d12cmdqueue.h: * gst-libs/gst/d3d12/gstd3d12commandallocatorpool.cpp: * gst-libs/gst/d3d12/gstd3d12commandallocatorpool.h: * gst-libs/gst/d3d12/gstd3d12commandlistpool.cpp: * gst-libs/gst/d3d12/gstd3d12commandlistpool.h: * gst-libs/gst/d3d12/gstd3d12commandqueue.h: * gst-libs/gst/d3d12/gstd3d12converter-pack.cpp: * gst-libs/gst/d3d12/gstd3d12converter-unpack.cpp: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12converter.h: * gst-libs/gst/d3d12/gstd3d12descheappool.cpp: * gst-libs/gst/d3d12/gstd3d12descheappool.h: * gst-libs/gst/d3d12/gstd3d12descriptorpool.cpp: * gst-libs/gst/d3d12/gstd3d12descriptorpool.h: * gst-libs/gst/d3d12/gstd3d12device-private.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12device.h: * gst-libs/gst/d3d12/gstd3d12frame.cpp: * gst-libs/gst/d3d12/gstd3d12frame.h: * gst-libs/gst/d3d12/meson.build: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12ipcclient.cpp: * sys/d3d12/gstd3d12mipgen.cpp: * sys/d3d12/gstd3d12mipmapping.cpp: * sys/d3d12/gstd3d12overlaycompositor.cpp: * sys/d3d12/gstd3d12swapchainsink.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12window-swapchain-resource.h: * sys/d3d12/gstd3d12window-swapchain.cpp: * sys/d3d12/gstd3d12window.cpp: * sys/dwrite/gstdwriterender_d3d12.cpp: d3d12: Shorten various names Update names of various objects and method to be shorter, for instance GstD3D12CommandAllocator is changed to GstD3D12CmdAlloc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7642> 2024-10-09 15:46:15 -0400 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12fencedatapool.cpp: d3d12: Fix typo in docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7642> 2024-10-09 15:19:52 -0400 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12commandqueue.cpp: d3d12: Early error out on Signal() fail Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7642> 2024-10-09 20:37:10 +0300 Jordan Petridis <jordan@centricular.com> * tests/check/elements/lc3.c: tests/lc3: Allocate the same size for the buffer and the data Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7631> 2024-10-09 16:40:05 +0300 Vivia Nikolaidou <vivia@ahiru.eu> * gst/mxf/mxftypes.c: * gst/mxf/mxftypes.h: mxftypes: Add support for a few additional fields According to SMPTE ST 377-1:2019 Currently still unused. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7626> 2024-10-09 16:25:05 +0300 Vivia Nikolaidou <vivia@ahiru.eu> * gst/mxf/mxftypes.c: mxftypes: Check for the existence of all required fields According to SMPTE ST 377-1:2019 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7626> 2024-10-09 16:23:47 +0300 Vivia Nikolaidou <vivia@ahiru.eu> * gst/mxf/mxfdemux.c: mxfdemux: Keep tracking the offsets even when an index table was found Some files may contain a partial index table, leading into a crash when you try seeking in them Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7626> 2024-09-09 15:53:25 +0200 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/vtenc.c: vtenc: Don't call drop_frame() when flushing Slipped through with earlier changes to use drop/release_frame() explicitly. We should only drop when something goes wrong in the encoder, and just release otherwise. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7475> 2024-08-08 10:50:23 -0400 Julian Bouzas <julian.bouzas@collabora.com> * ext/lcevcencoder/README.md: lcevcencoder: Add README.md Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7330> 2024-08-08 10:01:24 -0400 Julian Bouzas <julian.bouzas@collabora.com> * ext/lcevcdecoder/README.md: lcevcdecoder: Add README.md Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7330> 2023-08-25 13:30:48 -0400 Julian Bouzas <julian.bouzas@collabora.com> * ext/lcevcencoder/gstlcevcencoder.c: * ext/lcevcencoder/gstlcevcencoder.h: * ext/lcevcencoder/gstlcevcencoderutils.c: * ext/lcevcencoder/gstlcevcencoderutils.h: * ext/lcevcencoder/gstlcevch264enc.c: * ext/lcevcencoder/gstlcevch264enc.h: * ext/lcevcencoder/meson.build: * ext/lcevcencoder/plugin.c: * ext/meson.build: * meson_options.txt: lcevcencoder: Add new LCEVC Encoder plugin This new LCEVC encoder plugin is meant to implement all LCEVC encoder elements. For now, it only implements the LCEVC H264 encoder (lcevch264enc) element. This element essentially encodes raw video frames using a specific EIL plugin, and outputs H264 frames with LCEVC data. Depending on the encoder properties, the LCEVC data can be either part of the video stream as SEI NAL Units, or attached to buffers as GstMeta. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7330> 2023-08-01 11:15:54 -0400 Julian Bouzas <julian.bouzas@collabora.com> * ext/lcevcdecoder/gstlcevcdecodebin.c: * ext/lcevcdecoder/gstlcevcdecodebin.h: * ext/lcevcdecoder/gstlcevch264decodebin.c: * ext/lcevcdecoder/gstlcevch264decodebin.h: * ext/lcevcdecoder/plugin.c: lcevcdecoder: Add new lcevch264decodebin element This new element wraps both the base H264 decoder and lcevcdec elements into a bin so that LCEVC decoding works with auto-plugging elements such as decodebin. By default, the H264 decoder element with higher rank is used as base decoder, but any particular H264 decoder can be used by manually setting the base-decoder property. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7330> 2023-08-01 11:11:18 -0400 Julian Bouzas <julian.bouzas@collabora.com> * ext/lcevcdecoder/gstlcevcdec.c: * ext/lcevcdecoder/gstlcevcdec.h: * ext/lcevcdecoder/gstlcevcdecutils.c: * ext/lcevcdecoder/gstlcevcdecutils.h: * ext/lcevcdecoder/meson.build: * ext/lcevcdecoder/plugin.c: * ext/meson.build: * meson_options.txt: lcevcdecoder: Add new LCEVC Decoder plugin This new LCEVC decoder plugin is meant to implement all LCEVC decoder elements. For now, it only implements the LCEVC enhancement decoder (lcevcdec) element. This element essentially enhances raw video frames using the LCEVC metadata attached to input buffers into a higher resolution frame. The element is only meant to be used after any base decoder (eg avdec_h264). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7330> 2024-09-03 17:09:40 -0400 Julian Bouzas <julian.bouzas@collabora.com> * gst/videoparsers/gsth264parse.c: h264parse: Wait for SEI before exposing src caps This makes sure 'lcevc=false' src caps are not set before parsing SEI. It is needed for decodebin2 to work properly with the LCEVC decoder. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7330> 2024-10-01 16:40:13 -0400 Olivier Crête <olivier.crete@collabora.com> * gst/videoparsers/gsth264parse.c: h264parse: Don't fake IDR without at least an i-slice There was an override to fake an IDR as soon as a SPS/PPS is encountered, but that's not valid, at least an i-slice is needed. Amend the visl result, as the output is slightly more correct, not duplicating frame_num. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7330> 2024-08-19 12:16:49 -0400 Julian Bouzas <julian.bouzas@collabora.com> * gst/videoparsers/gsth264parse.c: * gst/videoparsers/gsth265parse.c: * gst/videoparsers/gstmpegvideoparse.c: * gst/videoparsers/gstvideoparseutils.c: * gst/videoparsers/gstvideoparseutils.h: h264parse: attach LCEVC meta to buffers if it is present in SEI This improves the h264parse element to attach LCEVC enhancement data to buffers using the new GstLcevcMeta API. This metadata will eventually be used downstream by LCEVC decoders to enhance the RAW video frame. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7330> 2023-07-27 16:27:29 -0400 Julian Bouzas <julian.bouzas@collabora.com> * gst-libs/gst/codecparsers/gstlcevcmeta.c: * gst-libs/gst/codecparsers/gstlcevcmeta.h: * gst-libs/gst/codecparsers/meson.build: codecparsers: Add LCEVC metadata API This new metadata API allows elements to attach LCEVC enhancement data to video buffers. Usually, the video parser elements are charged to parse the LCEVC enhancement data from SEI Nal units (Supplemental enhancement Information). However, other elements such as demuxers can also use this API if the LCEVC enhancement data of the video is stored in a separate stream in the container. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7330> 2024-09-16 23:34:15 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvdecoder.cpp: * sys/nvcodec/gstnvdecoder.h: * sys/nvcodec/plugin.c: nvdecoder: Add support for D3D12 output Enable D3D12 output if device can support D3D12 interop Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7529> 2024-09-16 23:24:30 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstcudainterop_d3d12.cpp: * sys/nvcodec/gstcudainterop_d3d12.h: * sys/nvcodec/gstnvencoder.cpp: nvcodec: Add support CUDA to D3D12 memory copy Adding CUDA -> D3D12 memory copy method to GstCudaD3D12Interop Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7529> 2024-09-24 23:43:07 -0700 Mengkejiergeli Ba <mengkejiergeli.ba@intel.com> * sys/msdk/gstmsdkenc.c: msdkenc: Guard the read of thiz->initialized with the modification of this value This is to avoid wrongly read/write thiz->initialized when multi-thread invoking encoder init function, it is possible when user apps deploy multi-thread to dynamically change encoder's settings. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7578> 2024-09-24 17:32:54 +0300 Sebastian Dröge <sebastian@centricular.com> * sys/aja/gstajadeviceprovider.cpp: ntv2: Update to AJA NTV2 SDK 17.1.0 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7568> 2024-09-03 12:16:19 +0300 Sebastian Dröge <sebastian@centricular.com> * ext/nvcomp/gstnvcompvideodec.cpp: * ext/ttml/gstttmlparse.c: * ext/vulkan/vkdownload.c: * ext/vulkan/vkh264dec.c: * ext/vulkan/vkh265dec.c: * ext/vulkan/vkupload.c: * gst-libs/gst/vulkan/gstvkswapper.c: * gst/interlace/gstinterlace.c: * sys/amfcodec/gstamfav1enc.cpp: * sys/amfcodec/gstamfh264enc.cpp: * sys/amfcodec/gstamfh265enc.cpp: * sys/androidmedia/gstamcvideodec.c: * sys/applemedia/avfvideosrc.m: * sys/d3d11/gstd3d11convert.cpp: * sys/d3d11/gstd3d11decoder.cpp: * sys/d3d11/gstd3d11deinterlace.cpp: * sys/d3d11/gstd3d11download.cpp: * sys/d3d11/gstd3d11h265dec.cpp: * sys/d3d11/gstd3d11ipcsink.cpp: * sys/d3d11/gstd3d11screencapturesrc.cpp: * sys/d3d11/gstd3d11upload.cpp: * sys/d3d11/gstd3d11vp9dec.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12download.cpp: * sys/d3d12/gstd3d12h264enc.cpp: * sys/d3d12/gstd3d12ipcsink.cpp: * sys/d3d12/gstd3d12memorycopy.cpp: * sys/d3d12/gstd3d12screencapturesrc.cpp: * sys/d3d12/gstd3d12upload.cpp: * sys/mediafoundation/gstmfvideoencoder.cpp: * sys/msdk/gstmsdkcaps.c: * sys/msdk/gstmsdkdec.c: * sys/msdk/gstmsdkenc.c: * sys/msdk/gstmsdkvpp.c: * sys/msdk/gstmsdkvpputil.c: * sys/nvcodec/gstcudaconvertscale.c: * sys/nvcodec/gstcudaipcsink.cpp: * sys/nvcodec/gstcudamemorycopy.c: * sys/nvcodec/gstnvav1encoder.cpp: * sys/nvcodec/gstnvdec.c: * sys/nvcodec/gstnvdecoder.cpp: * sys/nvcodec/gstnvh264encoder.cpp: * sys/nvcodec/gstnvh265encoder.cpp: * sys/qsv/gstqsvav1enc.cpp: * sys/qsv/gstqsvdecoder.cpp: * sys/qsv/gstqsvh264dec.cpp: * sys/qsv/gstqsvh264enc.cpp: * sys/qsv/gstqsvh265dec.cpp: * sys/qsv/gstqsvh265enc.cpp: * sys/qsv/gstqsvjpegdec.cpp: * sys/qsv/gstqsvjpegenc.cpp: * sys/qsv/gstqsvvp9dec.cpp: * sys/qsv/gstqsvvp9enc.cpp: * sys/v4l2codecs/gstv4l2decoder.c: * sys/va/gstvaav1dec.c: * sys/va/gstvabase.c: * sys/va/gstvabasedec.c: * sys/va/gstvacaps.c: * sys/va/gstvacompositor.c: * sys/va/gstvaencoder.c: * sys/va/gstvafilter.c: * sys/va/gstvavpp.c: * tests/check/libs/vkimagebufferpool.c: * tests/check/libs/vkvideodecode.c: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: * tests/examples/d3d11/d3d11converter.cpp: * tests/examples/nvcodec/nvcodec.c: common: Use more efficient versions of GstCapsFeatures API where possible Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432> 2024-08-30 18:57:03 +0300 Sebastian Dröge <sebastian@centricular.com> * sys/va/gstvabasedec.c: * sys/va/gstvavpp.c: common: Stop using GQuark-based GstCapsFeatures API Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432> 2024-08-29 20:09:52 +0300 Sebastian Dröge <sebastian@centricular.com> * ext/curl/gstcurlhttpsrc.c: * ext/webrtc/gstwebrtcbin.c: * gst-libs/gst/player/gstplayer.c: * gst/debugutils/gsttestsrcbin.c: * sys/ipcpipeline/gstipcpipelinecomm.c: * sys/kms/gstkmssink.c: * sys/nvcodec/gstcudaconverter.c: * tests/check/elements/webrtcbin.c: * tests/examples/mxf/mxfdemux-structure.c: common: Stop using GQuark-based GstStructure field name API Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432> 2024-08-09 10:41:57 +0300 Sebastian Dröge <sebastian@centricular.com> * ext/svthevcenc/gstsvthevcenc.c: * gst-libs/gst/mpegts/gstmpegtssection.c: * gst-libs/gst/play/gstplay.c: * gst/mpegtsdemux/tsdemux.c: * gst/mxf/mxfaes-bwf.c: * gst/mxf/mxfffv1.c: * gst/mxf/mxfmetadata.c: * gst/mxf/mxfmetadata.h: * gst/mxf/mxfmpeg.c: common: Stop using GQuark-based GstStructure name API Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432> 2024-09-26 02:03:19 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12device-private.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12memory.cpp: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12decodercpbpool.cpp: * sys/d3d12/gstd3d12decodercpbpool.h: * sys/d3d12/gstd3d12overlaycompositor.cpp: * sys/d3d12/gstd3d12testsrc.cpp: d3d12: Fix resource allocation on old Windows version D3D12_HEAP_FLAG_CREATE_NOT_ZEROED flag was introduced as of Windows 10 May 2020 Update, and older versions don't understand the heap flag. Checks the feature support and enables the D3D12_HEAP_FLAG_CREATE_NOT_ZEROED only if it's supported by OS Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7573> 2024-05-30 07:34:22 +0000 Weijian Pan <pwjworks@gmail.com> * sys/applemedia/avfdeviceprovider.m: avfdeviceprovider: Fix caps leak Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6966> 2024-09-24 13:31:34 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * ext/wpe/gstwpethreadedview.cpp: wpe: initialize threading.ready before reading it Fix Valgrind warning. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7377> 2023-12-10 23:31:32 +0100 Michael Grzeschik <m.grzeschik@pengutronix.de> * sys/uvcgadget/gstuvcsink.c: uvcsink: make gst_v4l2uvc_fourcc_to_bare_struct work with more raw formats The uvcsink was limited to only transfer YUY2 and MJPEG. For the uncompressed formats there is no technical reason not to support them. Since gst_video_format_to_string is already supporting more fourcc than only YUY2 we use the default path in gst_v4l2uvc_fourcc_to_bare_struct to create structures for more formats and bail out if the returned format is not from the uncompressed type. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6037> 2024-09-24 17:01:10 +0200 Hugues Fruchet <hugues.fruchet@foss.st.com> * sys/kms/gstkmsallocator.c: kmsallocator: fix stride with planar formats This fixes a regression introduced by the merge request https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3801 The extrapolated stride was computed but not used, resulting in the same stride being applied to all planes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7566> 2024-09-24 01:07:13 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12convert.h: * sys/d3d12/plugin.cpp: d3d12: Add colorconvert and scale elements In addition to existing d3d12convert element which supports color conversion and rescale at once, adding separate color-conversion-only and scale-only elements Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7560> 2024-09-20 23:46:32 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.h: * gst-libs/gst/d3dshader/plugin-hlsl/CSMain_mipgen.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/hlsl.h: * gst-libs/gst/d3dshader/plugin-hlsl/meson.build: * sys/d3d12/gstd3d12mipgen.cpp: * sys/d3d12/gstd3d12mipgen.h: * sys/d3d12/gstd3d12mipmapping.cpp: * sys/d3d12/gstd3d12mipmapping.h: * sys/d3d12/meson.build: * sys/d3d12/plugin.cpp: d3d12: Add d3d12mipmapping element Adding a new element for texture conversion from single mip level texture to mipmapping enabled RGBA texture Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7555> 2024-09-21 04:33:02 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12converter.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: * sys/d3d12/gstd3d12pluginutils.cpp: d3d12: Use D3D12_FILTER_MIN_MAG_MIP_LINEAR filter by default ... instead of D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT, since we supports mipmap texture now. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7555> 2024-09-20 22:56:08 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12bufferpool.cpp: * gst-libs/gst/d3d12/gstd3d12memory-private.h: * gst-libs/gst/d3d12/gstd3d12memory.cpp: * gst-libs/gst/d3d12/gstd3d12memory.h: d3d12: Add support for mipmap texture Consider D3D12_RESOURCE_DESC.MipLevels > 1 or zero case Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7555> 2024-09-19 21:29:18 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: d3d12converter: Fix crash on pso update Allocates D3D12_INPUT_ELEMENT_DESC memory on heap instead of using stack memory for later reuse Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550> 2024-09-19 19:31:20 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12swapchainsink.cpp: d3d12swapchainsink: Add auto-resize mode Automatically resize swapchain backbuffer to be identical to stream resolution if user calls resize() signal with zero resolution Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550> 2024-09-19 01:23:50 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12swapchainsink.cpp: d3d12swapchainsink: Add support for MSAA Adding "msaa" property and enable MSAA if supported by device Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550> 2024-09-19 00:21:21 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12pluginutils.cpp: * sys/d3d12/gstd3d12pluginutils.h: * sys/d3d12/gstd3d12window-swapchain.cpp: d3d12videosink: Use converter config for initial MSAA setup Avoid redundant pso creation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550> 2024-09-18 23:53:23 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12converter.h: d3d12converter: Add support initial pso DXGI_SAMPLE_DESC setting Add more options for pso, in order to avoid redundant pso creation when MSAA is used Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550> 2024-09-18 19:59:13 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12swapchainsink.cpp: d3d12swapchainsink: Add sampling-method property Allow setting sampler filter method to use Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550> 2024-09-18 23:24:55 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12convert.cpp: d3d12convert: Use new sampler filter update method ... instead of creating new converter Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550> 2024-09-18 20:21:22 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: d3d12converter: Add support for sampler filter update Creates new root signature and pipeline state object if sampler filter method is updated Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550> 2024-09-18 23:01:57 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter-builder.cpp: * gst-libs/gst/d3d12/gstd3d12converter-builder.h: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12device-private.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: d3d12converter: Use generated sampler ... instead of static ones, in order to support sampler state update Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7550> 2024-09-07 11:06:12 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvadecoder.c: va: decoder: Delete all the internal locks In fact, the va decoder is just a internal helper class and its access is under the control of all dec elements. So far, there is no parallel operation on it now. At the other side, some code scan tools report race condition issues. For example, the "context" field is just protected with lock at _open() but is not protected at _add_param_buffer(). So we just delete all its lock usage. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7547> 2024-09-07 10:45:09 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/codecparsers/gsth264bitwriter.c: h264bitwriter: Add check for data size to avoid overflow Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7547> 2024-09-07 10:26:22 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/codecparsers/gsth265bitwriter.c: h265bitwriter: Add check for data size to avoid overflow Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7547> 2024-09-06 23:44:53 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvajpegenc.c: va: jpegenc: Fix a memory leak when filter sink caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7547> 2024-09-06 23:35:59 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvabasetransform.c: va: vpp: Use gst_caps_replace to operate the filter_caps No need to use lock when we assign value to priv->filter_caps. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7547> 2024-09-18 16:15:49 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/mxf/mxfmux.c: mxfmux: Use gst_aggregator_update_segment() instead of randomly pushing a segment event Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7542> 2024-09-18 16:15:11 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/mpegtsmux/gstbasetsmux.c: mpegtsmux: Use gst_aggregator_push_src_event() for pushing downstream events Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7542> 2024-09-17 14:48:03 +0200 Benjamin Gaignard <benjamin.gaignard@collabora.com> * sys/v4l2codecs/gstv4l2codech265dec.c: v4l2codecs: h265: Minimize memory allocation Be smarter when allocating sink and source memory pools to reduce the memory footprint. Use gst_v4l2_decoder_get_render_delay() to know the need number of buffers for downstream element. Handle errors in case of memory allocation failures. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7544> 2024-02-12 14:02:44 +0800 Tim Blechmann <tim@klingt.org> * ext/mdns/gstmicrodnsdevice.c: mdns: fix thread names Linux thread names are limited to 15 chars. providing long thread names causes the thread name not to be applied at all Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6094> 2024-09-17 23:03:14 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12decodercpbpool.cpp: d3d12decoder: Disable sub-allocated bitstream buffer This sub-allocation causes decoding artifacts for some reason on Intel platform Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7535> 2024-09-17 18:31:30 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/mpegtsmux/gstbasetsmux.c: mpegtsmux: Fix refcounting issue when selecting the best pad Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7538> 2024-09-06 10:44:46 +0200 Edward Hervey <edward@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst/mpegtsdemux/gstmpegdesc.h: * gst/mpegtsdemux/tsdemux.c: * gst/mpegtsmux/gstbasetsmux.c: * gst/mpegtsmux/gstmpegtsmux.c: * gst/mpegtsmux/tsmux/tsmuxstream.c: * gst/mpegtsmux/tsmux/tsmuxstream.h: mpegts: Add support for SMPTE ST-2038 ANC Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7461> 2024-09-17 10:36:58 -0400 Xavier Claessens <xclaessens@netflix.com> * sys/aja/gstajasinkcombiner.cpp: aja: there is no need to take object lock Both _sink_event() and _aggregate() vfunc are called from the source pad streaming thread. There is thus no need to protect caps fields. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7536> 2024-07-15 16:10:10 +0200 Edward Hervey <edward@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: * gst-libs/gst/mpegts/gstmpegtssection.h: * gst/mpegtsdemux/tsdemux.c: * gst/mpegtsmux/gstbasetsmux.c: * gst/mpegtsmux/gstbasetsmuxjpegxs.c: * gst/mpegtsmux/gstbasetsmuxjpegxs.h: * gst/mpegtsmux/gstmpegtsmux.c: * gst/mpegtsmux/meson.build: * gst/mpegtsmux/tsmux/tsmuxstream.c: * gst/mpegtsmux/tsmux/tsmuxstream.h: mpegts: Add support for JPEG-XS Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7172> 2024-08-29 14:49:59 +0200 Edward Hervey <edward@centricular.com> * gst/mpegtsmux/tsmux/tsmuxstream.c: tsmux: Split off j2k descriptor code in separate function Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7172> 2024-08-28 11:07:32 +0200 Edward Hervey <edward@centricular.com> * gst-libs/gst/mpegts/gstmpegts-private.h: * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: * tests/examples/mpegts/ts-parser.c: mpegts: Handle ISO 13818 / ITU H.222.0 base extension descriptor Previously this was hardcoded to the DVB extension descriptors (0x7f), but it should also be applied for the base specification extension descriptors (0x3f) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7172> 2024-09-11 19:07:14 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/svtjpegxs/gstsvtjpegxs.c: * ext/svtjpegxs/gstsvtjpegxsdec.c: * ext/svtjpegxs/gstsvtjpegxsenc.c: svtjpegxs: add to documentation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7430> 2024-08-30 11:19:06 +0100 Tim-Philipp Müller <tim@centricular.com> * ext/svtjpegxs/gstsvtjpegxsenc.c: svtjpegxsenc: put "codestream-length" into caps So consumers can calculate the maximum bitrate (brat) from that for various descriptors, in combination with the framerate. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7430> 2024-08-22 14:15:35 +0100 Tim-Philipp Müller <tim@centricular.com> * ext/svtjpegxs/gstsvtjpegxs.c: * ext/svtjpegxs/gstsvtjpegxsdec.c: * ext/svtjpegxs/gstsvtjpegxsdec.h: * ext/svtjpegxs/meson.build: svtjpegxs: add SVT JPEG XS decoder Based on: https://github.com/OpenVisualCloud/SVT-JPEG-XS/ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7430> 2024-07-13 17:45:02 +0200 Tim-Philipp Müller <tim@centricular.com> * ext/meson.build: * ext/svtjpegxs/gstsvtjpegxs.c: * ext/svtjpegxs/gstsvtjpegxsenc.c: * ext/svtjpegxs/gstsvtjpegxsenc.h: * ext/svtjpegxs/meson.build: * meson_options.txt: svtjpegxs: add SVT JPEG XS encoder Based on: https://github.com/OpenVisualCloud/SVT-JPEG-XS/ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7430> 2024-09-09 00:31:21 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvav1encoder.cpp: * sys/nvcodec/gstnvcodecutils.cpp: * sys/nvcodec/gstnvcodecutils.h: * sys/nvcodec/gstnvencoder.cpp: * sys/nvcodec/gstnvencoder.h: * sys/nvcodec/gstnvh264encoder.cpp: * sys/nvcodec/gstnvh265encoder.cpp: * sys/nvcodec/meson.build: nvencoder: Add support for d3d12 memory Use d3d12 -> cuda memory copy helper object in cuda mode encoder Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7480> 2024-09-08 01:00:12 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstcudainterop_d3d12.cpp: * sys/nvcodec/gstcudainterop_d3d12.h: * sys/nvcodec/meson.build: nvcodec: Add a helper object for d3d12 interop Adding new helper object for d3d12 -> cuda memory copy Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7480> 2024-09-08 21:01:47 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12utils.cpp: * gst-libs/gst/d3d12/gstd3d12utils.h: d3d12: Add gst_d3d12_get_copyable_footprints() method This helper method will calculate buffer resource size and layout required for (mutiple) texture resources to be stored in a single buffer resource Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7480> 2024-09-08 00:06:58 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12commandlistpool.cpp: * gst-libs/gst/d3d12/gstd3d12device.cpp: d3d12device: Hold compute queue Compute queue will be used for async compute task or device-to-device memory copy Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7480> 2024-09-14 03:12:46 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/cuda-gst.h: * gst-libs/gst/cuda/gstcudacontext.cpp: * gst-libs/gst/cuda/gstcudaloader-private.h: * gst-libs/gst/cuda/gstcudaloader.cpp: * gst-libs/gst/cuda/stub/cuda.h: cuda: Load external resource interop symbols Required for d3d12 interop Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7480> 2024-09-05 22:07:24 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/adaptivedemux/gstadaptivedemux.c: video: Don't overshoot QoS earliest time by a factor of 2 By setting the earliest time to timestamp + 2 * diff there would be a difference of 1 * diff between the current clock time and the earliest time the element would let through in the future. If e.g. a frame is arriving 30s late at the sink, then not just all frames up to that point would be dropped but also 30s of frames after the current clock time. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7459> 2024-09-11 08:40:42 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/mpegtsmux/gstbasetsmux.c: mpegtsmux: Wait for data on all pads before deciding on a best pad unless timing out This makes sure that if upstream has different latencies that we're still outputting buffers with increasining timestamps across the different streams unless buffers are arriving after the latency deadline. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7500> 2024-08-30 01:38:23 +0900 Seungha Yang <seungha@centricular.com> * tests/examples/cuda/cudamemorypool.c: * tests/examples/cuda/meson.build: examples: Add application CUDA memory pool example An example to show application managed CUDA memory pool usage Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7427> 2024-08-29 23:52:08 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/gstcudamemory.cpp: * gst-libs/gst/cuda/gstcudamemory.h: cuda: Add support for application cuda memory pool Adding gst_cuda_register_allocator_need_pool_callback() method to support memory allocation from application's CUmemoryPool Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7427> 2024-08-29 22:18:48 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/gstcuda.h: * gst-libs/gst/cuda/gstcudamemorypool.cpp: * gst-libs/gst/cuda/gstcudamemorypool.h: * gst-libs/gst/cuda/meson.build: cuda: Add CUDA memory pool object Adding a wrapper object for CUmemoryPool handle to use the native handle in a refcounted way Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7427> 2024-09-10 19:29:44 +0900 Seungha Yang <seungha@centricular.com> * docs/libs/cuda/index.md: * gst-libs/gst/cuda/gstcudabufferpool.cpp: * gst-libs/gst/cuda/gstcudabufferpool.h: * gst-libs/gst/cuda/gstcudacontext.cpp: cuda: Add methods to enable stream ordered allocation Adding prefer-stream-ordered-alloc property to GstCudaContext. If stream ordered allocation buffer pool option is not configured and this property is enabled, buffer pool will enable the stream ordered allocation. Otherwise it will follow default behavior. If GST_CUDA_ENABLE_STREAM_ORDERED_ALLOC env is set, default behavior is enabling the stream ordered allocation. Otherwise sync alloc/free method will be used. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7427> 2024-08-30 00:39:06 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvencoder.cpp: nvencoder: Disable stream ordered allocation Stream ordered allocation is not supported by encoder Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7427> 2024-08-29 20:24:56 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstcudaipcsink.cpp: cudaipcsink: Disable stream ordered allocation Legacy CUDA IPC does not support default CUDA memory pool Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7427> 2024-08-29 20:15:20 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/gstcuda-private.h: * gst-libs/gst/cuda/gstcudabufferpool.cpp: * gst-libs/gst/cuda/gstcudabufferpool.h: * gst-libs/gst/cuda/gstcudamemory.cpp: * gst-libs/gst/cuda/gstcudamemory.h: cuda: Add support for stream ordered allocation Default CUDA memory allocation will cause implicit global synchronization. This stream ordered allocation can avoid it since memory allocation and free operations are asynchronous and executed in the associated cuda stream context Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7427> 2024-08-29 18:23:37 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/cuda-gst.h: * gst-libs/gst/cuda/gstcuda-private.h: * gst-libs/gst/cuda/gstcudacontext.cpp: * gst-libs/gst/cuda/gstcudaloader-private.h: * gst-libs/gst/cuda/gstcudaloader.cpp: * gst-libs/gst/cuda/stub/cuda.h: cuda: Load stream ordered allocation related symbols Required to support async memory allocation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7427> 2024-08-30 14:59:14 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst-libs/gst/wayland/gstwldisplay.c: * gst-libs/gst/wayland/gstwlshmallocator.c: * gst-libs/gst/wayland/gstwlshmallocator.h: wayland: Set a debug category for the shm allocator None was set, which meant the debug was associated with default. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7482> 2024-09-09 16:27:43 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * ext/wayland/gstwaylandsink.c: * gst-libs/gst/wayland/gstwlcontext.c: * gst-libs/gst/wayland/gstwlcontext.h: wayland: Fix ABI break in WL context type name While transforming the internals of waylandsink into a library, the context type name was accidentally changed, causing an ABI break. Change it back to its original (as used by the libgstgl), and add support for the misnamed version as a backward compatibility measure. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7482> 2024-09-10 00:10:21 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/vulkan/gstvkfullscreenquad.c: * gst-libs/gst/vulkan/gstvkimagebufferpool.c: * gst-libs/gst/vulkan/gstvkoperation.c: vulkan: Fix some doc strings and also some g-i warnings Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7481> 2023-07-18 17:34:54 +0200 Michael Tretter <m.tretter@pengutronix.de> * sys/uvcgadget/gstuvcsink.c: uvcsink: set cur_caps to upstream selected caps If the UVC gadget announces multiple formats in the descriptors the uvcsink doesn't select the actual format but let's the UVC hosts select the format. If the GStreamer pipeline is started before a UVC host selected the format, upstream decides on a format until the UVC host has decided. In this case, the current format needs to be set based on the caps from the caps event to be able to detect if the format selection by the UVC host requires a format change on the GStreamer pipeline. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7473> 2024-09-05 15:04:33 +0200 Michael Tretter <m.tretter@pengutronix.de> * sys/uvcgadget/gstuvcsink.c: uvcsink: skip comparison with prev_caps if they are not set The uvcsink may be put into the READY state to start listening for UVC requests. Therefore, the UVC host may set a streaming format before the GStreamer pipeline is started and the uvcsink received a caps event. In this case, prev_caps will be NULL. If the EVENT_CAPS has not been received, skip the check if the format needs to be changed, since the sink will be started with the format selected by the UVC host, anyway. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7473> 2024-08-29 12:16:16 +0200 Edward Hervey <edward@centricular.com> * gst/mpegtsmux/gstatscmux.c: * gst/mpegtsmux/gstbasetsmux.c: * gst/mpegtsmux/tsmux/tsmux.c: * gst/mpegtsmux/tsmux/tsmuxstream.c: * gst/mpegtsmux/tsmux/tsmuxstream.h: mpegtsmux: Cleanup TsMuxStream fields Instead of using plenty of case-specific booleans: * Store type as GstStreamType * Store unique stream type Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7476> 2024-09-06 10:51:01 +0200 Edward Hervey <edward@centricular.com> * gst-libs/gst/play/gstplay.c: gstplay: Name the different bus Makes it clearer when reading logs which one is which Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7462> 2024-09-06 01:07:43 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvh264encoder.cpp: * sys/nvcodec/gstnvh265encoder.cpp: nvencoder: Prefer byte-stream format over packetized Since old encoder implementation supported only byte-stream, prefers byte-stream format for backward compatibility. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3787 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7457> 2024-09-02 12:15:41 +0200 Michael Scherle <michael.scherle@rz.uni-freiburg.de> * sys/va/gstvacompositor.c: * sys/va/gstvafilter.c: * sys/va/gstvafilter.h: * sys/va/gstvavpp.c: va: restrict interpolation & scaling property to iHD driver interpolation & scaling is supported for all hardware on iHD driver. But not supported in mesa driver. see: <https://github.com/intel/media-driver/issues/1843> <https://gitlab.freedesktop.org/mesa/mesa/-/issues/11803> improvment of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7301> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7443> 2024-09-05 01:14:17 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/va/gstvavideoformat.c: va: videoformat: Correct NV21's BPP Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6022> 2024-09-02 13:18:13 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/va/gstvajpegenc.c: vajpegenc: set interlace-mode, colorspace and sampling in output caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6022> 2024-09-02 13:17:01 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/va/vasurfaceimage.c: vasurfaceimage: log surface status string Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6022> 2024-01-30 23:46:36 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvajpegenc.c: * sys/va/gstvajpegenc.h: * sys/va/meson.build: * sys/va/plugin.c: va: Implement the vajpegenc plugin Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6022> 2024-08-30 23:00:48 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvabaseenc.c: va: baseenc: Check the bitrate property before get its value Not all the encoders have the bitrate property, such as the jpeg enc. We need to check that property before getting its value, or the glib will print warnings. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6022> 2024-01-30 23:24:18 +0800 He Junyan <junyan.he@intel.com> * tests/check/libs/jpegbitwriter.c: * tests/check/meson.build: tests: Add the jpeg bit code writer test case Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6022> 2024-01-30 23:14:39 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/codecparsers/gstjpegbitwriter.c: * gst-libs/gst/codecparsers/gstjpegbitwriter.h: * gst-libs/gst/codecparsers/meson.build: codecparsers: Implement the jpeg bit code writer Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6022> 2024-09-05 10:08:17 +0200 Edward Hervey <edward@centricular.com> * tests/check/elements/dash_mpd.c: check: Disable failing test Test hasn't been properly fixed for several years with modern libsoup, and it only for the legacy adaptive demuxer. Fixes #3783 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7454> 2024-08-26 14:46:59 +1000 Matthew Waters <matthew@centricular.com> * ext/webrtc/gstwebrtcbin.c: webrtcbin: enable forward-unknown-ssrc on rtpfunnel See also: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7405 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7409> 2024-09-03 20:10:42 +0900 Seungha Yang <seungha@centricular.com> * sys/dwrite/gstdwriterender_d3d12.cpp: dwrite: Allow unlimited number of in-flight d3d12 commands ... so that it can be controlled by global direct command queue. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7444> 2024-09-03 19:33:41 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12testsrc.cpp: d3d12: Add async-depth property Adding a property to control the number of in-flight GPU commands (default is unlimited). Note that actual maximum number is defined in d3d12device's direct command queue object which is 32 now, thus total number of scheduled GPU commands cannot exceed 32. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7444> 2024-09-03 17:04:49 +0200 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/vtenc.c: vtenc: Use new release_frame/drop_frame encoder API Replaces usage of gst_video_codec_frame_unref everywhere. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7173> 2024-09-03 17:00:09 +0200 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/vtenc.c: * sys/applemedia/vtenc.h: vtenc: Restart encoding session when certain errors are detected Sometimes under certain loads, VT can error out with kVTVideoEncoderMalfunctionErr or kVTVideoEncoderNotAvailableNowErr. These have been reported to happen more often than usual if CopyProperty/SetProperty() is used close to the encode call. Both can be worked around by restarting the encoding session. These errors can be returned either directly from VTCompressionSessionEncodeFrame() or later in the encoding callback. This patch handles both scenarios the same way - a session restart is be attempted on the next encode_frame() call. If the error is returned immediately by the encode call, it's possible that some correct frames will still be given to the output callback, but for simplicity (+ because I wasn't able to verify this scenario) let's just discard those. In addition, this commit also simplifies the beach/drop logic in enqueue_buffer. Related bug reports in other projects: http://www.openradar.me/45889262 https://github.com/aws/amazon-chime-sdk-ios/issues/170#issuecomment-741908622 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7173> 2024-09-02 18:25:56 +0900 Hou Qi <qi.hou@nxp.com> * gst-libs/gst/play/gstplay.c: gstplay: check whether stream is seekable before seeking when state change If state is changing from playing to paused, and rate is reset to 1 which causes seek position is valid, current code will do seek for streams that are not seekable. So need to check whether stream is seekable before seeking. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7441> 2024-08-20 02:01:34 +0100 Tim-Philipp Müller <tim@centricular.com> * gst-libs/gst/codecs/gsth264decoder.c: * gst-libs/gst/glib-compat-private.h: * sys/va/gstvaav1enc.c: * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: * sys/va/gstvavp9enc.c: * sys/va/meson.build: gst-plugins-bad: use g_sort_array() instead of deprecated g_qsort_with_data() Fixes compiler warnings with the latest GLib versions. See https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4127 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7384> 2024-08-30 09:52:55 +0200 Oskar Fiedot <oskar.fiedot@intel.com> * gst-libs/gst/analytics/gstanalyticsclassificationmtd.c: * gst-libs/gst/analytics/gstanalyticsclassificationmtd.h: * gst-libs/gst/analytics/gstanalyticsmeta.c: * gst-libs/gst/analytics/gstanalyticsmeta.h: * gst-libs/gst/analytics/gstanalyticsobjectdetectionmtd.c: * gst-libs/gst/analytics/gstanalyticsobjectdetectionmtd.h: * gst-libs/gst/analytics/gstanalyticsobjecttrackingmtd.c: * gst-libs/gst/analytics/gstanalyticsobjecttrackingmtd.h: analytics: Change pointers in getters to const Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7403> 2024-08-29 12:01:30 +0100 Philippe Normand <philn@igalia.com> * ext/webrtc/gstwebrtcbin.c: * tests/check/elements/webrtcbin.c: webrtcbin: Prevent crash when attempting to set answer on invalid SDP If the pending remote description has an invalid BUNDLE group _parse_bundle() triggers early return from _create_answer_task(), before ret has been initialized, so it needs to be checked before attempting to call gst_sdp_message_copy(). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7423> 2024-07-27 08:53:47 +0200 Edward Hervey <edward@centricular.com> * tests/check/gst-plugins-bad.supp: bad: Add suppression for libsrt issues This is not code we control Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7415> 2024-07-27 08:29:53 +0200 Edward Hervey <edward@centricular.com> * tests/check/elements/lc3.c: check: Fix leak in lc3 test Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7415> 2024-08-27 11:52:08 +0200 Carlos Bentzen <cadubentzen@igalia.com> * ext/webrtc/gstwebrtcbin.c: * tests/check/elements/webrtcbin.c: webrtcbin: fix regression with missing RTP header extensions in Answer SDP webrtcsrc first creates recvonly transceivers with codec-preferences and expects that after applying a remote description, the previously created transceivers are used rather than having new transceivers created. When pairing webrtcsink + webrtcsrc, the offer sdp from webrtcsink has a media section with sendonly direction. In !7156, which was implemented following RFC9429 Section 5.10, we only reuse a unassociated transceiver when applying a remote description if the media is sendrecv or recvonly, and that caused creation of new transceivers when applying a remote offer in webrtcsrc, thus losing information from codec preferences like the RTP extension headers in the previously created transceivers. Since the change in !7156 broke existing code from webrtcsrc, relax the condition for reusing unassociated transceivers and add a test to document this behavior which wasn't covered by any tests before. Fixes #3753. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7417> 2024-08-21 13:23:36 +0100 Francis Quiers <fquiers@cisco.com> * docs/plugins/gst_plugins_cache.json: * ext/voamrwbenc/gstvoamrwbenc.c: voamrwbenc: fix list of bitrates Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7396> 2024-08-09 09:41:07 +0000 Daniel Pendse <daniel.pendse@spiideo.com> * docs/plugins/gst_plugins_cache.json: * gst/rtmp2/rtmp/rtmpclient.c: * gst/rtmp2/rtmp/rtmpclient.h: rtmp2: Add llnw auth support to rtmp client Add support for Limelight CDN (llnw) authentication. Inspired by the ffmpeg implementation of llnw auth. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7410> 2024-07-25 17:50:26 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * gst/videoparsers/gsth264parse.c: * gst/videoparsers/gsth265parse.c: h264parse, h265parse: Fix time code calculation We need to multiply for the nuit_field_based_flag before scaling, or we'll lose precision and end up only adding even timecodes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7241> 2024-08-23 16:21:43 +0200 RSWilli <bartel.wilhelm@gmail.com> * gst-libs/gst/webrtc/webrtc_fwd.h: webrtc: fix documentation error in GstWebRTCKind Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7407> 2024-08-08 06:23:47 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst/timecode/gsttimecodestamper.c: * gst/timecode/gsttimecodestamper.h: timecodestamper: Add running-time source mode Add a new source mode "running-time". This mode will convert buffer running time into timecode Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7322> 2024-08-21 09:24:58 -0400 Thibault Saunier <tsaunier@igalia.com> * tests/validate/autovideoconvert/renegotiate/flow-expectations/log-^convert-src$-expected: ci: Fail tests if we forget to checkout expectation files And add missing expectation files Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7400> 2024-08-20 22:09:13 +1000 Jan Schmidt <jan@centricular.com> * gst-libs/gst/player/gstplayer.c: gstplayer: Check GstPlayerSignalDispatcher type Before trying to retrieve a GMainContext from a provided GstPlayerSignalDispatcher, check that it is actually GstPlayerGMainContextSignalDispatcher. If not, use the default GMainContext for dispatching signals via the adapter Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7392> 2024-08-21 09:19:39 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * ext/wpe/gstwpesrcbin.cpp: wpe: fix gst-launch example wpesrc does not have num-buffers property but wpevideosrc does. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7389> 2024-06-07 00:01:10 +0900 Seungha Yang <seungha@centricular.com> * tests/examples/cuda/cuda-template.c: * tests/examples/cuda/meson.build: * tests/examples/cuda/template-plugin/cuda-transform-ip-template.c: * tests/examples/cuda/template-plugin/cuda-transform-ip-template.h: * tests/examples/cuda/template-plugin/plugin.c: examples: Add CUDA based in-place transform element example Adding a CUDA example element for plugin developers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7004> 2024-08-20 19:20:34 +1000 Jan Schmidt <jan@centricular.com> * tests/check/elements/webrtcbin.c: webrtc: Fix racy unit test Don't reuse the same stats state structure across multiple get-stats calls. Make each callback take a copy of the non-changing fields it needs and use a local working copy to avoid crashing. Fixes problems with the unit test crashing sometimes for the unit test introduced in MR !7338 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7387> 2024-08-20 18:57:50 +1000 Jan Schmidt <jan@centricular.com> * ext/webrtc/gstwebrtcstats.c: webrtcbin: Always populate rtp-inbound stats fields Even if there's no jitterbuffer yet for an incoming stream, make sure to populate the mandatory statistics with 0 entries. Fixes problems with the unit test failing sometimes for the unit test introduced in MR !7338 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7387> 2024-08-05 11:46:28 +0200 Michael Scherle <michael.scherle@rz.uni-freiburg.de> * sys/va/gstvacompositor.c: * sys/va/gstvafilter.c: * sys/va/gstvafilter.h: * sys/va/gstvavpp.c: va: add interpolation method for scaling For description of interpolation methods, see: <https://intel.github.io/libva/structVAProcPipelineParameterBuffer.html#abb95e119ed7f841f71b2afbec2104784> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7301> 2024-08-19 14:34:28 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/va/gstvabasedec.c: * sys/va/gstvabaseenc.c: * sys/va/gstvabasetransform.c: * sys/va/gstvacompositor.c: va: don't use GST_ELEMENT_WARNING in set_context() vmethod Since bins can set the context of their children elements, the set_context() vmethod shouldn't call bus messages post methods, since it locks the parent object, the bin, which might be already locked, leading to a deadlock. Fixes: #3706 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7378> 2024-08-16 22:33:03 +1000 Jan Schmidt <jan@centricular.com> * ext/webrtc/gstwebrtcbin.c: * tests/check/elements/webrtcbin.c: webrtcbin: Fix uint64 -> uint confusion for ice-candidate priority ICE candidate priority is a 32-bit field and reported as such in the webrtcbin statistics, but the documentation was incorrect, and the unit test was looking for a uint64. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7338> 2024-08-12 22:17:14 +1000 Jan Schmidt <jan@centricular.com> * ext/webrtc/gstwebrtcstats.c: * tests/check/elements/webrtcbin.c: webrtcbin: Fixes for bundled statistics generation When multiple streams are bundled on the same transport, the statistics would end up incorrectly generated, as each pad would regenerate stats for every ssrc on the transport, overwriting previous iterations and assigning bogus media kind and other values to the wrong ssrc. Fix by making sure each pad only loops and generates statistics for the one ssrc that pad is receiving / sending. Add a unit test that the codec kind field in RTP statistics are now generated correctly. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2555 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7338> 2024-07-30 21:59:53 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12swapchainsink.cpp: * sys/d3d12/gstd3d12swapchainsink.h: * sys/d3d12/meson.build: * sys/d3d12/plugin.cpp: * tests/examples/d3d12/d3d12swapchainsink-win32.cpp: * tests/examples/d3d12/d3d12swapchainsink-winrt.cpp: * tests/examples/d3d12/meson.build: d3d12: Add d3d12swapchainsink element Adding a new videosink element for Windows composition API based applications. Unlike d3d12videosink, this element will create only DXGI swapchain by using IDXGIFactory2::CreateSwapChainForComposition() without actual window handle, so that video scene can be composed via Windows native composition API, such as DirectComposition. Note that this videosink does not support GstVideoOverlay interface because of the design. The swapchain created by this element can be used with * DirectComposition's IDCompositionVisual in Win32 app * WinRT and WinUI3's UI.Composition in Win32/UWP app * UWP and WinUI3 XAML's SwapChainPanel See also examples in this commit which show usage of the videosink Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7287> 2024-08-08 14:09:20 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/va/gstvah264enc.c: vah264enc: fix typo Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7337> 2024-08-06 10:59:32 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/va/gstvaav1dec.c: * sys/va/gstvaav1enc.c: * sys/va/gstvabaseenc.c: * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: * sys/va/gstvavp8dec.c: * sys/va/gstvavp9enc.c: va: replace %d for %u format for system_frame_number guint32 variable And also fixed the format for other less frequently printed variables. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7337> 2024-08-06 10:58:29 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/va/gstvah264enc.c: vah264enc: update b_pryamid property if it changes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7337> 2024-08-06 10:57:56 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: vah26xenc: use gst_h26x_slice_type_to_string() Rather than custom function. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7337> 2024-08-16 14:47:52 +1000 Jan Schmidt <jan@centricular.com> * tests/check/elements/webrtcbin.c: tests/webrtcbin: Add a lock around the stats test Prevent any race if both webrtcbin end up generating their statistics simultaneously, however unlikely. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7365> 2024-08-16 14:46:19 +1000 Jan Schmidt <jan@centricular.com> * tests/check/elements/webrtcbin.c: tests/webrtcbin: Fix racy rollback test Prevent the default webrtc test machinery from attempting to create and set an answer when we're just testing rollback of the offers. Add some locking / waiting to ensure the test is complete before exiting. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7365> 2024-08-16 08:58:47 +1000 Jan Schmidt <jan@centricular.com> * tests/check/elements/webrtcbin.c: tests/webrtcbin: Use fail_unless_matches_string() Use pattern matching against expected error strings that might include internal element names, where the names are default assigned with incrementing integers. When running with CK_FORK=no, there may have been previous tests that ran in the same process and incremented the counters more than when running in the default fork-per-test mode. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7365> 2024-08-13 23:55:47 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvadeinterlace.c: va: deinterlace: Do not use the backward reference num_backward_references > 0 means we need to cache several frames after the current frame. But the basetransform class does not provide any _drain() kind function, so we do not have the chance to push out our cached frames when EOS or set caps event comes. Rather than losing the last several frames, we should just give up the backward reference here. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7348> 2024-08-13 22:41:00 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvadeinterlace.c: va: deinterlace: Push the forgotten leading frames if forward reference > 0 The current code forgets to push the first several frames if the forward reference > 0. They are just cached in history array and will never be deinterlaced and pushed. For the first several frames, even the forward reference frames are not enough, we still need to deinterlace them as normal and push them after that. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7348> 2024-08-14 19:44:40 +0800 Qian Hu (胡骞) <qian.hu@mediatek.com> * gst/jpegformat/gstjpegparse.c: jpegparse: fix incorrect reading of transform in app14 marker "adobe" in app14 marker seem not a null-terminted string. so, when we use gst_byte_reader_get_string_utf8, more bytes will be read until null. and "gst_byte_reader_get_uint8 (&reader, &transform)" will almost fail to read transform Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7356> 2024-08-14 10:45:43 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: remove duplicated structure definition Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7354> 2024-08-14 10:30:35 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: don't override error on get_format() call If gst_vulkan_video_encoder_get_format() fails it fills the error structure, so it shouldn't be filled again. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7354> 2024-08-12 17:29:18 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: There's no need to store the aligned offset of 0 Since it's 0 too. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7354> 2024-08-12 17:27:35 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: use g_clear_pointer to unref packed headers And use g_ptr_arra_unref() Instead of using the unrecommended g_ptr_array_free(). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7354> 2024-08-12 16:58:27 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: vkencoder-private: don't check twice for encoder parameter Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7354> 2024-08-12 16:57:59 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: vkencoder-private: fix code style Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7354> 2024-07-22 21:29:38 +0800 Qian Hu (胡骞) <qian.hu@mediatek.com> * gst-libs/gst/codecparsers/gsth264parser.c: * gst-libs/gst/codecparsers/gsth265parser.c: * tests/check/libs/h264parser.c: h26xparse: bypass check for length_size_minus_one fix playback fail, when some file with length_size_minus_one == 2 According to the spec 2 cannot be a valid value, so that stream has a bad config record. but breaking the decoding because of that, perhaps is too much. and ffmpeg seem not check this Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7213> 2024-05-21 22:28:05 +0300 Jordan Petridis <jordan@centricular.com> * docs/plugins/gst_plugins_cache.json: * gst/rtmp2/gstrtmp2sink.c: * gst/rtmp2/gstrtmp2src.c: * gst/rtmp2/rtmp/amf.c: * gst/rtmp2/rtmp/amf.h: * gst/rtmp2/rtmp/rtmpclient.c: * gst/rtmp2/rtmp/rtmpclient.h: * gst/rtmp2/rtmp/rtmpconnection.c: * gst/rtmp2/rtmp/rtmpconnection.h: rtmp2: reimplement librtmp's connection parameters for the connect packet librtmp allows for attaching arbitrary AMF objects to the end of the connect packet, and this is commonly used for authenticating with servers. Add a new property, extra-connect-args, that mimics librtmp's behavior. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7054> 2024-08-13 10:42:31 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/msdk/gstmsdkav1enc.c: * sys/msdk/gstmsdkcontext.c: * sys/msdk/gstmsdkh264enc.c: * sys/msdk/gstmsdkh265enc.c: * sys/msdk/gstmsdkmpeg2enc.c: * sys/msdk/gstmsdkvc1dec.c: * sys/msdk/gstmsdkvp9enc.c: msdk: replace strcmp with g_strcmp0 Because strcmp doesn't handle NULL. Fixes: #3721 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7347> 2024-06-23 23:09:00 +0200 Marijn Suijten <marijns95@gmail.com> * gst-libs/gst/vulkan/gstvkutils.c: vulkan: Replace open-coded precondition checks with g_return_val_if_fail While analyzing gst_vulkan_get_or_create_image_view_with_info() it seems obvious that this function returns NULL, and that this should be covered in the return annotations. However, closer inspection indicates that this is only a precondition check when the incoming arguments are incompatible with each other, and should not be considered as a function that optionally returns a pointer. Signify this by using precondition checks instead of an opencoded if-return-NULL. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5736> 2023-11-29 23:23:46 +0100 Marijn Suijten <marijns95@gmail.com> * gst-libs/gst/vulkan/gstvkdevice.c: vulkan: Annotate queue getter as nullable Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5736> 2023-11-29 20:05:18 +0100 Marijn Suijten <marijns95@gmail.com> * gst-libs/gst/vulkan/gstvkbuffermemory.c: * gst-libs/gst/vulkan/gstvkbuffermemory.h: * gst-libs/gst/vulkan/gstvkmemory.c: * gst-libs/gst/vulkan/gstvkmemory.h: * gst-libs/gst/vulkan/gstvkutils.c: * gst-libs/gst/vulkan/gstvkutils.h: vulkan: Mark some pointers to Vulkan info structures as const These pointers are only used as read-only arguments, and should not be treated as mutable. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5736> 2023-11-29 19:46:49 +0100 Marijn Suijten <marijns95@gmail.com> * gst-libs/gst/vulkan/gstvkdecoder-private.c: vulkan: Add missing `out` annotation to `decoder_out_format()` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5736> 2023-11-28 10:54:27 +0100 Marijn Suijten <marijns95@gmail.com> * gst-libs/gst/vulkan/gstvkdevice.c: * gst-libs/gst/vulkan/gstvkdisplay.c: * gst-libs/gst/vulkan/gstvkinstance.c: * gst-libs/gst/vulkan/gstvkqueue.c: vulkan: Fix context get/set annotations Most notably the out annotations for gst_context_get_* were missing, causing us to generate the wrong bindings for Rust. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5736> 2024-08-01 13:42:52 +1000 Jan Schmidt <jan@centricular.com> * ext/webrtc/gstwebrtcbin.c: * tests/check/elements/webrtcbin.c: webrtcbin: Fix renegotiation checks When checking for renegotiation against a local offer, reverse the remote direction in the corresponding answer to fix falsely not triggering on-negotiation needed when switching (for example) from local sendrecv -> recvonly against a peer that answered 'recvonly'. In the other direction, when the local was the answerer, renegotiation might trigger when it didn't need to - whenever the local transceiver direction differs from the intersected direction we chose. Instead what we want is to check if the intersected direction we would now choose differs from what was previously chosen. This makes the behaviour in both cases match the behaviour described in https://www.w3.org/TR/webrtc/#dfn-check-if-negotiation-is-needed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7303> 2024-08-08 14:36:19 +0200 Benjamin Gräf <benjamin.graef@zuehlke.com> * docs/plugins/gst_plugins_cache.json: * sys/decklink/gstdecklink.cpp: * sys/decklink/gstdecklink.h: decklink: Add support for all modes of Quad HDMI recorder By extending the GstDecklinkModeEnum with the additional modes supported by the Quad HDMI recorder, we avoid using mode = 0 in case any of these resolutions is returned by the card. Fixes#3713 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7302> 2024-08-08 13:18:42 +0100 Tim-Philipp Müller <tim@centricular.com> * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: mpegts: fix stray gtk-doc chunk Trips up g-ir-scanner it seems: gstmpegtsdescriptor.h:614: Error: GstMpegts: Skipping invalid GTK-Doc comment block https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6793#note_2517855 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7324> 2024-08-08 16:37:35 +0800 Shengqi Yu <shengqi.yu@mediatek.com> * gst/autoconvert/gstbaseautoconvert.c: baseautoconvert: correct mistake in printing log Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7323> 2024-08-07 19:14:26 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/aom/gstav1enc.c: aom: av1enc: restrict allowed input width and height Restrict allowed input resolution to something sensible in light of libaom CVE-2024-5171. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7320> 2024-08-05 22:10:28 +1000 Jan Schmidt <jan@centricular.com> * ext/webrtc/gstwebrtcbin.c: * gst-libs/gst/webrtc/rtcsessiondescription.c: * tests/check/elements/webrtcbin.c: webrtcbin: Make basic rollbacks work Fixes for basic rollback (from have-local-offer or have-remote-offer to stable). Allow having no SDP attached to the webrtc session description in that case, and avoid all the transceiver and ICE update logic normally applied when entering the stable signalling state Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7304> 2024-08-06 22:48:16 +1000 Jan Schmidt <jan@centricular.com> * gst-libs/gst/webrtc/webrtc_fwd.h: webrtc: Add missing G_BEGIN/END_DECLS in header Fix using webrtc.h from C++ by adding the GLib begin/end decls markers around the header contents in webrtc_fwd.h Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7312> 2024-08-06 10:03:55 +1000 Matthew Waters <matthew@centricular.com> * sys/decklink/gstdecklinkvideosrc.cpp: decklink: fix win32 build error This was not caught by the CI in the MR. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7307> 2024-07-22 23:55:48 +1000 Matthew Waters <matthew@centricular.com> * docs/plugins/gst_plugins_cache.json: * sys/decklink/gstdecklink.cpp: * sys/decklink/gstdecklink.h: * sys/decklink/gstdecklinkvideosink.cpp: * sys/decklink/gstdecklinkvideosink.h: * sys/decklink/gstdecklinkvideosrc.cpp: * sys/decklink/gstdecklinkvideosrc.h: decklink: add support for HDR output and input Supports PQ and HLG static metadata. Support for HDR is queried from the device and selectively enabled when supported. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7214> 2024-07-30 12:49:04 +1000 Jan Schmidt <jan@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/webrtc/gstwebrtcbin.c: * ext/webrtc/gstwebrtcbin.h: webrtc: Add reuse-source-pads property Add a property to avoid sending EOS on source pads when the associated transceiver becomes inactive during renegotiation. This allows the pads to become active again in a later renegotiation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7237> 2024-07-25 21:25:58 +1000 Jan Schmidt <jan@centricular.com> * gst-libs/gst/webrtc/rtptransceiver.c: webrtc: Fix transceiver `current-direction` property Fix a typo registering the `current-direction` property that made it just be a proxy for `direction` instead. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7237> 2024-07-24 20:59:51 +1000 Jan Schmidt <jan@centricular.com> * ext/webrtc/gstwebrtcbin.c: webrtc: Fixes for matching pads to unassociated transceivers Fix an inverted condition when checking if sink pad caps match the codec-preference of an unassociated transceiver, and fix a condition check for transceiver media kind to avoid matching sinkpad requests where caps aren't provided against unassociated transceivers where the caps might not match later. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7237> 2024-07-24 20:58:01 +1000 Jan Schmidt <jan@centricular.com> * ext/webrtc/gstwebrtcbin.c: webrtcbin: tracked maximum pad serial better If a sink pad with a specific index is requested, also increase the maximum pad serial number if necessary, so that mixing fixed sink_X requests with unspecific sink_%u requests works. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7237> 2024-08-02 11:21:13 +0200 Carlos Bentzen <cadubentzen@igalia.com> * ext/webrtc/gstwebrtcbin.c: * tests/check/elements/webrtcbin.c: webrtcbin: connect output stream on recv transceivers With MR 7156, transceivers and transports are created earlier, but for sendrecv media we could get `not-linked` errors due to transportreceivebin not being connected to rtpbin yet when incoming data arrives. This condition wasn't being tested in elements_webrtcbin, but could be reproduced in the webrtcbidirectional example. This commit now also adds a test for this, so that this doesn't regress anymore. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7294> 2024-08-02 11:19:56 +0200 Carlos Bentzen <cadubentzen@igalia.com> * ext/webrtc/gstwebrtcbin.c: webrtcbin: reverse direction from remote media This had been overlooked from the spec. We need to reverse the remote media direction when setting the transceiver direction. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7294> 2024-04-08 21:38:19 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: vah264enc: Fix intra only stream bug When we set "ref-frames=0" to generate an intra only stream, the current encoder just generates an assert and exit with error. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6577> 2024-04-01 16:56:23 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: vah264enc: Improve B pyramid mode in H264 If the reference frame number is bigger than 2, we can enable the pyramid B mode. We do not need to assign a reference frame to each pyramid level. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6577> 2024-04-01 23:54:04 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: va: h264enc: Make the level table aligned Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6577> 2024-08-02 05:21:34 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12dxgicapture.cpp: d3d12screencapturesrc: Always release acquired frame AcquireNextFrame() call should be paired with ReleaseFrame(). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7293> 2024-08-02 04:07:18 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12dxgicapture.cpp: d3d12screencapturesrc: Do not recreate d3d11 device on capture error Already opened d3d11 device including shader pipeline can be reused Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7293> 2024-08-02 03:02:08 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12dxgicapture.cpp: d3d12screencapturesrc: Fix deadlock on error Don't try to wait for non-signalled fence Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7293> 2024-07-30 09:27:49 +0000 Michael Scherle <michael.scherle@rz.uni-freiburg.de> * sys/msdk/gstmsdkvpp.c: * sys/msdk/gstmsdkvpp.h: * sys/msdk/msdk-enums.c: * sys/msdk/msdk-enums.h: msdkvpp: add interpolation method For description of interpolation modes, see: <https://intel.github.io/libvpl/latest/API_ref/VPL_enums.html#interpolationmode>. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7278> 2024-07-03 07:58:58 -0600 Jordan Yelloz <jordan.yelloz@collabora.com> * gst/videoparsers/gsth265parse.c: h265parse: Reject FD received before SPS A previous fix, a275e1e029e9b5d88be26b8304c9a162e4567346, is correct but was too permissive since it treats all un-matched NAL units the same as AU delimiters even though some other NAL unit types can be encountered in the processing loop. The problem this can cause is that some hardware decoders experience bad performance when handling FD units that precede the SPS. This change restores the original behavior for FDs so that they're ignored until the SPS is received and it preserves the codec conformance test gains that the fix has achieved. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7166> 2024-07-29 22:49:03 +1000 Matthew Waters <matthew@centricular.com> * gst-libs/gst/cuda/cuda-gst.h: * gst-libs/gst/cuda/gstcuda-private.h: * gst-libs/gst/cuda/gstcudaloader.cpp: * gst-libs/gst/cuda/gstcudautils.cpp: * gst-libs/gst/cuda/gstcudautils.h: * gst-libs/gst/cuda/meson.build: * gst-libs/gst/cuda/stub/cudaEGL.h: * sys/nvcodec/meson.build: * sys/nvcodec/plugin.c: cuda/nvcodec: Add support for importing and producing embedded NVMM memory As produced on the Nvidia Jetson series of devices. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7274> 2024-08-01 11:12:56 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkimagebufferpool.c: vkimagebufferpool: fix documentation grammar Original-patch-by: Matthew Waters <matthew@centricular.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7288> 2024-07-10 10:34:19 +0200 Carlos Bentzen <cadubentzen@igalia.com> * ext/webrtc/gstwebrtcbin.c: * ext/webrtc/webrtcsdp.c: * ext/webrtc/webrtcsdp.h: * tests/check/elements/webrtcbin.c: webrtcbin: create and associate transceivers earlier in negotation According to https://w3c.github.io/webrtc-pc/#set-the-session-description (steps in 4.6.10.), we should be creating and associating transceivers when setting session descriptions. Before this commit, webrtcbin deviated from the spec: 1. Transceivers from sink pads where created when the sink pad was requested, but not associated after setting local description, only when signaling is STABLE. 2. Transceivers from remote offers were not created after applying the the remote description, only when the answer is created, and were then only associated once signaling is STABLE. This commit makes webrtcbin follow the spec more closely with regards to timing of transceivers creation and association. A unit test is added, checking that the transceivers are created and associated after every session description is set. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7156> 2024-07-29 20:59:58 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkupload.c: vulkanupload: honor downstream pool allocation parameters If a downstream buffer pool is offered, vulkanupload checks its allocation parameters to honor them. Only adds to usage the TRANSFER bits, which are required to upload buffers. Also, fail if the buffer pool cannot be configured with the current parameters. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7219> 2024-07-29 19:06:34 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkimagebufferpool.c: * gst-libs/gst/vulkan/gstvkimagebufferpool.h: vkimagebufferpool: expose config_get_allocation_params() Also enhanced the documentation and added a config parameter check for gst_vulkan_image_buffer_pool_config_set_allocation_params() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7219> 2024-07-26 17:13:10 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * ext/rsvg/gstrsvgoverlay.c: rsvgoverlay: add debug category Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7246> 2024-07-19 14:00:45 -0400 Daniel Morin <daniel.morin@collabora.com> * ext/onnx/gstonnxclient.cpp: onnx: fix formating Code alignement was not alway consistent Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7205> 2024-07-25 17:06:39 +0200 Edward Hervey <edward@centricular.com> * gst-libs/gst/vulkan/gstvkvideoutils.h: vulkan: Add missing since markers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7277> 2024-07-25 16:28:04 +0200 Edward Hervey <edward@centricular.com> * ext/ldac/ldac-plugin.c: * ext/svtav1/gstsvtav1enc.c: * ext/svthevcenc/gstsvthevcenc.c: bad: Add missing plugin since These predate current stable release. Was never spotted since they weren't built on the CI Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7277> 2024-07-27 06:52:49 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/vtenc.c: vtenc: Do not set the CRF/Quality parameter with ProRes It's not supported with ProRes, setting the property will fail. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7232> 2024-07-27 06:52:25 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/vtenc.c: vtenc: Log warnings when setting a property fails Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7232> 2024-07-27 06:27:14 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/vtenc.c: * sys/applemedia/vtenc.h: vtenc: Add max-frame-delay property This controls the number of frames allowed in the compression window. Not all encoders and implementations support it; I've only managed to successfully use it with ProRes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7232> 2024-07-27 05:47:34 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/vtenc.c: vtenc: Support emulating CBR mode with data rate limits CBR is only supported on Apple Silicon, and this "emulation" works surprisingly well. We set the window size to a single frame, and don't set ABR at all. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7232> 2024-07-27 05:39:53 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/vtenc.c: * sys/applemedia/vtenc.h: vtenc: Add new property for setting data rate limits This proxies kVTCompressionPropertyKey_DataRateLimits, except it only supports a single limit for now. https://developer.apple.com/documentation/videotoolbox/kvtcompressionpropertykey_dataratelimits Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7232> 2024-07-25 04:36:09 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/vtenc.c: * sys/applemedia/vtenc.h: vtenc: Add support for constant bitrate encoding Only supported on macOS 13.0+ and iOS 16.0+ on Apple Silicon. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7232> 2024-07-25 03:04:43 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/vtenc.c: vtenc: Eliminate some needless complex code We do not need a helper that takes a lock to fetch the values of these properties. There is no race being prevented. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7232> 2024-07-25 03:03:41 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/vtenc.c: vtenc: Fix setting of quality property gst_vtenc_set_quality() will never actually set the VT compression property, because it tries to set it on self->session which is not initialized at this point. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7232> 2024-07-23 14:12:07 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkupload.c: vulkanupload: comment zero value usage with VK_ACCESS_NONE Zero is used only for Vulkan version prior to 1.3, because it wasn't defined before. Just for readability. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7247> 2024-07-26 17:26:09 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkimagebufferpool.c: vkimagebufferpool: refactor how image usage is set Now that driver version is expected to be equal or superior to 1.3.275 the bug in NVIDIA and RADV regarding usage is solved, we can revert commit b7ded81f7b. Also this patch sets the internal usage variable after all the validation are run, thus the state don't keep an invalid usage. Finally, the now unused supported_usage variable is dropped. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7247> 2024-07-23 14:11:30 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkimagebufferpool.c: vkimagebufferpool: add encoding usage as video usage Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7247> 2024-07-23 14:07:26 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkimagebufferpool.c: vkimagebufferpool: reset the number of profiles at set_config() Virtual method set_config() can be called several times, and if the number of profiles counter isn't reset the pool will reach an error state. The purpose of number of profiles is to check the number of valid vulkan video profiles (two in the case of transcoding use-case, for example) so it's local to set_config() virtual method. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7247> 2024-07-26 17:09:59 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkdecoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.c: vulkan: encoder and decoder runtime check for driver version 1.3.275 Which is the one checked in meson. See commit 21ee264d65 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7247> 2024-07-29 10:29:11 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/va/gstvaallocator.c: va: refactor dmabuf handle close Moved the close loop into a function guarded for non-win32 platforms. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7254> 2024-07-28 02:01:24 +0900 Seungha Yang <seungha@centricular.com> * sys/qsv/gstqsvav1enc.cpp: * sys/qsv/gstqsvh264enc.cpp: * sys/qsv/gstqsvh265enc.cpp: * sys/qsv/gstqsvjpegenc.cpp: * sys/qsv/gstqsvvp9enc.cpp: qsv: Fix critical warnings Fixing warnings GStreamer-CRITICAL **: 01:21:25.862: gst_value_set_int_range_step: assertion 'start < end' failed Although when QSV runtime reports a codec is supported, resolution query fails sometimes, espeically VP9 encoder case on Windows. Don't try to register an element if resolution query returned an error Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7250> 2024-07-27 02:18:45 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/svtav1/gstsvtav1enc.c: svtav1enc: Fix segfault when flushing gst_video_encoder_get_oldest_frame() is nullable, and will signal that all frames are handled by returning NULL. Fixes #3650 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7249> 2024-07-27 04:16:16 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12frame.cpp: d3d12frame: Fix frame copy method Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7243> 2024-07-27 03:50:19 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12memory.cpp: d3d12memory: Check heap flag before trying to create NT handle CreateSharedHandle() will fail eventually if the resource was created with non-shared heap. Instead of trying to create handle blindly, validate resource first. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7243> 2024-07-27 03:39:22 +0900 Seungha Yang <seungha@centricular.com> * sys/dwrite/gstdwriterender_d3d12.cpp: dwrite: Prefer d3d12 resource allocated with shared heap Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7243> 2024-07-26 02:46:46 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12fencedatapool.cpp: d3d12: Suppress fence data object leak report We don't release GstD3D12Device intentionally, thus a GstD3D12FenceDataPool owned by a device will not be released but that's expected leak. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7243> 2024-07-26 02:37:20 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12utils.cpp: d3d12: Fix debug category name Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7243> 2024-07-26 02:17:07 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12memorycopy.cpp: d3d12download: Do not overwrite fence of non-writable memory A fence configured in GstD3D12Memory should be used only for write access to be completed. And because d3d12 -> d3d11 copy path is read access to d3d12 resource, we should not set fence to memory. Otherwise another read access to the d3d12 resource will wait for d3d11 device context's copy operation although simultaneous read access is allowed. Use background thread to keep d3d12 resource and wait for d3d11 device's copy operation instead. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7243> 2024-07-25 22:44:51 +1000 Jan Schmidt <jan@centricular.com> * gst-libs/gst/va/gstvaallocator.c: va: Fix dmabuf handle leaks Close dmabuf handles manually when they're not going to be passed into GStreamer FD memory, to avoid fd handle leaks. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7240> 2024-07-08 16:42:58 -0600 Jordan Yelloz <jordan.yelloz@collabora.com> * gst/mpegtsmux/tsmux/tsmux.c: tsmux: Adjust byte counter when adjusting bitrate When configured in constant bitrate mode, the muxer computes timing information using the configured bitrate and the byte counter (now = bytes sent / byterate). When an application changes the bitrate in CBR mode during playback, the relationship between bytes sent and bitrate is no longer valid so new timing values will be off by the ratio of the old bitrate to the new bitrate. Furthermore, it will upset the way that padding is generated. pad_stream() works by trying to fit the byte counter to now * byterate. The result is that when decreasing bitrate, the muxer stalls, waiting until the byte counter is in agreement with now * byterate. Also, when increasing bitrate, the padding will spike in volume until the byte counter fits with now * byterate. If the byte counter is scaled by the ratio of new bitrate / old bitrate when adjusting bitrate, then padding is generated in a way that applications would more likely expect. One detail this change doesn't yet address is whether the next PCR will match up optimally with the previous PCR right after the byte counter is scaled. In that case, some correction may be necessary. Also, perhaps the user should be prevented from changing from bitrate=0 to bitrate=nonzero during playback since it's not straightforward how to scale the byte counter in that case. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7158> 2024-07-24 22:22:03 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * ext/qroverlay/gstbaseqroverlay.c: qroverlay: redraw overlay when caps changes The position needs to be updated as it depends of the video size. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7230> 2024-07-24 22:21:41 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * ext/qroverlay/gstbaseqroverlay.c: qroverlay: add some debug logs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7230> 2024-07-24 09:16:03 +0200 tomaszmi <257184-tomaszmi@users.noreply.gitlab.freedesktop.org> * ext/avtp/gstavtpsink.c: avtp: Fixed Linux/Alpine 3.20 build Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7226> 2024-07-24 02:33:50 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/gstcudanvrtc.cpp: cuda: Fix runtime compiler loading with old CUDA tookit Fallback to PTX if CUBIN symbol is unavailable Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3685 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7220> 2024-07-19 17:06:03 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkimagebufferpool.c: vkimagebufferpool: no aliased images for video decoding This fix regression in validation layer introduced by commit 3a2e8d2d19 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7211> 2024-07-19 16:56:23 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkdecoder-private.c: vkdecoder: handle barrier internally for coincide references This is to avoid a regression in validation layer (introduced by commit 916c4e70cd) when using vulkandownload VUID-VkImageMemoryBarrier2-srcAccessMask-03914 .. vkCmdPipelineBarrier2(): pDependencyInfo->pImageMemoryBarriers[1].srcAccessMask (VK_ACCESS_TRANSFER_READ_BIT) is not supported by stage mask (VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR) since vulkandownload set DPB memories' access mask to VK_ACCESS_TRANSFER_READ_BIT, while they are retain by the DPB queue, so when they are used as DPB after been shown, this validation error is raised. Must of the barrier values are set ignoring the previous state of the vulkan images. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7211> 2023-12-21 09:32:25 +0100 Stéphane Cerveau <scerveau@igalia.com> * ext/vulkan/vkdownload.c: * ext/vulkan/vkupload.c: vulkan{up,down}load: check for a graphics family queue Vulkan queue retrieved from peer elements should be a graphics family one. Otherwise, get a compatible queue from the given device. Co-Authored-By: VÃctor Jáquez <vjaquez@igalia.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7162> 2024-07-19 01:14:20 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12av1dec.cpp: * sys/d3d12/gstd3d12av1dec.h: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12decoder.h: * sys/d3d12/gstd3d12h264dec.cpp: * sys/d3d12/gstd3d12h264dec.h: * sys/d3d12/gstd3d12h265dec.cpp: * sys/d3d12/gstd3d12h265dec.h: * sys/d3d12/gstd3d12mpeg2dec.cpp: * sys/d3d12/gstd3d12mpeg2dec.h: * sys/d3d12/gstd3d12vp8dec.cpp: * sys/d3d12/gstd3d12vp8dec.h: * sys/d3d12/gstd3d12vp9dec.cpp: * sys/d3d12/gstd3d12vp9dec.h: * sys/d3d12/plugin.cpp: d3d12decoder: Add support for d3d11 output again Although d3d12download supports d3d12 to d3d11 texture copy, this feature might be useful if an application is not ready to d3d12 support and it expects output type of decodebin(3) is d3d11. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7208> 2024-07-18 23:51:23 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12screencapturesrc.cpp: * sys/d3d12/meson.build: * sys/d3d12/plugin.cpp: meson: d3d12: Use configuration file Move defines to config header Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7208> 2023-11-14 14:39:29 +0800 Mengkejiergeli Ba <mengkejiergeli.ba@intel.com> * sys/msdk/gstmsdkcontext.c: msdk: Add new driver name "xe" Intel has released a new graphic driver named "xe" for newer Gen12/Xe graphics (i.e. from Lunar Lake). This patch add "xe" name when getting device in gst-msdk plugins. See xe driver public in https://github.com/torvalds/linux/tree/master/drivers/gpu/drm/xe Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7178> 2024-07-19 17:05:13 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkoperation.c: vkoperation: fix documentation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7203> 2024-03-19 20:04:15 -0300 L. E. Segovia <amy@centricular.com> * ext/isac/meson.build: isac: Work around upstream having no shared library support for MSVC None of the symbols in webrtc-audio-coding-1 are marked with `__declspec(dllexport)`, rendering the library usable only if it was built with GCC/Clang. The only fix available (as the pulseaudio copy has not been updated with Google's upstream) is to ensure the fallback builds statically. Although this change will also affect webrtcdsp's dependency on webrtc-audio-processing-1, it does not break its compilation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6407> 2024-07-12 10:34:56 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkimagebufferpool.c: vkimagebufferpool: reset buffer's access flags The access flags are kept around the operations, but when the buffer is released, the access flag should be reset to its original value, since queue transfers can be done along the pipeline and, when reusing the buffer, the new queue might not support the latest access flag. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7165> 2024-07-12 10:06:03 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkh264dec.c: vulkanh264dec: set access NONE at buffer pool allocation parameters Since the decoding queue might not have transfer capabilities. This change also applies to unit test. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7165> 2024-07-11 13:05:28 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkdownload.c: * ext/vulkan/vkupload.c: * gst-libs/gst/vulkan/gstvkdecoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkimagebufferpool.c: * gst-libs/gst/vulkan/gstvkoperation.c: * gst-libs/gst/vulkan/gstvkoperation.h: * tests/check/libs/vkvideodecode.c: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vulkan: add source pipeline stage to _operation_add_frame_barrier() Instead of dragging the last destination pipeline stage as current barrier source pipeline stage (which isn't a valid semantic) this patch adds a parameter to gst_vulkan_operation_add_frame_barrier() to set the source pipeline stage to define the barrier. The previous logic brought problems particularly with queue transfers, when the new queue doesn't support the stage set during a previous operation in a different queue. Now the operation API is closer to Vulkan semantics. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7165> 2024-07-12 18:10:12 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkupload.c: * tests/check/libs/vkvideodecode.c: * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: vulkan: fix wrong stages or access in barriers While working on !7165 we found out that some parameters for barriers were wrong or the destination pipeline stage was too coarse. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7200> 2024-06-27 22:25:42 +1000 Matthew Waters <matthew@centricular.com> * sys/decklink/gstdecklinkvideosink.cpp: * sys/decklink/gstdecklinkvideosink.h: decklinkvideosink: schedule frames before they need to be displayed This removes most occurances of 'late' frame notifications produced by decklink. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7107> 2024-07-18 23:00:16 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter-pack.cpp: * gst-libs/gst/d3d12/gstd3d12converter-unpack.cpp: d3d12converter: Update internal method names Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7193> 2024-07-18 03:30:23 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12ipcclient.cpp: * sys/d3d12/gstd3d12testsrc.cpp: d3d12: Always allocate output texture using shared heap ... if downstream preference is unknown (e.g., no proposed buffer pool by downstream), so that produced textures can be shareable with other APIs such as d3d11 or vulkan, or other processes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7193> 2024-07-16 23:08:39 +0200 Robert Mader <robert.mader@posteo.de> * sys/va/gstvabase.c: vabase: Stop aligning VideoInfo during DMABUF import Doing so resets the stride from the VideoMeta and it wasn't done before the commit below. While on it, drop the plane size check as we can't reliably predict the correct size when using DRM modifiers. Fixes: 89b0a6fa23 ("va: refactor buffer import") Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7187> 2024-07-17 12:45:31 +0200 Robert Mader <robert.mader@posteo.de> * sys/va/gstvabase.c: vabase: Use correct VideoInfo during DMABUF import The changes to the VideoInfo, notably the stride from the VideoMeta, were lost. Avoid such mistakes by explicitly using the VideoInfo from drm_info. Fixes: 9f5b2c4e25 ("va: use GstVideoInfoDmaDrm when importing buffers") Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7187> 2024-07-17 23:44:09 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/avfdeviceprovider.m: * sys/applemedia/avfvideosrc.h: * sys/applemedia/avfvideosrc.m: avfdeviceprovider: Fix debug category initialization The device monitor calls into avfvideosrc functions without initializing the debug category, which causes multiple criticals. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7192> 2024-07-16 03:31:33 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12commandqueue-private.h: * gst-libs/gst/d3d12/gstd3d12commandqueue.cpp: * gst-libs/gst/d3d12/gstd3d12commandqueue.h: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12device.h: * gst-libs/gst/d3d12/gstd3d12memory.cpp: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12window-swapchain-resource.h: * sys/d3d12/gstd3d12window-swapchain.cpp: * sys/dwrite/gstdwriterender_d3d12.cpp: * sys/webview2/gstwebview2src.cpp: d3d12: Remove unnecessary event handles null event NT handle to ID3D12Fence::SetEventOnCompletion() will block the calling CPU thread already, thus it has no point that creating an event NT handle in order to immediate wait for fence at CPU-side. Note that passing a valid event NT handle to the fence API might be useful when we need to wait for the fence value later (or timeout is required), or want to wait for multiple fences at once via WaitForMultipleObjects(). But it's not a considered use case for now. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7176> 2024-07-16 04:21:09 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12window.cpp: d3d12videosink: Fix mouse event handling GstD3D12Window.priv.input_info is referenced by mouse event handler in order to calculate corresponding original position if scene is rotated/flipped by the videosink. Fixing regression introduced by recent d3d12videosink refactoring Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7177> 2024-07-15 12:44:52 +0200 Robert Mader <robert.mader@posteo.de> * sys/va/plugin.c: va: Blocklist i965 driver for encoding The driver - AKA intel-vaapi-driver - has been unmaintained for four years now and encoding appears to be broken in various cases. As it's unlikely that the situation will improve, blocklist the driver for encoding. Decoding appears to be stable enough to keep it enabled. The driver can still be used by setting the `GST_VA_ALL_DRIVERS` env variable. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7170> 2024-07-05 11:36:04 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkdebug.c: * gst-libs/gst/vulkan/gstvkformat.c: vulkan: remove beta extensions guard for encode operations This is not needed anymore since encoder operations are not beta anymore. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7179> 2024-07-16 23:07:50 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12compositor.cpp: d3d12compositor: Fix transparent background mode with YUV output In case of YUV format without alpha channel, zero clear value for each channle will result in green color. Use calculated black background color with alpha=0 for transparent background mode instead. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7181> 2024-07-16 20:38:41 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d11/gstd3d11compositor.cpp: d3d11compositor: Fix transparent background mode with YUV output In case of YUV format without alpha channel, zero clear value for each channle will result in green color. Use calculated black background color with alpha=0 for transparent background mode instead. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7181> 2024-07-11 17:23:43 +0300 Sebastian Dröge <sebastian@centricular.com> * sys/aja/gstajasrc.cpp: ajasrc: Fix handling of timestamps and don't rely on driver frame counters The driver frame counters (processed, dropped, buffer level) are not always correct apparently, and don't allow reliably assigning a frame number to captured frames. Instead of relying on them, count the number of frames directly here and detect dropped frames based on the capture times of the frames: if more than 1.75 frame durations are between two frames, then there must've been a dropped frame. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7163> 2024-07-03 22:57:58 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/codecs/gsth264decoder.c: h264decoder: Update output frame duration when second field frame is discarded In case of an interlaced stream, if each field picture belongs to different GstVideoCodecFrame, updates output frame's duration based on discarded second field picture's timestamp information. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7132> 2024-07-13 00:04:10 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12window-swapchain.cpp: d3d12videosink: Clear cached buffer on format change Otherwise converter will try to read memory of which layout/format might be different from configured converter pipeline Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7167> 2024-07-12 12:34:52 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/va/gstvadisplay.c: vadisplay: fix minor version check Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7164> 2024-04-17 12:21:43 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkimagebufferpool.c: vkimagebufferpool: set image creation flags in needed set ALIAS bit if the usage is for both sampled and storage. set MUTABLE_FORMAT and EXTENDED_USAGE bits if the image is a multiplane YUV and uses multiple memories. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6798> 2024-04-17 12:15:07 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkformat.c: * gst-libs/gst/vulkan/gstvkformat.h: vkformat: add gst_vulkan_format_get_map function This will be used later to compare the format selected by gst_vulkan_format_from_video_info_2(), to verify if it's multiple memory buffer or not. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6798> 2024-01-25 11:14:23 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkupload.c: vulkanupload: request storage usage for bufferpool Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6798> 2024-01-22 17:28:06 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkimagebufferpool.c: vkimagebufferpool: define a default usage Define a default usage and use it instead of repeating the same bitwise addition. Therefore, when usage is defined as zero, the usage is defined with the format's supported usage and the default usage, now without the storage bit, but with color and input attachment bits. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6798> 2024-04-17 12:17:45 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkformat.c: vkformat: unward G8_B8R8_2PLANE_420_UNORM Since it exists since VK_VERSION_1_1. It should be ignored by usage flags or the no_multiplane parameter. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6798> 2024-07-04 02:02:42 +0200 Robert Mader <robert.mader@posteo.de> * gst-libs/gst/wayland/gstwlwindow.c: waylandsink: Fix surface cropping for rotated streams The wp_viewport source rectangle is applied in surface-local coordinates after buffer_transform and buffer_scale. Therefore we need to swap width and height for 90/270 deg. rotations. This fixes playback of rotated videos such as portrait videos from mobile devices. See also: https://wayland.app/protocols/viewporter#wp_viewport Fixes: 0b648f9a2d ("waylandsink: Crop surfaces to their display width height") Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7136> 2024-07-08 15:30:45 +0200 Ruben Gonzalez <rgonzalez@fluendo.com> * ext/vulkan/vkh265dec.c: vkh265dec: Fix H.264 ref in logs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7146> 2024-07-05 00:29:05 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12memorycopy.cpp: d3d12memorycopy: Enhance d3d12 to d3d11 copy If a d3d12 memory holds non-direct-queue fence but the fence was created with D3D12_FENCE_FLAG_SHARED flag, use the fence instead of waiting for fence at CPU side. Note that d3d12ipcsrc or d3d12screencapture elements will hold such sharable fence. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7139> 2024-07-01 16:59:23 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/videotexturecache-vulkan.mm: applemedia: Disable some deprecation errors This needs significant work to use the new Metal→Vulkan integration extension `VK_EXT_metal_objects` ``` MoltenVK/mvk_deprecated_api.h:132:1: note: 'vkGetMTLDeviceMVK' has been explicitly marked deprecated here MVK_DEPRECATED_USE_MTL_OBJS ^ MoltenVK/mvk_deprecated_api.h:74:52: note: expanded from macro 'MVK_DEPRECATED_USE_MTL_OBJS' #define MVK_DEPRECATED_USE_MTL_OBJS VKAPI_ATTR [[deprecated("Use the VK_EXT_metal_objects extension instead.")]] ^ ../sys/applemedia/videotexturecache-vulkan.mm:303:20: error: 'vkSetMTLTextureMVK' is deprecated: Use the VK_EXT_metal_objects extension instead. VkResult err = vkSetMTLTextureMVK (memory->vulkan_mem.image, texture); ^ MoltenVK/mvk_deprecated_api.h:151:1: note: 'vkSetMTLTextureMVK' has been explicitly marked deprecated here MVK_DEPRECATED_USE_MTL_OBJS ^ MoltenVK/mvk_deprecated_api.h:74:52: note: expanded from macro 'MVK_DEPRECATED_USE_MTL_OBJS' #define MVK_DEPRECATED_USE_MTL_OBJS VKAPI_ATTR [[deprecated("Use the VK_EXT_metal_objects extension instead.")]] ^ 2 errors generated. ``` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091> 2024-06-28 17:19:46 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/vulkan/vkh264dec.c: * ext/vulkan/vkh265dec.c: * gst-libs/gst/vulkan/gstvkencoder-private.c: vk-video: Fix uint64_t string format errors With clang on macOS: ``` error: format specifies type 'long' but the argument has type 'uint64_t' (aka 'unsigned long long') ... error: format specifies type 'unsigned long' but the argument has type 'VkImageView' (aka 'unsigned long long') ``` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091> 2024-06-23 04:27:42 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/vulkan/meson.build: * sys/applemedia/meson.build: meson: Find MoltenVK with the objc++ compiler everywhere When building for iOS in Cerbero, as of MoltenVK SDK 1.3.283, we have to statically link to libMoltenVK since it no longer ships a dylib. This requires linking to libc++, so we find the dep with the objc++ compiler to ensure that meson uses the right linker. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091> 2024-06-23 04:25:01 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/meson.build: meson: Fix some confusing code in applemedia's build file Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091> 2024-06-23 04:20:59 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * sys/applemedia/meson.build: meson: Fix vulkan automagic in applemedia plugin Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091> 2024-06-23 04:13:31 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/vulkan/meson.build: meson: Fix vulkan library build on iOS Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091> 2024-06-23 04:11:48 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/vulkan/meson.build: meson: Use / instead of join_paths for vulkan Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091> 2024-06-23 03:46:39 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/vulkan/meson.build: * meson_options.txt: meson: Fix automagic dependency checks in gstvulkan Windowing, in particular, was getting silently disabled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7091> 2024-07-05 18:17:38 +0530 Taruntej Kanakamalla <taruntej@asymptotic.io> * tests/check/elements/lc3.c: lc3: remove bitstream comparison in the tests since the encoded output is changing based on version it does not make sense to check the output bitstream with a fixed bytearray since the version in the target might vary. So sticking to checking the number of output buffers and encoded frame size similar to the other tests Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7141> 2024-07-02 13:00:14 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/va/gstvavpp.c: vavpp: simplify gst_va_vpp_transform_caps() The code is simplified by using GQuarks for looking for caps features, and removing inner loops. Also, it's used the pad template caps to compare with the incoming caps because is cheaper at the beginning of negotiation, where the pad template caps is used. And, since the ANY caps where removed, there's no need to check for an initial intersection. Finally, the completion of caps features is done through a loop. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6698> 2024-06-26 22:19:52 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvadeinterlace.c: vadeinterlace: Do not append ANY caps into pad template Just like the vapostproc, we delete the ANY caps in pad template to avoid unexpected negotiation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6698> 2024-04-20 16:40:21 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvavpp.c: vapostproc: Do not append ANY caps into pad template The ANY caps in pad template caps seems to mess up the DMA negotiation. The command of: GST_GL_API=opengl gst-launch-1.0 -vf videotestsrc ! video/x-raw,format=NV12 ! vapostproc ! "video/x-raw(memory:DMABuf)" ! glimagesink fails to negotiate, but in fact, the vapostproc can convert the input NV12 formant into the RGBA format to render. The ANY may help the passthough mode, but we should make the negotiate correct first. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6698> 2024-06-27 14:05:46 +0800 Lim, Siew Hoon <siew.hoon.lim@intel.com> * sys/va/gstvacompositor.c: vacompositor: Initialize the allocation related variables in decide_allocation() Prevent garbage value has been pass thru and causing pipeline fail to run later on. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7097> 2024-06-27 13:59:40 +0800 Lim, Siew Hoon <siew.hoon.lim@intel.com> * sys/va/gstvabasedec.c: vabasedec: Initialize the allocation related variables in decide_allocation() Prevent garbage value has been pass thru and causing pipeline fail to run. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7097> 2024-06-25 14:38:12 +0800 Lim, Siew Hoon <siew.hoon.lim@intel.com> * sys/va/gstvabasetransform.c: vabasetranform: Initialize the allocation related variables in decide_allocation() Prevent garbage value has been pass thru and causing pipeline fail to run. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7097> 2024-04-16 23:59:58 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: vah265enc: Set the trellis only when HW supports it Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6663> 2024-04-17 00:03:48 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: vah264enc: Init missing fields in reset_state() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6663> 2024-04-16 23:50:58 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: vah264enc: Set the trellis only when HW supports it Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6663> 2024-04-16 18:13:06 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvabaseenc.c: va: baseenc: Set the trellis parameter anyway The driver may enable trellis by default. So we should also set the trellis info to driver even when the trellis option is turned off. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6663> 2024-07-02 15:26:55 -0500 jadarve <juanda0718@gmail.com> * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: doc: fix Since marker Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6793> 2024-07-02 14:55:25 -0500 jadarve <juanda0718@gmail.com> * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: mpegts: Added missing function prototype Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6793> 2024-07-02 14:25:59 -0500 jadarve <juanda0718@gmail.com> * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: doc: fix docstrings Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6793> 2024-07-02 10:14:38 -0500 jadarve <juanda0718@gmail.com> * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: doc: fix single line Since comments Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6793> 2024-07-02 09:10:27 -0500 jadarve <juanda0718@gmail.com> * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: doc: fix Since marker for gst_mpegts_descriptor_from_metadata_pointer Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6793> 2024-06-27 15:44:54 -0500 jadarve <juanda0718@gmail.com> * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: doc: update docstrings Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6793> 2024-06-27 15:20:47 -0500 jadarve <juanda0718@gmail.com> * docs/plugins/gst_plugins_cache.json: doc: update plugin cache Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6793> 2024-06-04 15:39:12 -0500 jadarve <juanda0718@gmail.com> * gst/mpegtsdemux/gstmpegdesc.h: * gst/mpegtsmux/gstbasetsmux.c: * gst/mpegtsmux/gstmpegtsmux.c: * gst/mpegtsmux/tsmux/tsmux.c: * gst/mpegtsmux/tsmux/tsmuxstream.c: * gst/mpegtsmux/tsmux/tsmuxstream.h: mpegtsmux: mux meta/x-id3 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6793> 2024-06-04 14:39:05 -0500 jadarve <juanda0718@gmail.com> * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: mpegts: use GstMpegtsMetadataApplicationFormat in metadata descriptor Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6793> 2024-06-04 14:31:48 -0500 jadarve <juanda0718@gmail.com> * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: mpegts: added metadata pointer descriptor Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6793> 2024-06-04 13:53:26 -0500 jadarve <juanda0718@gmail.com> * gst-libs/gst/mpegts/gst-metadata-descriptor.c: * gst-libs/gst/mpegts/gst-metadata-descriptor.h: * gst-libs/gst/mpegts/gst-mpegtspesmetadatameta.c: * gst-libs/gst/mpegts/gst-mpegtspesmetadatameta.h: * gst-libs/gst/mpegts/gstmpegtsdescriptor.c: * gst-libs/gst/mpegts/gstmpegtsdescriptor.h: * gst-libs/gst/mpegts/meson.build: * gst-libs/gst/mpegts/mpegts.h: mpegts: moved metadata descriptors to gstmpegtsdescriptor Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6793> 2023-04-07 14:40:58 -0400 Chris Spoelstra <cs.spoelstra@gmail.com> * docs/plugins/gst_plugins_cache.json: * ext/srt/gstsrtobject.c: srtsrc: fix case fallthrough of authentication param Add missing breaks to two case statements. Also adds a missing lock of srtobject->element when getting the value of PROP_AUTHENTICATION. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4367> 2024-06-29 23:02:21 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12memorycopy.cpp: * sys/d3d12/gstd3d12memorycopy.h: * sys/d3d12/meson.build: * sys/d3d12/plugin.cpp: d3d12: Add support for resource copy between d3d11 and d3d12 If driver can support cross-api resource sharing, use device-to-device resource copy in d3d12upload/download elements. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7119> 2024-06-29 21:37:57 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12bufferpool.cpp: d3d12bufferpool: Use shared heap by default ... to make cross-api resource sharing possible Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7119> 2024-06-27 09:55:41 +0300 Sebastian Dröge <sebastian@centricular.com> * sys/aja/gstajasrc.cpp: ajasrc: Drop some frames after signal recovery After signal recovery the capture times for the next frames are simply wrong. Experimentally this affected 2-3 frames and seemed to be related to the buffer fill level after signal recovery, so drop at least 5 frames and up to fill level + 1 frames in this situation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7106> 2024-06-27 09:30:27 +0300 Sebastian Dröge <sebastian@centricular.com> * sys/aja/gstajasrc.cpp: ajasrc: Reset clock after signal loss or signal change Otherwise timestamps would continue as if there was no gap, and the next frames until the clock has compensated would be all too late. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7106> 2024-06-27 15:32:01 -0400 Thibault Saunier <tsaunier@igalia.com> * gst-libs/gst/analytics/meson.build: * gst-libs/gst/mse/meson.build: meson: Remove duplicated library definitions for gstmse and gstanalytics Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7109> 2024-06-28 02:33:03 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12commandallocatorpool.cpp: * gst-libs/gst/d3d12/gstd3d12commandallocatorpool.h: d3d12commandallocatorpool: Remove unused methods Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7108> 2024-06-27 22:58:12 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12decodercpbpool.cpp: * sys/d3d12/gstd3d12decodercpbpool.h: * sys/d3d12/meson.build: d3d12decoder: Use sub-allocated bitstream buffer Since a buffer resource will occupy at least 64KB, allocating upload resource per decoding command might not be an optimal approach. Instead, use sub-region of a upload resource for multiple decoding command if sub-regions are not overlapped each other. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7108> 2024-06-26 16:09:26 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * gst/rtmp2/rtmp/amf.c: rtmp2: guard against calling gst_amf_node_get_type() with NULL gst_amf_node_get_type() raises a CRITICAL if called with a NULL node. All callers were checking for this except those. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7103> 2020-04-08 10:40:42 -0400 Xavier Claessens <xavier.claessens@collabora.com> * meson.build: * meson_options.txt: build: Add missing common options that are yielding in subprojects - Align `glib_debug`, `glib_assert` and `glib_checks` options with GLib, otherwise glib subproject won't inherit their value. Previous names and values are preserved using Meson's deprecation mechanism. - Add `extra-checks` and `benchmarks` options in the main project so it can be inherited in GStreamer subprojects. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1165> 2024-05-13 18:52:28 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: vaav1enc: Move repeat header data to a dedicated buffer When enable parallel encoding, it is possible that the unshown frame is not output but it is already be marked as a repeated frame header. So we need to use a dedicated buffer to hold the repeat frame header, don't mix it with the orignal frame data. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6867> 2024-06-25 20:08:54 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d11/gstd3d11device-private.h: * gst-libs/gst/d3d11/gstd3d11device.cpp: * gst-libs/gst/d3d11/meson.build: * sys/qsv/plugin.cpp: qsv: Check d3d shared resource tier using D3D11 API We can check the tier using d3d11 API. Thus, don't need to create d3d12 device Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7099> 2024-06-02 11:40:04 +0300 Jan Schmidt <jan@centricular.com> * ext/hls/m3u8.c: adaptivedemux: Fix handling closed caption streams Fix a typo "CLOSED_CAPTION" -> "CLOSED-CAPTION" and a broken if statement that always bailed out for closed captions Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6985> 2024-06-25 22:19:26 +1000 Jan Schmidt <jan@centricular.com> * ext/webrtcdsp/gstwebrtcdsp.cpp: webrtcdsp: Enable multi_channel processing Enable multi_channel processing in webrtc-audio-processing when the input or output has multiple channels. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3220 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7100> 2024-06-24 16:00:45 +0200 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/vtenc.c: vtenc: Fix redistribute latency spam Just a quick fix to only report the maximum noticed delay (measured by frames inside the encoder) instead of changing the reported latency every time the number there changes, which is way too often. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7094> 2024-06-24 20:49:19 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter-unpack.cpp: d3d12converter: Make sure data upload before executing compute shader Use read d3d12 map, so that upload can happen if needed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093> 2024-06-24 20:07:37 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12format.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: d3d12: Add ARGB64_LE format support Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093> 2024-06-24 17:53:24 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12bufferpool.cpp: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12format.cpp: * gst-libs/gst/d3dshader/converter-hlsl/PSMain_converter.hlsl: * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: d3d12: Add AV12 format support Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093> 2024-06-24 01:41:03 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12format.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: d3d12: Add NV16, NV61, and NV24 format support Can reuse NV12 shader for the formats Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093> 2024-06-24 00:29:23 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3dshader/converter-hlsl/PSMain_converter.hlsl: * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: d3d12: Add A420, A422 and A444 format support Adding A420/A422/A444 and its 10/12/16 bits format support Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093> 2024-06-23 23:05:20 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12bufferpool.cpp: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: d3d12: Add YUV 4:1:0 and 4:1:1 format support Adding Y41B, YUV9, and YVU9 format support Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7093> 2024-06-21 18:38:04 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12videosink.cpp: * sys/d3d12/gstd3d12window-swapchain.cpp: * sys/d3d12/gstd3d12window-swapchain.h: * sys/d3d12/gstd3d12window-win32.cpp: * sys/d3d12/gstd3d12window-win32.h: * sys/d3d12/gstd3d12window.cpp: * sys/d3d12/gstd3d12window.h: d3d12videosink: Present on GstVideoOverlay::expose() ... so that updated backbuffer can be swapped and presented Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7079> 2024-06-23 22:16:36 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12converter-pack.cpp: * gst-libs/gst/d3d12/gstd3d12converter-unpack.cpp: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12format.cpp: d3d12: Add v216, v210, r210, v308, IYU2, RGB, BGR format support Reuse the compute shader implemented for d3d11 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7092> 2024-06-23 22:14:23 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12converter-pack.cpp: * gst-libs/gst/d3d12/gstd3d12converter-unpack.cpp: d3d12: Add support for UYVY, VYUY, and YVYU Use already implemented compute shaders Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7092> 2024-06-23 22:13:32 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12converter-pack.cpp: * gst-libs/gst/d3d12/gstd3d12converter-unpack.cpp: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3dshader/converter-hlsl/PSMain_converter.hlsl: * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: d3d12: Add RGB{16,15} and BGR{16,15} format support d3d12 device can support B5G6R5_UNORM and B5G5R5A1_UNORM formats in pixel shader. If the format is not supported by device, U16_UINT format with compute shader will be used, like d3d11converter Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7092> 2024-06-23 22:00:40 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12converter-pack.cpp: * gst-libs/gst/d3d12/gstd3d12format.cpp: d3d12: Add BGRA64 and BGR10A2 format support Map BGRA64 and BGR10A2 to Y416 and Y410, respectively, since it's possible RGB space decoder output Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7092> 2024-06-23 02:01:50 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12converter-pack.cpp: * gst-libs/gst/d3d12/gstd3d12converter-unpack.cpp: * gst-libs/gst/d3d12/gstd3d12converter-unpack.h: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/meson.build: d3d12: Add support for DXGI native packed YUV formats Adding YUY2, Y210, Y216, and Y416 format support Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7092> 2024-06-23 00:34:53 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter-pack.cpp: * gst-libs/gst/d3d12/gstd3d12converter-pack.h: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/meson.build: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12testsrc.cpp: d3d12converter: Fix Y410 conversion Adding format conversion helper and use compute shader in case that output format does not support RTV. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7088> 2024-06-23 01:18:54 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12frame.cpp: * gst-libs/gst/d3d12/gstd3d12frame.h: * gst-libs/gst/d3d12/gstd3d12memory.cpp: * gst-libs/gst/d3d12/gstd3d12memory.h: d3d12memory: Add support for UAV descriptor cache Cache shader invisible UAV descriptor in memory Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7088> 2024-06-22 01:36:43 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12format-private.h: * gst-libs/gst/d3d12/gstd3d12format.cpp: * gst-libs/gst/d3d12/gstd3d12format.h: d3d12: Format table refactoring Hide format table from header. This is a preparation for compute shader based format support Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7088> 2024-06-21 00:06:12 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: d3d12converter: Upload shader buffer resources earlier Schedule (semi-)static resource upload at converter creation time. And use single resource for all vertex, index, and constant buffers, since separate resources will waste GPU memory. Note that size and address of a committed resource are 64K aligned even if requested buffer size is small. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7081> 2024-06-20 22:18:02 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: d3d12converter: Make gamma remap work as intended Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7073> 2024-06-20 20:44:56 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device.cpp: d3d12device: Don't warn for out of range device index It can happen during enumeration as well, and it's expected error Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7070> 2024-06-20 20:34:33 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device.cpp: d3d12device: Dump device feature support ... and use CD3DX12FeatureSupport helper class in d3dx12.h Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7070> 2024-06-20 00:09:16 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device.cpp: d3d12device: Prevent too many in-flight GPU commands Even if each element is checking its own in-flight commands, total number of commands can get larger in case of complex pipeline. Limits total number of in-flight commands at command queue level Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7066> 2024-06-20 00:07:41 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12commandqueue.cpp: d3d12commandqueue: Detect device removed event Early return if device removed event is detected Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7066> 2024-06-19 23:29:11 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12basefilter.cpp: * sys/d3d12/gstd3d12basefilter.h: d3d12basefilter: Add adapter property Allows initial GPU adapter selection Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7066> 2024-06-19 22:12:15 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12utils.cpp: * gst-libs/gst/d3d12/gstd3d12utils.h: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12ipcclient.cpp: * sys/d3d12/gstd3d12pluginutils.cpp: * sys/d3d12/gstd3d12pluginutils.h: * sys/d3d12/gstd3d12testsrc.cpp: d3d12: Move fence setter helper method to gst-libs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057> 2024-06-19 19:06:42 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12converter.h: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12window-swapchain.cpp: * sys/d3d12/gstd3d12window.cpp: * sys/dwrite/gstdwriterender_d3d12.cpp: d3d12converter: Update API signature Always use device's main direct queue, and control gpu waiting behavior by using boolean value Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057> 2024-06-19 01:00:28 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12converter.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12frame.cpp: * gst-libs/gst/d3d12/gstd3d12frame.h: * gst-libs/gst/d3d12/gstd3d12memory.cpp: * gst-libs/gst/d3d12/gstd3d12memory.h: * gst-libs/gst/d3d12/gstd3d12utils.cpp: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12graphicscapture.cpp: * sys/d3d12/gstd3d12ipcclient.cpp: * sys/d3d12/gstd3d12ipcserver.cpp: * sys/d3d12/gstd3d12pluginutils.cpp: * sys/d3d12/gstd3d12pluginutils.h: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12window.cpp: * sys/dwrite/gstdwriterender_d3d12.cpp: * sys/webview2/gstwebview2src.cpp: d3d12memory: Hide fence value from header Instead of exposing fence value to wait in header, user setter/getter methods. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057> 2024-06-19 00:57:11 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12device.h: * gst-libs/gst/d3d12/gstd3d12memory.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12ipcsink.cpp: d3d12device: Add helper method for getting fence handle Add get_fence_handle() method so that caller can get command queue's dedicated fence handle from device Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057> 2024-06-18 22:59:17 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12device.h: * gst-libs/gst/d3d12/gstd3d12fencedatapool.cpp: * gst-libs/gst/d3d12/gstd3d12fencedatapool.h: * gst-libs/gst/d3d12/gstd3d12frame.cpp: * gst-libs/gst/d3d12/gstd3d12memory.cpp: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12overlaycompositor.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12window.cpp: * sys/dwrite/gstdwriterender_d3d12.cpp: d3d12: Remove notify_com and notify_mini_object helper methods Use private macros instead of exposing multiple APIs for the same thing Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057> 2024-06-18 22:04:23 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12commandqueue.cpp: * gst-libs/gst/d3d12/gstd3d12commandqueue.h: * gst-libs/gst/d3d12/gstd3d12device-private.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12frame.cpp: * gst-libs/gst/d3d12/gstd3d12memory.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12ipcclient.cpp: * sys/dwrite/gstdwriterender_d3d12.cpp: d3d12commandqueue: Update API name and arguments Accepts multiple fences since single command list may have multiple dependent resources which are associated with different GPU engines Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057> 2024-06-18 21:48:11 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12device.h: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/dwrite/gstdwriterender_d3d12.cpp: d3d12device: Use HRESULT return code if possible Make function signature consistent with that of command queue Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7057> 2024-05-28 09:55:05 +0200 Stéphane Cerveau <scerveau@igalia.com> * ext/vulkan/vkh264dec.c: * ext/vulkan/vkh265dec.c: * gst-libs/gst/vulkan/gstvkdecoder-private.c: vkdecoder: support layered and non dedicated DPB As NVIDIA Amperium. In this case the each output buffer is also a DPB, but using a different view layer. Still pending a validation layer issue: VUID-VkVideoBeginCodingInfoKHR-flags-07244 Co-authored-by: Victor Jaquez <vjaquez@igalia.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6954> 2024-06-17 15:38:05 -0400 Daniel Morin <daniel.morin@collabora.com> * gst-libs/gst/analytics/gstanalyticsclassificationmtd.c: analytics: Add validation on classification analytics-meta - Add valiation on parameters passed to gst_analytics_cls_add_cls_mtd. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7046> 2024-06-18 09:10:16 +0200 Edward Hervey <edward@centricular.com> * gst/mpegtsdemux/mpegtspacketizer.c: tsdemux: Fix maximum PCR/DTS values * PTS/DTS are stored as 33 bit * PCR is 33bit multiplied by 300 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7050> 2024-06-18 00:33:37 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12pluginutils.cpp: * sys/d3d12/gstd3d12pluginutils.h: * sys/d3d12/plugin.cpp: d3d12: Promote decoder and videosink rank to primary It's proven that d3d12 performs better than d3d11 while consumes less resources in various cases. Assign primary+ rank to decoder and videosink in case of Windows10/11, so that it can be tested widely Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7045> 2024-03-22 12:32:22 +0100 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkoperation.c: vkoperation: support for query_result_status query_result_status can be optional so we should not create the query pool if the queue does not support it, ie, AMD does not support VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR In other use case such as VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR, the query pool must be created. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7043> 2024-06-17 14:55:03 +0200 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkoperation.c: * gst-libs/gst/vulkan/gstvkphysicaldevice.c: * gst-libs/gst/vulkan/gstvkphysicaldevice.h: vkphysicaldevice: rename query to query_result_status As only queryResultStatusSupport can be optional, the variable name should be more specific. queryResultStatusSupport reports VK_TRUE if query type VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR and use of VK_QUERY_RESULT_WITH_STATUS_BIT_KHR are supported. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7043> 2024-06-18 05:53:19 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/codecparsers/gstav1parser.c: av1parse: Do not return error when expectedFrameId mismatch According to the SPEC: The frame id numbers (represented in display_frame_id, current_frame_id, and RefFrameId[ i ]) are not needed by the decoding process, but allow decoders to spot when frames have been missed and take an appropriate action. So we should just print out warning and should not return error in parser when mismatching. The decoder itself is already robust to handle the reference missing. Fixes #3622 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7047> 2024-06-16 21:21:44 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12videosink.cpp: * sys/d3d12/gstd3d12window-swapchain.cpp: * sys/d3d12/gstd3d12window-win32.cpp: * sys/d3d12/gstd3d12window-win32.h: * sys/d3d12/gstd3d12window.cpp: * sys/d3d12/gstd3d12window.h: d3d12videosink: Add direct-swapchain property Because DXGI flip mode swapchain will disallow GDI operation to a HWND once swapchain is configured, videosink has been creating child window of application's window. However, since window creation would take a few milliseconds, it can cause performance issue such as UI freezing. Adding a property so that videosink can attach DXGI swapchain diretly to application's window in order to improve performance. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7013> 2024-06-13 01:34:08 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12videosink.cpp: d3d12videosink: Add external-window-only property Adding a new property in order to avoid unintended interanl window creation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7013> 2024-06-10 23:40:55 +0900 Seungha Yang <seungha@centricular.com> d3d12videosink: Add support for window handle update A large refactoring commit for adding features and improve performance * Reuse internal converter and overlay compositor: Converter can be reused as long as input and display formats are not changed. Also overlay compositor reconstruction is required only if display format is changed * Don't wait for full GPU flush on resize or close: D3D12 swapchain requires GPU idle in order to resize backbuffer. Thus CPU side waiting is required for swapchain related commands to be finished. However, don't need to wait for full GPU flushing. * Support multiple sink on a single external window Keep installed subclass window procedure even if there's no associated our internal HWND. This will make window procedure hooking less racy. Then parent HWND's message will be transferred to our internal HWNDs if needed. * Adding support for window handle update Application can change target HWND even when videosink is playing or paused state. So, users can call gst_video_overlay_set_window_handle() against d3d12videosink anytime. The videosink will be able to update internal state and setup resource upon requested. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7013> 2024-06-10 23:38:39 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12overlaycompositor.cpp: * sys/d3d12/gstd3d12overlaycompositor.h: * sys/d3d12/gstd3d12window.cpp: d3d12overlaycompositor: Remove unused parameter Don't need to check fence value of overlay buffer since window uses global direct command queue Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7013> 2024-06-03 21:53:40 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12videosink.cpp: d3d12videosink: Calculate display resolution only per caps change Don't need to calculate it per window property update Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7013> 2024-06-05 00:20:05 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12commandqueue.cpp: d3d12commandqueue: Fix deadlock on drain() Don't take lock if the drain() is called from the GC thread Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7013> 2024-06-12 01:02:39 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12commandqueue.cpp: * gst-libs/gst/d3d12/gstd3d12device-private.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: * sys/d3d12/gstd3d12decoder.cpp: d3d12: Workaround for Intel iGPU decoder crash Observed Intel GPU driver crash when multiple decoders are configured in a process. It might be because of frequent command queue alloc/free or too many in-flight decoding commands. In order to make command queue persistent and limit the number of in-flight command lists, holds global decoding command queue. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7019> 2024-06-12 18:28:54 +0200 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/vtdec.c: vtdec: Use GST_VIDEO_DECODER_ERROR instead of aborting when frame has an ERROR flag This was already being used in handle_frame() for errors that happen when queueing a frame for decoding, let's do the same when a frame is flagged with an error in the output callback. From quick testing, this makes seeking more reliable (previously, it would sometimes cause a decoding error and shut the whole decoder down due to GST_FLOW_ERROR). Also manually sets the max error count to actually stop processing if too many errors occur. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6446> 2024-03-26 15:24:31 +0100 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/vtdec.c: vtdec: Handle some errors without stopping the decoder ReferenceMissingErr is not critical and the simplest solution is to just ignore it. The frame has the FrameDropped flag set when it occurs, so we can just drop it as usual. BadDataErr is also not immediately critical, but in its case let's set the ERROR flag, so the output loop can use GST_VIDEO_DECODER_ERROR to count and error out if it happens too many times. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6446> 2024-06-17 11:15:22 +0300 Sebastian Dröge <sebastian@centricular.com> * ext/aom/gstav1dec.c: av1dec: Don't treat decoding errors as fatal and print more error details Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7040> 2024-06-11 23:33:49 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/meson.build: d3d12: Add support for DXGI debug layer Will be enabled if GST_ENABLE_D3D12_DXGI_DEBUG env is set and dxgidebug.dll is available. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7016> 2024-06-13 09:11:30 -0500 Zach van Rijn <me@zv.io> * gst/pcapparse/gstpcapparse.c: pcapparse: Avoid unaligned memory access Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3602 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7030> 2024-05-21 01:20:59 +0900 Seungha Yang <seungha@centricular.com> * ext/meson.build: * ext/nvcomp/gstnvcomp.cpp: * ext/nvcomp/gstnvcomp.h: * ext/nvcomp/gstnvcompvideodec.cpp: * ext/nvcomp/gstnvcompvideodec.h: * ext/nvcomp/gstnvcompvideoenc.cpp: * ext/nvcomp/gstnvcompvideoenc.h: * ext/nvcomp/meson.build: * ext/nvcomp/plugin.cpp: * ext/nvcomp/stub/cuda_runtime.h: * meson_options.txt: nvcomp: Add nvCOMP library based GPU lossless compression plugin Adding NVIDIA nvCOMP library based plugin for lossless raw video compression/decompression. To build this plugin, user should install nvCOMP SDK first and specify the SDK path via "nvcomp-sdk-path" build option or NVCOMP_SDK_PATH env. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6912> 2024-05-21 18:09:12 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/cuda-gst.h: * gst-libs/gst/cuda/gstcudaloader.cpp: * gst-libs/gst/cuda/stub/cuda.h: cuda: Load 1D memcpy method symbols Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6912> 2024-05-31 13:07:51 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/codectimestamper/gstcodectimestamper.c: codectimestamper: never set DTS to NONE If we want to avoid the DTS going backward, then we can set DTS to last_dts as a last resort. Log a warning in this case Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6977> 2024-06-07 23:09:54 -0700 Khem Raj <raj.khem@gmail.com> * sys/uvcgadget/configfs.c: uvcgadget: Use g_path_get_basename instead of libc basename Musl does not implement GNU basename and have fixed a bug where the prototype was leaked into string.h [1], which resullts in compile errors with GCC-14 and Clang-17+ | sys/uvcgadget/configfs.c:262:21: error: call to undeclared function 'basename' ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] | 262 | const char *v = basename (globbuf.gl_pathv[i]); | | ^ Use glib function instead makes it portable across musl and glibc on linux [1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7a Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7006> 2024-06-12 23:15:29 +1000 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkswapper.c: vulkan/swapper: expose choose_queue() in docs It was missing a doc trigraph. Also mark input queue argument as nullable. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7023> 2024-06-10 13:11:19 +0300 Sebastian Dröge <sebastian@centricular.com> * ext/aom/gstav1enc.c: av1enc: Handle force-keyunit events properly by requesting keyframes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7008> 2024-06-05 22:09:56 +0900 Seungha Yang <seungha@centricular.com> * sys/wasapi2/gstwasapi2client.cpp: wasapi2: Adjust log level in device enumeration path Audio device at requested index might not be available, but that's expected case when enumerating devices. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6996> 2024-05-29 11:07:23 +0800 Mengkejiergeli Ba <mengkejiergeli.ba@intel.com> * sys/msdk/gstmsdkvpp.c: msdkvpp: Add a huge value to inbuf pts and set mfx surface timestamp It can be seen as a WA in the case of multi-channel transcoding (like decoder output to two channels, one for encoder and one for vpp). Normally, encoder sets min pts of a huge value to avoid negative dts, while vpp set pts without this addtional huge value, which are likely to cause input surface pts does not fit with encoder (since both encoder and vpp accept the same buffer from decoder, means they modify the timestamp of one mfx surface). So we add this huge value to vpp to ensure enc and vpp set the same value to input mfx surface meanwhile does not break encoder's setting min pts for dts protection. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6971> 2024-06-10 23:25:46 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12videosink.cpp: d3d12videosink: Disconnect window signal handler on dispose as intended Fixing typo Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7012> 2024-05-28 19:23:33 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12videosink.cpp: * sys/d3d12/gstd3d12window.cpp: d3d12videosink: Add error-on-closed property Adding a property to control error reporting behavior when output window is closed in playing or paused state. This can be useful for apps where an app wants to close window even if it's playing a stream, and the closed window is expected. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6939> 2024-04-23 21:57:57 +0200 Stéphane Cerveau <scerveau@gmail.com> * gst-libs/gst/vulkan/meson.build: vulkan: fix macos build The VulkanSDK can be downloaded from LunarG website and can be installed properly in /usr/local following: https://vulkan.lunarg.com/doc/view/latest/mac/getting_started.html Fixes partly #2372 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6669> 2024-06-06 19:34:03 +1000 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkfullscreenquad.c: vulkan/fullscreenquad: add check for unset video info So we don't crash when set_info() is not called. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7000> 2024-06-06 17:16:30 +1000 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkfullscreenquad.c: vulkan/fullscreenquad: allow setting NULL input/output buffer to unset Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7000> 2024-06-01 02:32:22 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/gstcudanvmm-private.h: * gst-libs/gst/cuda/gstcudanvmm.cpp: * gst-libs/gst/cuda/gstcudautils.cpp: * gst-libs/gst/cuda/meson.build: * meson_options.txt: * sys/nvcodec/gstcudamemorycopy.c: * sys/nvcodec/meson.build: * sys/nvcodec/plugin.c: cuda: Enable x86 NVMM support again It was broken since memory copy helper function was moved to gst-libs. Also, adding "cuda-nvmm" and "cuda-nvmm-include-path" build options to en/disable NVMM support in gstcuda library Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6978> 2024-05-15 02:29:12 +0900 Seungha Yang <seungha@centricular.com> * tests/examples/cuda/cudamemory-sync.c: * tests/examples/cuda/meson.build: * tests/examples/meson.build: examples: cuda: Add CUDA memory synchronization example Add an example code for external CUDA context sharing and gst_cuda_memory_sync() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6864> 2024-06-06 12:13:05 +0200 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkdevice.c: * gst-libs/gst/vulkan/meson.build: vulkan: remove remaining GST_VULKAN_HAVE_VIDEO_ENCODERS Some define use have been forgotten in https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6992 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7001> 2024-05-17 14:12:23 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/mxf/mxftypes.c: mxf: Use GDateTime instead of gmtime() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6872> 2024-06-04 10:10:07 +0200 Stéphane Cerveau <scerveau@igalia.com> * tests/check/libs/vkvideoencodeh264.c: * tests/check/libs/vkvideoencodeh265.c: * tests/check/meson.build: gst-plugins-bad: tests: rename vkvideoencode tests Rename vulkan encode tests to be able to use the namespace libs_vkvideoencode*. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6992> 2024-06-04 09:55:26 +0200 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkconfig.h.meson: * gst-libs/gst/vulkan/gstvkdevice.c: * gst-libs/gst/vulkan/gstvkimagebufferpool.c: * gst-libs/gst/vulkan/gstvkoperation.c: * gst-libs/gst/vulkan/gstvkvideo-private.c: * gst-libs/gst/vulkan/gstvkvideo-private.h: * gst-libs/gst/vulkan/gstvkvideoutils.c: * gst-libs/gst/vulkan/gstvkvideoutils.h: * gst-libs/gst/vulkan/meson.build: * tests/check/libs/vkvideoh264encode.c: * tests/check/libs/vkvideoh265encode.c: * tests/check/meson.build: vulkan: remove GST_VULKAN_HAVE_VIDEO_ENCODERS Use 2.3.275 as first supported SDK version Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6992> 2024-06-04 09:34:42 +0200 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkqueue.c: vkqueue: remove useless decoder include Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6992> 2024-02-14 09:43:35 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/autoconvert/gstbaseautoconvert.c: autoconvert: Fix race condition when creating sub elements There was a case where the element would get destroyed while being added to the hash table of elements Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6989> 2024-06-02 10:26:19 +0300 Sebastian Dröge <sebastian@centricular.com> * ext/dtls/gstdtlssrtpenc.c: dtlssrtpenc: Don't crash if no pad name is provided when requesting a new pad It is mandatory to provide a valid pad name for dtlssrtpenc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6984> 2024-06-02 23:36:28 +1000 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkvideofilter.c: * gst-libs/gst/vulkan/gstvkvideofilter.h: vulkan/videofilter: add getters for queue/device/instance Allows bindings to not pke at structs for this information. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6987> 2024-06-02 23:34:39 +1000 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkfullscreenquad.c: * gst-libs/gst/vulkan/gstvkfullscreenquad.h: vulkan/fullscreenquad: add get_queue() Allows bindings to not poke at the instance struct. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6987> 2024-06-02 23:33:13 +1000 Matthew Waters <matthew@centricular.com> * gst-libs/gst/vulkan/gstvkfullscreenquad.c: * gst-libs/gst/vulkan/gstvkfullscreenquad.h: vulkan/fullscreenquad: mark set_info GstVideoInfo as const It's not modified by the function. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6987> 2024-06-01 22:38:11 +1000 Matthew Waters <matthew@centricular.com> * ext/vulkan/meson.build: * ext/vulkan/shaders/ayuv_to_rgb.frag: * ext/vulkan/shaders/meson.build: * ext/vulkan/shaders/nv12_to_rgb.frag: * ext/vulkan/shaders/rgb_to_ayuv.frag: * ext/vulkan/shaders/rgb_to_nv12.frag: * ext/vulkan/shaders/rgb_to_yuy2.frag: * ext/vulkan/shaders/swizzle.frag: * ext/vulkan/shaders/swizzle_and_clobber_alpha.frag: * ext/vulkan/shaders/view_convert.frag: * ext/vulkan/shaders/yuy2_to_rgb.frag: vulkan: also support glslang as a shader compiler Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6980> 2024-06-01 21:35:26 +1000 Matthew Waters <matthew@centricular.com> * ext/vulkan/gstvulkan.c: * ext/vulkan/meson.build: * gst-libs/gst/vulkan/meson.build: vulkan: support not having glslc available for building vulkan plugin Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6980> 2024-05-31 12:28:40 +0200 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkutils.c: vkutils: do not forget to clear context in case of error The context is leaking in case of a failing instance open. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6975> 2024-05-31 12:27:30 +0200 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkerror.c: vkerror: free the error string after usage g_set_error already used the var string, can clear it now. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6975> 2024-05-30 01:30:58 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12bufferpool.cpp: * gst-libs/gst/d3d12/gstd3d12memory.cpp: d3d12memory: Fix staging buffer alignment Not all GPUs can support arbitrary offset of D3D12_PLACED_SUBRESOURCE_FOOTPRINT when copying GPU memory between texture and buffer. Instead of calculating size/offset per plane, calculate the entire size and offsets at once. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6967> 2024-05-28 04:14:15 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/va/meson.build: * meson.build: * sys/msdk/gstmsdkallocator_libva.c: * sys/msdk/gstmsdkcaps.c: * sys/msdk/gstmsdkdec.c: * sys/msdk/gstmsdkenc.c: * sys/msdk/gstmsdkvpp.c: * sys/msdk/gstmsdkvpputil.c: * sys/msdk/meson.build: msdk: Fix libdrm dependency detection and usage drm_fourcc.h should be picked up via the pkgconfig include, not the system includedir directly. Also consolidate the libdrm usage in va and msdk. All this allows it to be picked up consistently (via the subproject, for example). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6932> 2024-05-27 18:50:23 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/va/meson.build: meson: Don't use fallback: kwarg for libva deps This will cause a fallback even when the `va` option is `auto`, not giving the user a chance to provide the dependency via the system, and likely building this feature unnecessarily. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6932> 2024-05-27 18:43:33 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst-libs/gst/va/gstvavideoformat.h: va: Fix libdrm include The libdrm/ prefix should not be used, it will be provided by the pkgconfig file. Also HAVE_LIBDRM is necessary. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6932> 2024-05-15 12:48:43 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/msdk/gstmsdkcaps.c: msdkcaps: fix ill-format string This patch fixes this critical warning when registering MSDK: _dma_fmt_to_dma_drm_fmts: assertion 'fmt != GST_VIDEO_FORMAT_UNKNOWN' failed It was because the HEVC string with possible output formats has an extra space that could not be parsed correctly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6853> 2024-05-29 18:54:18 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12h264enc.cpp: d3d12encoder: Do not print error log for not-supported feature gst_d3d12_result() will print message with ERROR level if failed. Use FAILED/SUCCEEDED macros instead, since not-supported feature is not a critical error Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6955> 2024-04-22 17:04:09 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12memory.cpp: d3d12memory: Allow null allocator in alloc() Update code as documented Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6940> 2024-05-21 17:25:10 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/videoparsers/gstav1parse.c: av1parse: Properly transfer TU timestamp When transforming from unknown alignment to frame or obu, the TU timestamp was not properly transferred. Fix this by saving the TU DTS as the first DTS seen within the the TU data, and the PTS as the last PTS seen in that TU data. Finally, reset the TU timestamp after each TU have completed. Fixes #1496 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6895> 2024-05-21 17:22:47 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/videoparsers/gstav1parse.c: av1parse: Only place a marker on the last frame of a TU Markers are meant to indicate the buffer that ends a frame, which imply something can be displayed. The dependent decode only frames should not have markers. This should also fix last subframe detection. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6895> 2024-05-25 16:58:17 +0900 Seungha Yang <seungha@centricular.com> * sys/webview2/gstwebview2object.cpp: * sys/webview2/gstwebview2object.h: * sys/webview2/gstwebview2src.cpp: webview2: Add user-data-folder property Adding a propery to specify location of WebView2's user data folder location. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6921> 2024-04-22 01:15:51 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device.cpp: d3d12: Add support for Device Removed Extended Data (DRED) Enable DRED if "d3d12dred > GST_LEVEL_ERROR", and print DRED debug information on device removed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6718> 2024-04-16 20:37:23 +0200 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/vtenc.c: * sys/applemedia/vtenc.h: vtenc: Enable HEVC with alpha encoding Adds a separate vtenc_h265a element (with a _hw variant as usual) for the HEVCWithAlpha codec type. Decided to go with a separate element to not break existing uses of the normal HEVC encoder. The preserve_alpha property is still only used for ProRes, no need for it here because we explicitly say we want alpha when using the new element. For now, the HEVCWithAlpha has an issue where it does not throttle the amount of input frames queued internally. I added a quick workaround where encode_frame() will block until enqueue_frame() callback notifies it that some space has been freed up in the internal queue. The limit was set to 5, which should be enough I guess? Hopefully this is not too prone to race conditions. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6664> 2024-03-26 18:48:17 +0100 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/vtenc.c: vtenc: Add missing vtenc_h265 docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6664> 2024-05-27 15:41:23 +0900 Elliot Chen <elliot.chen@nxp.com> * gst/autoconvert/gstbaseautoconvert.c: autovideoconvert: should not forward the allocation query if no element is selected Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6927> 2024-05-27 12:28:44 +0100 Philippe Normand <philn@igalia.com> * ext/webrtc/gstwebrtcbin.c: * ext/webrtc/webrtcsdp.c: * ext/webrtc/webrtcsdp.h: * tests/check/elements/webrtcbin.c: webrtcbin: Allow session level setup attribute in SDP An SDP answer can declare its setup attribute at the session level or at the media level. Until this patch we were validating only the latter case and an assert was raised in the former case. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6930> 2024-05-22 14:54:56 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkh264dec.c: vulkanh264dec: code style fix Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6901> 2024-05-22 14:50:11 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkh265dec.c: vulkanh265dec: fix reference set `StdVideoDecodeH265PictureInfo.flags.IsReference` refers to section 3.132 ITU-T H.265 specification: reference picture: A picture that is a short-term reference picture or a long-term reference picture. `GstH265Picture.ref` doesn't reflect this, but we need to query the NAL type of the processed slice. This patch fixes the validation layer error `VUID-vkCmdBeginVideoCodingKHR-slotIndex-07239` while using the NVIDIA driver. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6901> 2024-05-10 22:59:15 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12videosink.cpp: * sys/d3d12/gstd3d12window.cpp: * sys/d3d12/gstd3d12window.h: * sys/d3d12/meson.build: * tests/examples/d3d12/d3d12videosink-overlay.cpp: * tests/examples/d3d12/meson.build: d3d12videosink: Add overlay signal to support d3d12/d3d11/d2d overlay Conceptually identical to the present signal of d3d11videosink. This signal will be emitted with current render target (i.e., swapchain backbuffer) and command queue. Signal handler can record GPU commands for an overlay image or to blend an image to the render target. In addition to d3d12 resources, videosink will send d3d11 and d2d resources depending on "overlay-mode" property, so that signal handler can render by using preferred/required DirectX API. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6838> 2024-05-10 20:08:49 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12videosink.cpp: * sys/d3d12/gstd3d12window.cpp: * sys/d3d12/gstd3d12window.h: d3d12videosink: Use device's main direct queue The idea of using separate command queue per videosink was that swapchain is bound to a command queue and we need to flush the command queue when window size is changed. But the separate queue does not seem to improve performance a lot. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6838> 2024-05-17 11:13:19 +0300 Sebastian Dröge <sebastian@centricular.com> * ext/dtls/gstdtlsconnection.c: dtlsconnection: Fix overflow in timeout calculation on systems with 32 bit time_t If a timeout of more than 4295s was scheduled, the calculation would overflow and a too short timeout would be used instead. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6870> 2023-08-11 17:50:23 +0800 He Junyan <junyan.he@intel.com> * sys/kms/gstkmsallocator.c: kmssink: Do not close the DRM prime handle twice The prime_fds for multi planes may be the same. For example, on Intel's platform, the NV12 surface may have the same FD for the plane0 and the plane1. Then, the DRM_IOCTL_GEM_CLOSE will close the same handle twice and get an "Invalid argument 22" error the second time. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6914> 2024-04-17 12:19:03 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkformat.c: * tests/check/libs/vkformat.c: vkformat: try UNORM format first and decouple them from colorimetry From the spec (chapter 34, v1.3.283): ```` UNORM: the components are unsigned normalized values in the range [0, 1] SRGB: the R, G and B components are unsigned normalized value that represent values using sRGB nonlinear encoding, while the A component (if one exists) is a regular unsigned normalized value ``` The difference is the storage encoding, the first one is aimed for image transfers, while the second is for shaders, mostly in the swapchain stage in the pipeline, and it's done automatically if needed [1]. As far as I have checked, other frameworks (FFmpeg, GTK+), when import or export images from/to Vulkan, use exclusively UNORM formats, while SRGB formats are ignored. My conclusion is that Vulkan formats are related on how bits are stored in memory rather their transfer functions (colorimetry). This patch does two interrelated changes: 1. It swaps certain color format maps to try first, in both gst_vulkan_format_from_video_info() and gst_vulkan_format_from_video_info_2(), the UNORM formats, when comparing its usage, and later check for SRGB. 2. It removes the code that check for colorimetry in gst_vulkan_format_from_video_info_2(), since it not storage related. 1. https://community.khronos.org/t/noob-difference-between-unorm-and-srgb/106132/7 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6797> 2024-05-23 19:10:10 +0900 Seungha Yang <seungha@centricular.com> * tests/check/libs/d3d11device.cpp: * tests/check/meson.build: Revert "tests/d3d11: add concurrency test for gstd3d11device" This reverts commit 8e0046a738070ca3c5441222da241a0582103fe7. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6904> 2024-05-23 17:29:54 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d11/gstd3d11device.cpp: * tests/check/libs/d3d11device.cpp: Revert "d3d11device: protect device_lock vs device_new" This reverts commit 926d5366b99b3498632a45147cfa329dbbf2cc30. AcquireSRWLockExclusive seems to be acquiring lock in exclusive mode when the same lock is combined with write lock access. Reverting the commit because of this is unexpected behavior and unavoidable OS bug. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6904> 2024-05-22 12:28:39 +0100 Daniel Stone <daniels@collabora.com> * gst-libs/gst/wayland/gstwldisplay.c: * gst-libs/gst/wayland/meson.build: wayland: Use wl_display_create_queue_with_name Wayland 1.23 and above allow us to attach names to an event queue, which are printed out when debugging. Do this to make the logs easier to read. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6900> 2024-05-23 00:48:11 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/gstcudamemory.cpp: cudamemory: Fix offset of subsampled planar formats Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6903> 2024-05-21 16:59:10 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/aom/gstav1enc.c: * ext/aom/gstav1enc.h: av1enc: Add timebase property to allow configuring a specific timebase This mirrors the same property in vp8enc / vp9enc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6891> 2024-05-21 16:58:26 +0300 Sebastian Dröge <sebastian@centricular.com> * ext/aom/gstav1enc.c: av1enc: Use 1/90000 as timebase and don't use the framerate at all This mirrors the behaviour in vp8enc / vp9enc and is generally more useful than using any framerate from the caps as it provides some degree of accuracy if the stream doesn't have timestamps perfectly according to the framerate. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6891> 2024-05-21 16:46:40 +0300 Sebastian Dröge <sebastian@centricular.com> * ext/aom/gstav1enc.c: * ext/aom/gstav1enc.h: av1enc: Fix last timestamp tracking so it actually works This behaves exactly the same as in vp8enc / vp9enc now. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3546 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6891> 2024-05-16 20:02:25 +0900 Elliot Chen <elliot.chen@nxp.com> * gst/autoconvert/gstbaseautoconvert.c: autovideoconvert: fix double unref Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6865> 2024-05-03 19:33:08 -0400 Olivier Crête <olivier.crete@collabora.com> * ext/onnx/decoders/gstssdobjectdetector.c: * ext/onnx/decoders/gstssdobjectdetector.h: ssdobjectdetector: Add size threshold to drop too big detections There is a known "failure" mode where the SSD detector finds an object which is the whole frame. So skip objects which are "too big" to avoid this. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6810> 2024-05-17 14:40:52 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: vah26{4,5}enc: No need to assert i>=0 in frame_setup_from_gop() The value is an uint here and never be negative. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6868> 2024-05-15 15:32:43 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: vah26xenc: factorize the encoder frame setup A simple removal of duplicated code. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6854> 2024-05-15 15:56:37 -0500 Brad Reitmeyer <brad.reitmeyer@resi.io> * docs/plugins/gst_plugins_cache.json: * sys/nvcodec/gstnvh264dec.cpp: nvcodec: Accept progressive-high profiles for h264 Videos using progressive-high used to work on 1.16 before the parser added progressive-high. It looks like partial support was added to nvcodec in https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1634 but accidentally ommited gstnvh264dec Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6862> 2024-05-16 14:51:46 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * tests/examples/va/vaenc-dynamic-reconfigure.c: examples: va: add option for enabling alive stream This is useful to test va encoding for live streams which should enable output delay. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4359> 2024-05-16 08:35:30 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: * sys/va/gstvabaseenc.c: * sys/va/gstvabaseenc.h: * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: * sys/va/gstvavp9enc.c: vabaseenc: Set the correct min_buffers for propose_allocation() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4359> 2024-04-04 22:52:23 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: va: av1enc: Set preferred_output_delay value to increase performance Also calculate the correct latency. In live mode, preferred_output_delay is disabled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4359> 2024-04-04 22:43:05 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvavp9enc.c: va: vp9enc: Set preferred_output_delay value to increase performance Also calculate the correct latency. In live mode, preferred_output_delay is disabled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4359> 2024-04-04 22:33:44 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: va: h265enc: Set preferred_output_delay value to increase performance Also calculate the correct latency. In live mode, preferred_output_delay is disabled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4359> 2024-04-04 22:22:04 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: va: h264enc: Set preferred_output_delay value to increase performance Also calculate the correct latency. In live mode, preferred_output_delay is disabled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4359> 2023-04-24 16:56:16 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvabaseenc.c: * sys/va/gstvabaseenc.h: va: baseenc: Add is_live field to check the live stream Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4359> 2024-04-04 21:25:51 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvabaseenc.c: * sys/va/gstvabaseenc.h: va: baseenc: Add a preferred_output_delay field for GPU parallel processing The encoder can specify the a preferred_output_delay value to get better throughput performance. The higher delay may get better HW performance, but it may increases the encoder and pipeline latency. When the output queue length is smaller than preferred_output_delay, the encoder will not block to waiting for the encoding output. It will continue to prepare and send more commands to GPU, which may improve the encoder throughput performance. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4359> 2023-04-06 19:57:29 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvabaseenc.c: va: encoder: Do not continue when push_buffer gets error Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4359> 2024-04-02 22:47:58 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/va/vasurfaceimage.c: va: libs: Use va_check_surface_has_status() to implement va_check_surface() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4359> 2023-04-06 19:39:04 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/va/vasurfaceimage.c: * gst-libs/gst/va/vasurfaceimage.h: va: libs: Add va_check_surface_has_status() helper function Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4359> 2023-04-06 19:33:02 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: * sys/va/gstvabaseenc.h: * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: * sys/va/gstvavp9enc.c: va: encoder: Use GstVaEncFrame as the base object for all Enc Frame Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4359> 2024-05-14 14:44:45 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/mpegtsmux/gstbasetsmux.c: mpegtsmux: Allow pads to have no caps until they receive their first buffer If the muxer times out because of the latency deadline it can happen that some pads have no caps yet. In that case skip creation of streams for these pads and create updated section tables once the first buffer arrives later. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6823> 2024-05-09 17:11:59 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/mpegtsmux/gstbasetsmux.c: mpegtsmux: Correctly time out and mux anyway in live pipelines This makes sure that for sparse streams (KLV, DVB subtitles, ...) the muxer does not wait until the next buffer is available for them but times out on the latency deadline and outputs data. For non-live pipelines it will still be necessary for upstream to correctly produce gap events for sparse streams. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6823> 2024-04-28 18:26:43 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvav1encoder.cpp: * sys/nvcodec/gstnvav1encoder.h: * sys/nvcodec/gstnvencobject.cpp: * sys/nvcodec/gstnvencobject.h: * sys/nvcodec/meson.build: * sys/nvcodec/plugin.c: nvcodec: Add AV1 encoder Adding CUDA mode "nvav1enc", D3D11 mode "nvd3d11av1enc" and auto GPU mode "nvautogpuav1enc" elements Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6754> 2024-04-28 18:35:56 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvh264encoder.cpp: * sys/nvcodec/gstnvh265encoder.cpp: * sys/nvcodec/plugin.c: nvcodec: Rename nvcuda{h264,h265}enc to nv{h264,h265}enc Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6754> 2024-05-12 18:49:09 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvbaseenc.c: * sys/nvcodec/gstnvbaseenc.h: * sys/nvcodec/gstnvenc.c: * sys/nvcodec/gstnvenc.h: * sys/nvcodec/gstnvh264enc.c: * sys/nvcodec/gstnvh264enc.h: * sys/nvcodec/gstnvh265enc.c: * sys/nvcodec/gstnvh265enc.h: * sys/nvcodec/meson.build: * sys/nvcodec/plugin.c: nvcodec: Remove old nvenc implementation Stop shipping deprecated implementation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6754> 2024-04-28 17:39:39 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvenc.c: nvcodec: Bump minimum supported SDK version to 10.0 New preset (i.e., P1 ~ P7) requires SDK 10.0 or newer Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6754> 2024-04-24 01:47:51 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/cuviddec.h: * sys/nvcodec/gstnvenc.c: * sys/nvcodec/gstnvh264encoder.cpp: * sys/nvcodec/gstnvh265encoder.cpp: * sys/nvcodec/nvEncodeAPI.h: * sys/nvcodec/nvcuvid.h: nvcodec: Update SDK header to 12.0.16 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6754> 2024-05-12 21:56:23 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvencoder.cpp: * sys/nvcodec/gstnvencoder.h: * sys/nvcodec/gstnvh264encoder.cpp: * sys/nvcodec/gstnvh265encoder.cpp: nvencoder: Enhance lagacy encoding profile mapping Updated based on the NVENC Preset Migration Guide Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6754> 2024-05-12 18:21:27 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvencoder.cpp: * sys/nvcodec/gstnvencoder.h: * sys/nvcodec/gstnvh264encoder.cpp: * sys/nvcodec/gstnvh265encoder.cpp: nvencoder: Update property names and default value ... to be the same as old NVENC elements Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6754> 2024-04-12 21:48:13 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: vah265enc: Let FORCE_KEYFRAME be IDR frame rather than just I frame The FORCE_KEYFRAME frame which has GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME bit set should be the sync point. So we should let it be an IDR frame to begin a new GOP, rather than just promote it to an I frame. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6619> 2024-04-09 23:40:41 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: vah264enc: Let FORCE_KEYFRAME be IDR frame rather than just I frame The FORCE_KEYFRAME frame which has GST_VIDEO_CODEC_FRAME_FLAG_FORCE_KEYFRAME bit set should be the sync point. So we should let it be an IDR frame to begin a new GOP, rather than just promote it to an I frame. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6619> 2024-04-12 16:09:26 +0800 He Junyan <junyan.he@intel.com> * tests/examples/va/vaenc-dynamic-reconfigure.c: examples: vaenc-dynamic: support force key frame setting Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6619> 2024-05-14 10:54:03 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: * sys/va/gstvabaseenc.c: * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: * sys/va/gstvavp9enc.c: vaenc: Allow to set the max-qp and min-qp for QVBR and ICQ modes In fact, these setting can work well. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6841> 2024-05-14 10:31:05 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: vah26{4,5}enc: Set the qp_p and qp_b to qp_i value in ICQ and QVBR Set the P and B frame qp to I frame value to avoid generating delta QP between different frame types. For ICQ and QVBR modes, we can only set the qpi value, so the qpp and qpb values should be set to the same value as the qpi. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6841> 2024-05-13 21:27:05 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12decoder.cpp: d3d12decoder: Fix SDK debug layer warning Address below message reported by SDK debug layer. ID3D12Device::CheckFeatureSupport: Unsupported Decode Profile Specified. Use ID3D12VideoDevice::CheckFeatureSupport with D3D12_FEATURE_VIDEO_DECODE_PROFILES to retrieve a list of supported profiles Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6839> 2024-05-11 13:29:36 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvavp9enc.c: vavp9enc: Do not use base class video info to calculate coded size We should use our in_info which is an adjusted value to calculate that coded size. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6826> 2024-03-16 19:37:35 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> * gst/dvdspu/gstdvdspu.c: * gst/dvdspu/gstspu-pgs.c: * gst/dvdspu/gstspu-pgs.h: dvdspu: use multiple minimal sized PGS overlay rectangles ... rather than possibly 1 large at full video size Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6413> 2024-05-12 18:15:05 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvh264encoder.cpp: * sys/nvcodec/gstnvh265encoder.cpp: nvencoder: Fix maximum QP value setting Fixing typo Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6827> 2024-05-06 14:55:32 +0300 Sebastian Dröge <sebastian@centricular.com> * meson_options.txt: * sys/aja/gstajasrc.cpp: * sys/aja/meson.build: aja: Update to AJA NTV2 17.0.1 Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3289 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6808> 2024-04-15 13:38:15 +0200 Robert Mader <robert.mader@collabora.com> * sys/v4l2codecs/gstv4l2decoder.c: v4l2codecs: decoder: Reorder caps to prefer DMA_DRM ones Certain V4L2 fourccs don't (yet) have DRM counter parts, in which case we can't create DMA_DRM caps for them. This is usually the case for specific tilings, which are represented as modifiers for DMA formats. While using these tilings is generally preferable - because of e.g. lower memory usage - it can result in additional conversion steps when interacting with DMA based APIs such as GL, Vulkan or KMS. In such cases using a DMA compatible format usually ends up being the better option. Before the addition of DMA_DRM caps, this was what playbin3 ended up requesting in various cases - e.g. prefering NV12 over NV12_4L4 - but the addition of DMA_DRM caps seems to confuse the selection logic. As a simple and quite robust solution, assume that peers supporting DMA_DRM caps always prefer these and reorder the caps accordingly. In the future we plan to have a translation layer for cases where there is a matching fourcc+modifier pair for a V4L2 fourcc, ensuring optimal results. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6645> 2024-05-04 11:56:05 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/play/gstplay.c: * gst-libs/gst/player/gstplayer.c: play: Mention that gst_play_new() also initialized GStreamer Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6801> 2024-05-04 11:54:16 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/play/gstplay.c: * gst-libs/gst/player/gstplayer.c: play: Initialize debug category and error quark in class_init Doing it in gst_play_new() means that bindings that directly call g_object_new() with the GType wouldn't end up initializing both. This affects at least the Python and GJS bindings. gst_init() is nonetheless only called from gst_play_new() once because calling it from class_init would likely lead to problems as that's called from somewhere in the middle of GObject. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6801> 2024-05-07 10:35:26 +0200 Emil Pettersson <khwaaj@gmail.com> * sys/applemedia/vtdec.c: vtdec: Fix deadlock when negotiating format change Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6811> 2024-03-12 14:25:31 +1100 Matthew Waters <matthew@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/closedcaption/gstcccombiner.c: * ext/closedcaption/gstcccombiner.h: cccombiner: add support for timing out captions without EOS Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6335> 2024-05-07 11:18:10 +0200 Piotr BrzeziÅ„ski <piotr@centricular.com> * tests/check/elements/audiovisualizer.c: * tests/check/meson.build: audiovisualizer: Add simple pipeline unit test Creates pipelines with each of our visualizer elements and runs them with 20 buffers from audiotestsrc. Added after a completely broken (segfaulting) synaescope went unnoticed for a while. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6800> 2024-04-29 18:24:36 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/elements/unixfd.c: unixfd: disable flaky test_unixfd_segment for now It's a problem with the test, and a proper fix might require new API, so just disable it for now. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6813> 2024-04-18 17:07:25 +0300 Sebastian Dröge <sebastian@centricular.com> * gst-libs/gst/codecs/gstav1decoder.c: * gst-libs/gst/codecs/gsth264decoder.c: * gst-libs/gst/codecs/gsth265decoder.c: * gst-libs/gst/codecs/gstmpeg2decoder.c: * gst-libs/gst/codecs/gstvp8decoder.c: * gst-libs/gst/codecs/gstvp9decoder.c: * gst-libs/gst/d3d12/gstd3d12fencedatapool.cpp: * gst/codectimestamper/gstcodectimestamper.c: * gst/mpegpsmux/psmuxstream.c: * sys/aja/gstajacommon.cpp: * sys/aja/gstajacommon.h: * sys/aja/gstajasink.cpp: * sys/aja/gstajasink.h: * sys/aja/gstajasrc.cpp: * sys/aja/gstajasrc.h: * sys/applemedia/vtdec.c: * sys/applemedia/vtdec.h: * sys/applemedia/vtenc.c: * sys/applemedia/vtenc.h: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/decklink/gstdecklink.cpp: * sys/decklink/gstdecklinkaudiosrc.cpp: * sys/decklink/gstdecklinkaudiosrc.h: * sys/decklink/gstdecklinkvideosrc.cpp: * sys/decklink/gstdecklinkvideosrc.h: * sys/mediafoundation/gstmfcapturewinrt.cpp: * sys/mediafoundation/gstmfsourcereader.cpp: * sys/v4l2codecs/gstv4l2decoder.c: * sys/va/gstvabaseenc.c: * sys/va/gstvabaseenc.h: gst: Move GstQueueArray as GstVecDeque to core And change lengths and indices from guint to gsize for a more correct type. Also deprecate GstQueueArray and implement it in terms of GstVecDeque. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6779> 2024-05-06 20:50:21 +1000 Matthew Waters <matthew@centricular.com> * ext/webrtc/gstwebrtcbin.c: webrtc: request-aux-sender, only sink floating refs Don't add an extra ref if non-floating as that ref will never be unreffed. gst_bin_add() is transfer floating (alias to transfer none). Fixes a leak when a non-floating ref was provided as a return value in the request-aux-sender signal. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6807> 2024-05-04 19:52:59 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3dshader/converter-hlsl/PSMain_converter.hlsl: d3dshader: Fix gamma and primaries conversion pixel shader Fixing regression introduced by the commit of f52ecb960792257b7394a6dc3182b6747c902b5b Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6802> 2024-04-22 09:48:14 +0200 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkvideo-private.c: * gst-libs/gst/vulkan/gstvkvideo-private.h: * gst-libs/gst/vulkan/gstvkvideoutils.c: * gst-libs/gst/vulkan/gstvkvideoutils.h: * tests/check/libs/vkvideoh265encode.c: * tests/check/meson.build: tests: add vulkan H.265 encode Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6676> 2023-07-10 14:44:05 +0200 Stéphane Cerveau <scerveau@igalia.com> * gst-libs/gst/vulkan/gstvkvideoutils.c: * gst-libs/gst/vulkan/gstvkvideoutils.h: * tests/check/libs/vkcodecparams_h264.c: * tests/check/libs/vkcodecparams_h265.c: * tests/check/libs/vkvideodecode.c: * tests/check/libs/vkvideoh264encode.c: * tests/check/meson.build: tests: add Vulkan H.264 encode Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6676> 2024-02-01 20:43:04 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkconfig.h.meson: * gst-libs/gst/vulkan/gstvkdevice.c: * gst-libs/gst/vulkan/gstvkencoder-private.c: * gst-libs/gst/vulkan/gstvkencoder-private.h: * gst-libs/gst/vulkan/gstvkimagebufferpool.c: * gst-libs/gst/vulkan/gstvkimagebufferpool.h: * gst-libs/gst/vulkan/gstvkoperation.c: * gst-libs/gst/vulkan/gstvkoperation.h: * gst-libs/gst/vulkan/gstvkvideo-private.c: * gst-libs/gst/vulkan/gstvkvideo-private.h: * gst-libs/gst/vulkan/gstvkvideoutils.h: * gst-libs/gst/vulkan/meson.build: * gst-libs/gst/vulkan/vulkan_fwd.h: vkencoder: add gstvkencoder helper object Add a gstvkencoder class to support Vulkan encoder such as H26X formats. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6676> 2024-04-27 01:13:18 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d11/gstd3d11-private.h: * gst-libs/gst/d3d11/gstd3d11converter.cpp: * gst-libs/gst/d3d11/gstd3d11device.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: d3d11: Add support for Y216 and Y416 formats We were mapping Y212 and Y412 formats to DXGI_FORMAT_{Y216,Y416}. Reuse already implemented shaders for the new formats Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6745> 2024-04-27 00:37:52 +0900 Seungha Yang <seungha@centricular.com> * docs/plugins/gst_plugins_cache.json: video: Add Y216 and Y416 formats The same memory layout as Y212 and Y412 formats, respectively Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6745> 2024-05-03 22:57:57 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: vah265enc: Fix a memory leak when destroying the object Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6791> 2024-05-03 12:08:19 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: vah265enc: Use a FIFO queue to generate DTS The base parse will infer the DTS by itself, so we need to make DTS offset before PTS in order to avoid DTS bigger than PTS. We now use a FIFO queue to store all PTS and assign it to DTS by an offset. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6791> 2024-05-02 14:18:16 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvabaseenc.c: * sys/va/gstvabaseenc.h: * sys/va/gstvah264enc.c: vah264enc: Use a FIFO queue to generate DTS The base parse will infer the DTS by itself, so we need to make DTS offset before PTS in order to avoid DTS bigger than PTS. We now use a FIFO queue to store all PTS and assign it to DTS by an offset. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6791> 2024-04-30 16:55:05 +0200 Stéphane Cerveau <scerveau@igalia.com> * ext/vulkan/vkh264dec.c: * ext/vulkan/vkh265dec.c: * gst-libs/gst/vulkan/gstvkdecoder-private.c: vkdecoder: change dstmask in decoder frame barrier Use of VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT instead of specific VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR Fix for VUID-vkCmdPipelineBarrier2-srcStageMask-03849 pDependencyInfo->pImageMemoryBarriers[0].srcStageMask (VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR) is not compatible with the queue family properties (VK_QUEUE_GRAPHICS_BIT|VK_QUEUE_COMPUTE_BIT|VK_QUEUE_TRANSFER_BIT| VK_QUEUE_SPARSE_BINDING_BIT|VK_QUEUE_PROTECTED_BIT) of this command buffer. The Vulkan spec states: The srcStageMask member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfo must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer was allocated from ( https://www.khronos.org/registry/vulkan/specs/1.3-extensions/ html/vkspec.html#VUID-vkCmdPipelineBarrier2-srcStageMask-03849) The frame barrier should use a compatible srcStageMask for all the queues. Remove reset_pipeline_stage_mask as it is redundant Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6780> 2024-05-02 11:51:03 +0200 Rafael Caricio <rcaricio@netflix.com> * gst/videoparsers/gstav1parse.c: av1parse: No default will trigger warning at compile time Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6778> 2024-05-01 13:40:06 +0200 Rafael Caricio <rcaricio@netflix.com> * gst/videoparsers/gstav1parse.c: av1parse: Add max-level and max-tier to caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6778> 2024-04-30 13:24:42 +0200 Rafael Caricio <rcaricio@netflix.com> * gst/videoparsers/gstav1parse.c: av1parse: Add level and tier to caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6778> 2024-02-29 12:31:47 +0100 Loïc Le Page <llepage@igalia.com> * ext/soundtouch/gstbpmdetect.cc: * ext/soundtouch/gstpitch.cc: * ext/soundtouch/meson.build: * tests/validate/meson.build: * tests/validate/pitch/change_pitch_properties.validatetest: * tests/validate/pitch/change_pitch_properties/flow-expectations/log-pitch-src-expected: * tests/validate/pitch/maintain_pitch_with_variable_playback_rates.validatetest: * tests/validate/pitch/maintain_pitch_with_variable_playback_rates/flow-expectations/log-pitch-src-expected: * tests/validate/pitch/pitch-test.meta: * tests/validate/pitch/reverse.change_pitch_properties.validatetest: * tests/validate/pitch/reverse.change_pitch_properties/flow-expectations/log-pitch-src-expected: * tests/validate/pitch/reverse.maintain_pitch_with_variable_playback_rates.validatetest: * tests/validate/pitch/reverse.maintain_pitch_with_variable_playback_rates/flow-expectations/log-pitch-src-expected: pitch: add validate tests Add pitch tests with different forward and backward playback rates. Those tests depend on the libSoundTouch version to validate the buffers checksums. The actual version uses libSoundTouch 2.3.2, use the `--force-fallback-for=soundtouch` meson option to build using the same version. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6247> 2024-02-29 12:27:23 +0100 Loïc Le Page <llepage@igalia.com> * tests/files/audio-8s-then-reverse.ogg: * tests/interactive/meson.build: * tests/interactive/pitch-playback-test.c: pitch: add interactive test Test pitch with different forward and backward playback rates. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6247> 2024-02-28 19:34:15 +0100 Loïc Le Page <llepage@igalia.com> * ext/soundtouch/gstpitch.cc: * ext/soundtouch/gstpitch.hh: pitch: make it work with reverse playback Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6247> 2024-02-28 18:47:58 +0100 Loïc Le Page <llepage@igalia.com> * ext/soundtouch/gstpitch.cc: pitch: fix multithread accesses - fully protect accesses to the libsoundtouch API that is not thread-safe. - fully protect accesses to GstPitch members that could be read by a downstream query thread while written by an upstream streaming thread or a user thread. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6247> 2024-02-28 14:05:11 +0100 Loïc Le Page <llepage@igalia.com> * ext/soundtouch/gstpitch.cc: * ext/soundtouch/gstpitch.hh: pitch: refactor some variables names - use the `GST_PITCH_GET_PRIVATE` accessor when needed - rename `out_seg_rate` to `output_rate` to use the same name as the parameter - rename `seg_arate` to `segment_applied_rate` to improve readability - apply gst-indent to gstpitch.hh/cc Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6247> 2024-02-28 13:21:51 +0100 Loïc Le Page <llepage@igalia.com> * ext/soundtouch/gstpitch.cc: pitch: fix time ratio computation When changing playing rate, the output segment was not correctly calculated because the stream time ratio was computed using the previous input segment rate instead of using the actual rate. This was producing wrong results for the output segment start and end values. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6247> 2024-05-01 00:12:42 +0900 Seungha Yang <seungha@centricular.com> * sys/qsv/gstqsvh264dec.cpp: * sys/qsv/gstqsvh265dec.cpp: qsvh264dec,qsvh265dec: Fix nalu leaks Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3514 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6781> 2024-04-30 18:15:56 +0200 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/vtdec.c: vtdec: Fix PAUSED->READY deadlock when output loop is running Makes sure the GST_PAD_STREAM_LOCK is not taken when pad is being deactivated. The lack of this was causing deadlocks when stopping the pipeline right after producing first buffers. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6783> 2024-04-30 18:08:27 +0200 Stéphane Cerveau <scerveau@igalia.com> * ext/vulkan/vkh264dec.c: * ext/vulkan/vkh265dec.c: vkh26xdec: Fix stop memory leak The h26xdecoder 'stop' method was not called as the vulkan h26x class rewires the video decoder 'stop' base method to its own one. It was causing some memory leaks such as dangling parser and dpb in h26xdecoder base class. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6782> 2024-04-30 11:20:54 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: * sys/va/gstvabaseenc.c: * sys/va/gstvabaseenc.h: * sys/va/gstvavp9enc.c: vabaseenc: delete the useless frame counter fields They are used to calculate the PTS and DTS before, no usage now. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6773> 2024-04-30 11:12:05 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvabaseenc.c: vabaseenc: Do not set the min_pts Because all the va encoders improved their PTS/DTS algorithm, now it is impossible to generate minus DTS. So no underflow will happen and we do not need to set a 1000 hour offset now. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6773> 2024-04-26 17:12:03 +0800 Mengkejiergeli Ba <mengkejiergeli.ba@intel.com> * sys/msdk/gstmsdkcaps.c: msdk: Add Y212 format to hevc encoder static raw caps Note that static caps is used for the old MSDK dispatch. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6750> 2024-04-22 15:03:56 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: vah265enc: Set the correct buffer flag for output Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6703> 2024-04-22 14:44:53 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: vah264enc: Set the correct buffer flag for output Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6703> 2024-04-21 14:55:31 +0800 Seungha Yang <seungha@centricular.com> * sys/va/gstvabaseenc.c: vabaseenc: Fix frame leak on error path Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6703> 2024-04-21 14:48:02 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: vah265enc: Do not touch the PTS of output frame 1. The PTS of all frames should not be changed. 2. Just update the DTS based on the PTS. For the frame which is not reordered, the DTS is equal to PTS. For frame which is reordered, the DTS is equal to previous DTS. For example: Input: F0[D0, P0] -- F1[D1, P1] -- F2[D2, P2] -- F3[D3, P3] Output: F0[I, D0, P0] -- F3[P, D0, P3] -- F1[B, D1, P1] -- F2[B, D2, P2] Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6703> 2024-04-21 12:51:31 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: vah264enc: Do not touch the PTS of output frame 1. The PTS of all frames should not be changed. 2. Just update the DTS based on the PTS. For the frame which is not reordered, the DTS is equal to PTS. For frame which is reordered, the DTS is equal to previous DTS. For example: Input: F0[D0, P0] -- F1[D1, P1] -- F2[D2, P2] -- F3[D3, P3] Output: F0[I, D0, P0] -- F3[P, D0, P3] -- F1[B, D1, P1] -- F2[B, D2, P2] Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6703> 2024-04-28 23:37:55 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12decoder.cpp: d3d12decoder: Fix d3d12 resource copy It was copying to self resource Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6753> 2024-04-28 23:34:37 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvh265encoder.cpp: nvh265encoder: Fix crash with RGBx and BGRx Both formats need to be handled in switch Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6752> 2024-04-27 22:54:14 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12ipcclient.cpp: d3d12ipcclient: Fix deadlock when copying texture Fixing deadlock in below case * GC lock is taken by background thread, and the background thread calls gst_d3d12_ipc_client_release_imported_data() which takes ipc lock * ipc lock is already taken in ipc thread and trying to pushing GC data via gst_d3d12_command_queue_set_notify() * gst_d3d12_command_queue_set_notify() is trying to take GC lock but it's already taken by background thread Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 22:02:59 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12ipcsink.cpp: d3d12ipcsink: Handle external fence Waits external fence before sending frame to peer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 23:34:35 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12decoder.cpp: d3d12decoder: Remove CPU-side waiting Sets decoder command queue's fence to memory instead of waiting from decoder's output thread. CPU-side waiting will happen only if download is required. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 21:32:23 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12dxgicapture.cpp: d3d12screencapturesrc: Fix output to non-d3d12 element Configures upload/download flags to memory after write Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 20:23:32 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12dxgicapture.cpp: d3d12screencapturesrc: Release and flush d3d11 objects before d3d12 Fixing device-removed error when closing pipeline Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 20:10:53 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12memory.cpp: d3d12memory: Do not wait external fence on map() Only wait for external fence if upload or download is required. Waiting for external fence in case of d3d12 mapping is caller's responsibility Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 23:30:40 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12encoder.cpp: d3d12encoder: Handle external fence explicitly Waits for external fence if any Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 19:46:51 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12converter.h: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12window.cpp: * sys/dwrite/gstdwriterender_d3d12.cpp: d3d12converter: Add support for GPU-side external fence waiting Ideally, GPU waiting should be scheduled just before executing command list. But handling the case outside of converter is a bit complicated. Under an assumption that constructed command list will be executed immediately, schedules GPU-side waiting inside of conversion method to simplify the flow. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 18:44:26 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12memory.h: d3d12memory: Use explicit type for GST_MAP_D3D12 define C++ compiler will complain about different type between int and GstMapFlags Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 23:29:40 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12frame.cpp: * gst-libs/gst/d3d12/gstd3d12frame.h: d3d12frame: Extract external fence from memory and wait helper function Adding gst_d3d12_frame_fence_{gpu,cpu}_wait() methods Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 17:54:38 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device-private.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12frame.cpp: * gst-libs/gst/d3d12/gstd3d12memory.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12ipcclient.cpp: * sys/dwrite/gstdwriterender_d3d12.cpp: d3d12: Update copy_texture_region() method Pass external fence value if any and allow passing fence data so that dependent resources can be released once copy is done Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 17:44:36 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12commandqueue.cpp: * gst-libs/gst/d3d12/gstd3d12commandqueue.h: d3d12commandqueue: Add execute_wait_and_command_lists() method ... so that GPU-side waiting and executing can be scheduled at once Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 17:28:47 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12memory.cpp: * gst-libs/gst/d3d12/gstd3d12memory.h: d3d12memory: Add get_external_fence() method Required for caller to wait external fence without map() method Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-27 00:07:53 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12bufferpool.cpp: d3d12bufferpool: Sync all memory objects on acquire_buffer() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6749> 2024-04-19 00:30:47 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvabaseenc.c: vabaseenc: No need to call _finish_subframe() After vaav1enc is aligned to TU, there is no case that generates multi output for one input. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6688> 2024-04-19 00:25:25 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvavp9enc.c: vavp9enc: Set the correct buffer flag for output Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6688> 2024-04-19 00:22:50 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: vaav1enc: Set the correct buffer flag for output Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6688> 2024-04-19 00:14:15 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: vaav1enc: Do not change the PTS/DTS of output frames The AV1 encoder does not reorder the frames, so there is no need to change the timestamp related meta data of output frames, just inheriting it from the input frames. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6688> 2024-04-18 22:30:20 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: vaav1enc: Change the alignment of output to "tu" The current output alignment is "frame", which may cause some issues for PTS and DTS calculation. We now change the alignment to "tu", and this is also the alignment mode for av1enc and svtav1enc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6688> 2024-04-15 09:51:53 -0400 Xavier Claessens <xavier.claessens@collabora.com> * gst/unixfd/gstunixfdsrc.c: unixfd: Close file descriptors on error After calling g_unix_fd_list_steal_fds() and before calling gst_fd_allocator_alloc(), we are responsible for closing those fds. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6532> 2024-04-03 10:28:28 -0400 Xavier Claessens <xavier.claessens@collabora.com> * gst/unixfd/gstunixfdsink.c: * gst/unixfd/gstunixfdsrc.c: * tests/check/elements/unixfd.c: unixfdsink: Take segment into account when converting timestamps Also rename `calculate_timestamp()` to `to_monotonic()` and `from_monotonic()` which better describe what it does. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6532> 2024-04-03 13:17:01 -0400 Xavier Claessens <xavier.claessens@collabora.com> * gst/unixfd/gstunixfdsrc.c: unixfd: Allow sending buffers with no memories There is no reason to not allow it, and it is useful for simple unit test. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6532> 2024-04-25 14:13:30 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkh264dec.c: * ext/vulkan/vkh265dec.c: * gst-libs/gst/vulkan/gstvkdecoder-private.c: * gst-libs/gst/vulkan/gstvkdecoder-private.h: * gst-libs/gst/vulkan/gstvkqueue.c: * gst-libs/gst/vulkan/gstvkqueue.h: * gst-libs/gst/vulkan/vulkan_fwd.h: * tests/check/libs/vkvideodecode.c: vulkan: replace gst_vulkan_queue_create_decoder() with gst_vulkan_decoder_new_from_queue() The purpose of this refactor is to hide decoding code from public API. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6723> 2024-04-23 14:51:27 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkdecoder-private.c: * gst-libs/gst/vulkan/gstvkdecoder-private.h: * gst-libs/gst/vulkan/vulkan_fwd.h: vulkan: conceal unused decoder symbols Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6723> 2024-04-23 14:48:30 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkh264dec.c: * ext/vulkan/vkh265dec.c: * gst-libs/gst/vulkan/gstvkdecoder-private.c: * gst-libs/gst/vulkan/gstvkdecoder-private.h: * gst-libs/gst/vulkan/gstvkqueue.c: * gst-libs/gst/vulkan/gstvkqueue.h: * gst-libs/gst/vulkan/meson.build: * tests/check/libs/vkvideodecode.c: vulkan: conceal decoder from public API Since we don't want to expose video decoding API outside of GStreamer, the header is removed from installation and both source files are renamed as -private. The header must remain in gst-libs because is referred by GstVulkanQueue, which's the decoder factory. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6723> 2024-04-24 15:44:41 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/va/gstvaallocator.c: vaallocator: disable derived all together for Mesa <23.3 First it derived mapping was disabled for P010 formats, but also there's an issue with interlaced frames. It would be possible to disable derived mapping only for interlaced (H.264 decoder and vadeinterlace) but it would spread the hacks along the code. It's simpler and contained to disable derived completely for Mesa <23.3 Fixes: #3450 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6729> 2024-04-25 11:50:03 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/va/gstvavideoformat.c: va: videoformat: use video library to get DRM fourcc Instead of duplicating the GStreamer format to DRM fourcc mapping, this patch uses the GstVideo library helpers. This duplicates the big O of looking for, since the two lists are traversed, but it's less error prone. Partially reverts commit 547f3e8622a39ce971c272f2c31eab8f1fdfbb45. Fixes: #3354 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6731> 2024-04-17 18:37:30 +0900 Hou Qi <qi.hou@nxp.com> * gst-libs/gst/wayland/gstwlwindow.c: wlwindow: free staged buffer when do gst_wl_window_finalize If waylandsink received buffer rate is high which causes frame drop, the cached staged buffer will be replaced when next buffer needs to be rendered and be freed after redraw. But there is chance to get memory leak if ended without redraw. So need to free staged buffer when do gst_wl_window_finalize(). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6670> 2024-04-26 00:35:54 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12screencapturesrc.cpp: d3d12screencapturesrc: Performance improvement Process captured frame using d3d11 instead of d3d12, and use shared fence when copying processed d3d11 texture to d3d12 resource. In this way, capture CPU thread does not need to wait for fence signal. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6733> 2024-04-24 00:52:18 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/rsvg/gstrsvgdec.c: * ext/rsvg/gstrsvgoverlay.c: rsvg: Disable deprecations instead of porting to new librsvg API `rsvg_handle_get_dimensions()` and `rsvg_handle_render_cairo()` are deprecated, and the replacement librsvg functions as specified in the migration guide are `rsvg_handle_get_intrinsic_size_in_pixels()` and `rsvg_handle_render_document()`. However, those are not drop-in replacements, and actually have breaking semantics for our use-case: 1. `intrinsic_size_in_pixels()` requires SVGs to have width+height or the viewBox attribute, but `get_dimensions()` does not. It will calculate the geometry based on element extents recursively. 2. `render_cairo()` simply renders the SVG at its intrinsic size on the specified surface starting at the top-left, maintaining whatever transformations have been applied to the cairo surface, including distorted aspect ratio. However, `render_document()` does not do that, it is specifically for rendering at the specified aspect ratio inside the specified viewport, and if you specify a viewPort that does not match the aspect ratio of the SVG, librsvg will center it. Matching the old behaviour with the new APIs is a lot of work for no benefit. We'd be duplicating code that is already there in librsvg in one case and undoing work that librsvg is doing in the other case. The aspect ratio handling in this element is also kinda atrocious. There is no option to scale the SVG while maintaining the aspect ratio. Overall, element needs a rewrite. Let's just disable deprecations. The API is not going anywhere. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6726> 2024-04-24 00:51:23 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * ext/rsvg/gstrsvgdec.c: * ext/rsvg/gstrsvgdec.h: Revert "rsvgdec: Fix uses of librsvg functions deprecated since 2.52" This reverts commit b8db4739551401c653f2ae55f39d1ab77e3a5ef5. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6726> 2024-04-17 18:45:34 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkswapper.c: vkswapper: choose color space according with format The swapper surfaces contains the color space for each supported format. Instead of hard coding the color space, it returns the value associated with the negotiated vulkan format. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6725> 2024-03-06 12:59:25 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * tests/check/libs/vkcodecparams.c: * tests/check/libs/vkvideodecode.c: tests: vulkan: split decoder test and parameters Thus they can be reused for the encoder test. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6721> 2024-04-24 14:42:31 +0900 Elliot Chen <elliot.chen@nxp.com> * gst-libs/gst/play/gstplay.c: gstplay: query seek information again in playing state for live stream Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6681> 2024-04-24 01:02:15 +0900 Haihua Hu <jared.hu@nxp.com> * gst-libs/gst/wayland/gstwlwindow.c: wlwindow: clear configure mutex and cond when finalize Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6722> 2024-04-23 11:00:21 +0200 Edward Hervey <edward@centricular.com> * tools/utils.c: bad/utils: Simplify get_file_extension By using g_strrstr Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6715> 2024-04-23 10:53:54 +0200 Edward Hervey <edward@centricular.com> * gst/mpegtsdemux/mpegtsbase.c: mpegtsbase: Fix Program equality check There was an issue with this equality check, which was to figure out what to do with PCR pids (whether they were part of the streams present or not) and whether we ignore PCR or not. Turns out ... we already took care of that further up in the function. The length check can be simplified by just checking whether the length of the *original* PMT and the new PMT are identical. Since we don't store "magic" PCR streams in those, we can just use them as-is. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6713> 2024-04-23 01:40:44 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12decoder.cpp: d3d12decoder: Lock DPB while building command Since DPB resource can be modified in output thread, protect it when building command list. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6709> 2024-04-22 19:32:22 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12decoder.cpp: d3d12decoder: Hold reference pictures in fence data Keep reference pictures alive during executing decoding commands Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6709> 2024-04-22 21:52:53 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12decoder.h: * sys/d3d12/gstd3d12vp9dec.cpp: d3d12vp9dec: Disallow resolution change to larger size on non-keyframe Intel GPU seems to be crashing if the case happens. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6709> 2024-04-21 22:38:50 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12decoder.cpp: d3d12decoder: Fix potential use after free A DPB buffer held by codec picture object may not be writable at the moment, then gst_buffer_make_writable() will unref passed buffer. Specifically, the use after free or double free can happen if: * Crop meta of buffer copy is required because of non-zero top-left crop position * zero-copy is possible with crop meta * A picture was duplicated, interlaced h264 stream for example Interlaced h264 stream with non-zero top-left crop position is not very common but it's possible configuration in theory. Thus gst_buffer_make_writable() should be called with GstVideoCodecFrame.output_buffer directly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6706> 2024-04-21 22:07:36 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d11/gstd3d11decoder.cpp: d3d11decoder: Fix potential use after free A DPB buffer held by codec picture object may not be writable at the moment, then gst_buffer_make_writable() will unref passed buffer. Specifically, the use after free or double free can happen if: * Crop meta of buffer copy is required because of non-zero top-left crop position * zero-copy is possible with crop meta * A picture was duplicated, interlaced h264 stream for example Interlaced h264 stream with non-zero top-left crop position is not very common but it's possible configuration in theory. Thus gst_buffer_make_writable() should be called with GstVideoCodecFrame.output_buffer directly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6706> 2024-04-16 09:50:52 +0200 Edward Hervey <edward@centricular.com> * gst/mpegtsdemux/mpegtsbase.c: tsdemux: Disable smart program update The goal of this code was, for programs which were updates (i.e. adding/removing streams but not completely changing) to allow dynamic addition/removal of streams without completely removing everything. But this wasn't 100% tested and there are a bunch of issues which make it fail in plenty of ways. For now disable that feature and force the legacy "add all pads again and then remove old ones" behaviour to make it switch. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6651> 2024-04-20 21:37:39 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d11/gstd3d11device-private.h: * gst-libs/gst/d3d11/gstd3d11device.cpp: * gst-libs/gst/d3d11/gstd3d11utils.cpp: d3d11device: Add device-removed-reason property In addition to device removed status monitoring in gst_d3d11_result() method, if ID3D11Device4 interface is available, an event handle will be used for device removed status update. And "device-removed" signal is removed since applications can monitor the device removed status via gobject notify Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6699> 2024-04-20 23:13:20 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12utils.cpp: d3d12utils: Fix documentation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6699> 2024-04-20 20:03:46 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device-private.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12utils.cpp: * tests/check/libs/d3d12device.cpp: * tests/check/meson.build: d3d12device: Add device-removed-reason property Adding new property in order to notify users of device removed status. Once device removed status is detected, application should release all ID3D12Device objects corresponding to the adapter, including GstD3D12Device object. Otherwise D3D12CreateDevice() call for the adapter will fail. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6699> 2024-04-21 19:17:53 +0900 Seungha Yang <seungha@centricular.com> * sys/mediafoundation/gstmfsourceobject.cpp: mediafoundation: Fix infinite loop in device provider Initialize source state with GST_MF_DEVICE_NOT_FOUND to terminate loop immediately if no available capture device is available Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3492 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6704> 2024-04-18 10:18:05 +0200 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * gst-libs/gst/d3d11/gstd3d11device.cpp: * tests/check/libs/d3d11device.cpp: d3d11device: protect device_lock vs device_new It seems that when D3D11CreateDevice collides in time with other D3D11 calls, in particular the proccess of creating a shader, it can corrupt the memory in the driver. D3D11 spec doesn't seem to require any thread safety from D3D11CreateDevice. Following MSDN, it is supposed to be called in the beginning of the proccess, while GStreamer calls it with each new pipeline. Such crashes in the driver were frequently reproducing on the Intel UHD 630 machine. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6686> 2024-04-16 23:08:51 +0200 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * tests/check/libs/d3d11device.cpp: * tests/check/meson.build: tests/d3d11: add concurrency test for gstd3d11device We suspect that it's not thread safe to just create and destroy the device from any thread, particularly because of D3D11CreateDevice, that is not documented as thread-safe. While D3D11CreateDevice is usually protected from outside by the gst_d3d11_ensure_element_data, it still can cross with the Release() method of another device. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6686> 2024-04-19 17:17:08 +0900 Elliot Chen <elliot.chen@nxp.com> * gst-libs/gst/play/gstplay.c: gstplay: query duration again if previous query failed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6668> 2024-04-19 22:40:12 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12testsrc.cpp: d3d12testsrc: Use shared 11on12 device Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6697> 2024-04-19 22:26:35 +0900 Seungha Yang <seungha@centricular.com> * sys/dwrite/gstdwriterender_d3d12.cpp: dwrite: Use shared 11on12 device Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6697> 2024-04-19 22:16:42 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12device-private.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/meson.build: * sys/d3d12/meson.build: d3d12device: Hold d3d11on12 device to be shared d3d11on12 device seems to be occupying a bit of GPU memory Hold the instance in GstD3D12Device so that it can be shared Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6697> 2024-04-19 21:13:25 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12videosink.cpp: * sys/d3d12/gstd3d12window.cpp: d3d12videosink: Handle mouse double click and modifier Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6693> 2024-04-19 20:44:44 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12videosink.cpp: d3d12videosink: Disconnect window's signal on dispose Same as the commit of 7b69d1758f77331c2801746cd91b1b6b0db9ecfb but for d3d12videosink. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6692> 2024-04-19 21:17:17 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12window.cpp: d3d12videosink: Handle external HWND's mouse/keyboard events OS will not propagate the event to child HWND if it's handled by the parent. Thus, navigation event should be handled by parent HWND's event handler. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6692> 2024-04-18 09:20:13 +0300 Sebastian Dröge <sebastian@centricular.com> * sys/va/gstvavp9enc.c: vavp9enc: Preserve PTS and other frame metadata See also https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4150 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6680> 2024-03-31 00:23:31 +0900 Seungha Yang <seungha@centricular.com> * sys/webview2/gstwebview2object.cpp: webview2: Handle double click and modifier Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6491> 2024-03-30 23:57:27 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d11/gstd3d11videosink.cpp: * sys/d3d11/gstd3d11window.cpp: * sys/d3d11/gstd3d11window.h: * sys/d3d11/gstd3d11window_win32.cpp: d3d11videosink: Handle double click and modifier Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6491> 2024-04-17 10:58:00 +0900 Hou Qi <qi.hou@nxp.com> * ext/wayland/gstwaylandsink.c: waylandsink: config buffer pool with query size when propose_allocation If propose_allocation comes before set_caps, self->video_info has not been extracted from caps and self->video_info.size is 0. It causes buffer pool fail to set config . So need to use info size got from query instead when propose_allocation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6666> 2021-03-19 18:33:09 +0200 Sebastian Dröge <sebastian@centricular.com> * ext/rsvg/gstrsvgdec.c: rsvgdec: Remove unused GObject::finalize implementation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6613> 2024-04-11 19:54:45 -0300 L. E. Segovia <amy@centricular.com> * ext/rsvg/gstrsvgdec.c: * ext/rsvg/gstrsvgdec.h: rsvgdec: Fix uses of librsvg functions deprecated since 2.52 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6613> 2021-03-11 20:18:24 +0200 Sebastian Dröge <sebastian@centricular.com> * ext/rsvg/gstrsvgdec.c: * ext/rsvg/gstrsvgdec.h: rsvgdec: Negotiate resolution with downstream and scale accordingly Prefer the resolution given by the input but if downstream request a specific resolution then scale to this without regards to the aspect ratio. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1538 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6613> 2024-04-17 16:55:31 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2codecav1dec.c: * sys/v4l2codecs/gstv4l2codech264dec.c: * sys/v4l2codecs/gstv4l2codech265dec.c: * sys/v4l2codecs/gstv4l2codecmpeg2dec.c: * sys/v4l2codecs/gstv4l2codecvp8dec.c: * sys/v4l2codecs/gstv4l2codecvp9dec.c: v4l2codecs: Don't unref allocation query caps The caps obtained from parsing the allocation query is borrowed and should not be unreffed. This fixes criticals assertion introduced in 1.24.1. (gst-launch-1.0:242): GStreamer-CRITICAL **: 19:48:02.667: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed Fixes: 5189e8b95630 ("v4l2codecs: decoders: Add DMA_DRM caps support") Closes #3462 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6679> 2024-04-09 17:10:20 +0800 Mengkejiergeli Ba <mengkejiergeli.ba@intel.com> * sys/msdk/gstmsdkcaps.c: * sys/msdk/gstmsdkenc.c: * sys/msdk/gstmsdkh265enc.c: msdk: Add main-422-12 profile to hevc Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6591> 2024-04-16 22:29:15 +1000 Jan Schmidt <jan@centricular.com> * gst/dvbsubenc/gstdvbsubenc.c: dvbsubenc: fixed some memory leaks and a crash Fix leaks of internal GstBuffers, and a crash if subtitle segments end up empty. Based on a patch by Jurijs Satcs <jurijs.satcs@veset.tv> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6661> 2024-04-16 23:29:26 +0200 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * gst-libs/gst/d3d11/gstd3d11converter.cpp: d3d11converter: fix documentation for converter_new () Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6665> 2024-04-10 20:57:16 +0900 Seungha Yang <seungha@centricular.com> * sys/mediafoundation/gstmfcapturedshow.cpp: * sys/mediafoundation/gstmfcapturedshow.h: * sys/mediafoundation/gstmfcapturewinrt.cpp: * sys/mediafoundation/gstmfcapturewinrt.h: * sys/mediafoundation/gstmfdevice.cpp: * sys/mediafoundation/gstmfsourceobject.cpp: * sys/mediafoundation/gstmfsourceobject.h: * sys/mediafoundation/gstmfsourcereader.cpp: * sys/mediafoundation/gstmfsourcereader.h: mediafoundation: Fix device enumeration Do not stop device enumerate even if a device could not be opened. Otherwise the other devices listed after the failed device will not be reported by device provider Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3460 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6598> 2024-04-15 10:51:03 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/meson.build: tests: fix possible libscpp build failure in gst-plugins-bad ../subprojects/gst-plugins-bad/tests/check/libs/gstlibscpp.cc:41: fatal error: gst/mpegts/gstmpegts-enumtypes.h: No such file or directory Could only pass the needed deps to the libscpp test, but gets messier to maintain, so let's at it for consistency. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6643> 2024-04-12 09:32:13 +0100 Philippe Normand <philn@igalia.com> * tests/check/elements/webrtcbin.c: tests: webrtcbin: Fix repaired-stream-id handling in simulcast test The test was attempting to add the same stream-id extension twice, probably some unfinished copy/paste. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6615> 2024-04-10 01:26:38 +0900 Seungha Yang <seungha@centricular.com> * sys/dwrite/gstdwritebaseoverlay.cpp: * sys/dwrite/gstdwriteoverlayobject.cpp: * sys/dwrite/gstdwriteoverlayobject.h: * sys/dwrite/gstdwriterender.cpp: * sys/dwrite/gstdwriterender.h: * sys/dwrite/gstdwriterender_bitmap.cpp: * sys/dwrite/gstdwriterender_bitmap.h: * sys/dwrite/gstdwriterender_d3d11.cpp: * sys/dwrite/gstdwriterender_d3d11.h: * sys/dwrite/gstdwriterender_d3d12.cpp: * sys/dwrite/gstdwriterender_d3d12.h: * sys/dwrite/meson.build: dwrite: D3D12 integration Adding d3d12 backend text renderer/blender by using d3d11on12 interop. And subclassing renderer object per backend (i.e., d3d11, d3d12, and bitmap) Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6620> 2024-04-10 00:57:40 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12overlaycompositor.cpp: * sys/d3d12/gstd3d12overlaycompositor.h: * sys/d3d12/gstd3d12window.cpp: d3d12overlaycompositor: Add support for d3d12 memory Don't allocate d3d12 texture if overlay is d3d12 memory already Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6620> 2024-04-13 22:47:47 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12utils.cpp: * gst-libs/gst/d3d12/gstd3d12utils.h: * sys/d3d12/gstd3d12pluginutils.cpp: * sys/d3d12/gstd3d12pluginutils.h: d3d12: Move gst_d3d12_buffer_copy_into method to library Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6620> 2024-04-13 22:28:31 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter.cpp: d3d12converter: Port to GstD3D12Frame Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6620> 2024-04-13 21:46:32 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12.h: * gst-libs/gst/d3d12/gstd3d12_fwd.h: * gst-libs/gst/d3d12/gstd3d12frame.cpp: * gst-libs/gst/d3d12/gstd3d12frame.h: * gst-libs/gst/d3d12/meson.build: d3d12: Add GstD3D12Frame struct and helper method Adding GstD3D12Frame struct with map, unmap, and copy methods. This new struct is equivalent to GstVideoFrame but gst_d3d12_frame_map() method will extract D3D12 specific resource handles from memory. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6620> 2024-04-12 18:18:13 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12memory.cpp: d3d12memory: Implement copy method Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6620> 2024-04-13 23:53:00 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12encoder.cpp: d3d12encoder: Fix buffer pool leak Add missing buffer pool release Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6628> 2024-04-10 22:01:18 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d11/gstd3d11videosink.cpp: * sys/d3d11/gstd3d11window.h: * sys/d3d11/gstd3d11window_dummy.cpp: d3d11videosink: Fix rendering on keyed mutex enabled handle As of the commit 69b2e1565c5d0e8b2313d52042d73c721fed7edb, keyed mutex will be handled by the memory object. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3468 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6600> 2024-04-11 18:10:40 +0300 Jordan Petridis <jordan@centricular.com> * ext/fdkaac/meson.build: fdkaac: Mark the dependency include_type as 'system' When using v2.0.2 of the subproject, it triggers werror for unused functions that come from the fdkaac headers. This avoids errors like the following when werror is set. ``` subprojects/fdk-aac-2.0.2/fdk-aac/FDK_audio.h:757:29: error: ‘FDKlibInfo_lookup’ defined but not used [-Werror=unused-function] 757 | static FDK_AUDIO_INLINE INT FDKlibInfo_lookup(const LIB_INFO* info, ``` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6611> 2024-04-09 18:36:12 +0100 Tim-Philipp Müller <tim@centricular.com> * gst-libs/gst/analytics/gstanalyticsmeta.c: analyticsmeta: fix g-ir-scanner warnings Fix gstanalyticsmeta.c:134: Warning: GstAnalytics: "@instance" parameter unexpected at this location warning (caused by the extraneous empty line in the doc chunk) and align function arguments with documentation and header file (handle -> instance). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6585> 2024-04-06 00:41:29 +0900 Seungha Yang <seungha@centricular.com> * ext/closedcaption/gstccconverter.c: ccconverter: Fix caps leak and remove unnecessary code The removed code does the exactly same thing as the below code except for leaking caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6548> 2024-04-09 23:35:13 +0900 Seungha Yang <seungha@centricular.com> * sys/qsv/gstqsvdecoder.cpp: qsvdecoder: Release too old frames Release too old frames manually. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3163 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6583> 2024-04-07 19:34:43 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12converter-builder.cpp: d3d12converter: Simplify root signature build D3DX12SerializeVersionedRootSignature() helper method will translate RS 1.1 into 1.0 version if needed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6557> 2024-04-05 21:58:51 -0400 Daniel Morin <daniel.morin@collabora.com> * gst-libs/gst/codecparsers/gsth264parser.h: h264parser: maintain API changes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540> 2024-04-04 09:38:36 -0400 Daniel Morin <daniel.morin@collabora.com> * tests/check/elements/h264parse.c: Revert "h264parse: test - AU align with SEI between frame slices" This reverts commit 533f814fd9a0eff341bb8f400fff82e5f0c4c313. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540> 2024-04-04 09:38:16 -0400 Daniel Morin <daniel.morin@collabora.com> * gst-libs/gst/codecparsers/gsth264parser.h: * gst/videoparsers/gsth264parse.c: * gst/videoparsers/gsth264parse.h: Revert "h264parse: Improved AU boundary detection" This reverts commit 49f200cb549d43067e7c6eee332cdf757a38d82a. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540> 2024-04-04 09:38:13 -0400 Daniel Morin <daniel.morin@collabora.com> * gst/videoparsers/gsth264parse.c: Revert "h264parse: Remove dead code" This reverts commit 141cd3871592292a8a6c81c1e018610a82ecaa88. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540> 2024-04-04 09:38:08 -0400 Daniel Morin <daniel.morin@collabora.com> * gst/videoparsers/gsth264parse.c: Revert "h264parse: Fix AU collection" This reverts commit 495390f63a710559b149e476d3289dc2f37be7f8. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540> 2024-04-04 09:37:47 -0400 Daniel Morin <daniel.morin@collabora.com> * gst/videoparsers/gsth264parse.c: Revert "h264parse: Remove un-needed check on SPS state" This reverts commit 73dedf9a51e70868f6aa029b968f8c7ef6af530e. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540> 2024-04-04 09:37:40 -0400 Daniel Morin <daniel.morin@collabora.com> * gst/videoparsers/gsth264parse.c: * gst/videoparsers/gsth264parse.h: Revert "h264parse: use AUD to detect first VCL NAL" This reverts commit 90a3b63eed22d2737dbe8e33ee931e897ccfd128. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540> 2024-04-04 09:36:02 -0400 Daniel Morin <daniel.morin@collabora.com> * gst/videoparsers/gsth264parse.c: Revert "h264parse: correct NAL mode backlog processing" This reverts commit b2098849dc21c3615cb15b1e26bbbe77feb76476. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6540> 2024-03-29 15:37:55 +0100 Edward Hervey <edward@centricular.com> * gst/videoparsers/gstvideoparseutils.c: videoparsers: Demote CC warning message Another warning message which isn't fatal and therefore should just be a DEBUG line. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6550> 2024-04-06 01:14:56 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12device.cpp: d3d12device: Fix typo in object name Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6549> 2024-03-18 19:32:33 +0100 Mathieu Duponchelle <mathieu@centricular.com> * sys/aja/gstajasrc.cpp: ajasrc: always post details about detected format .. instead of only when there is a mismatch. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6438> 2024-03-30 15:57:36 +0100 Robert Mader <robert.mader@posteo.de> * gst/jpegformat/gstjpegparse.c: jpegparse: turn some bus warnings into object ones For some cameras `gst_jpeg_parse_app0()` fails on a invalid segment. While this is likely a driver or firmware bug that should be addressed accordingly, it's not fatal and likely does not deserve a bus message on every frame, flooding journals. Turn down the volume of the warnings by turning them into object warnings. If we conclude that in some cases we'd still want bus warnings, they can be done more fine-grained in the `gst_jpeg_parse_appX()` functions. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6490> 2024-03-18 20:50:56 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkh265dec.c: vkh265dec: add missing VPS parameter and fix coded size Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6400> 2024-03-18 20:00:11 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkh264dec.c: * ext/vulkan/vkh265dec.c: vkh26xdec: implement close() vmethod Since a validation layer error is signaled at EOS because it's required to wait for the last frame to be processed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6400> 2024-04-03 16:44:18 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkh264dec.c: * ext/vulkan/vkh265dec.c: vkh26xdec: remove unused variables Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6400> 2024-03-18 19:42:50 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/vulkan/vkh265dec.c: vkh265dec: fix resource info structure when layered DPB Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6400> 2024-03-27 19:45:02 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * tests/examples/va/vaenc-dynamic-reconfigure.c: examples: vaenc-dynamic: support target percentage change in QVBR Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6465> 2024-03-27 19:43:28 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * tests/examples/va/vaenc-dynamic-reconfigure.c: examples: vaenc-dynamic: ignore bitrate change with ICQ too Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6465> 2024-03-27 19:41:30 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/va/gstvaav1enc.c: * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: * sys/va/gstvavp9enc.c: va: encoders: don't assert at target percentage when QVBR Instead of asserting, just get the max value between the current value and 10, which is the minimum required by QVBR. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6465> 2024-03-27 19:37:58 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * tests/examples/va/vaenc-dynamic-reconfigure.c: examples: vaenc-dynamic: add vp9, av1 and low power tests Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6465> 2024-04-02 16:23:31 +0100 Chris Spencer <spencercw@gmail.com> * gst-libs/gst/vulkan/gstvkbufferpool.c: * gst-libs/gst/vulkan/gstvkbufferpool.h: vkbufferpool: correct usage flags type Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6514> 2024-04-02 18:18:14 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/msdk/gstmsdkcontext.c: msdk: sink context reference Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6398> 2024-04-02 18:02:26 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/gtk/gstgtkwaylandsink.c: gtk: sink reference of internal wayland pool Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6398> 2024-04-02 18:00:40 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/wayland/gstwaylandsink.c: wayland: sink reference to internal pool Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6398> 2024-04-02 14:46:32 +0200 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * ext/dash/gstmpdadaptationsetnode.c: * ext/dash/gstmpdbaseurlnode.c: * ext/dash/gstmpdclient.c: * ext/dash/gstmpdcontentcomponentnode.c: * ext/dash/gstmpddescriptortypenode.c: * ext/dash/gstmpdlocationnode.c: * ext/dash/gstmpdmetricsnode.c: * ext/dash/gstmpdmetricsrangenode.c: * ext/dash/gstmpdperiodnode.c: * ext/dash/gstmpdprograminformationnode.c: * ext/dash/gstmpdreportingnode.c: * ext/dash/gstmpdrepresentationnode.c: * ext/dash/gstmpdrootnode.c: * ext/dash/gstmpdsegmentbasenode.c: * ext/dash/gstmpdsegmentlistnode.c: * ext/dash/gstmpdsegmenttemplatenode.c: * ext/dash/gstmpdsegmenttimelinenode.c: * ext/dash/gstmpdsegmenturlnode.c: * ext/dash/gstmpdsnode.c: * ext/dash/gstmpdsubrepresentationnode.c: * ext/dash/gstmpdsubsetnode.c: * ext/dash/gstmpdurltypenode.c: * ext/dash/gstmpdutctimingnode.c: dash: sink references of all MDP objects Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6398> 2024-03-15 19:03:58 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/va/gstvadecoder.c: * sys/va/gstvaencoder.c: * sys/va/gstvafilter.c: va: sink reference at instantiation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6398> 2023-12-05 12:24:01 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst-libs/gst/vulkan/gstvkoperation.c: * gst-libs/gst/vulkan/gstvktrash.c: vulkan: sink references at instantiation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6398> 2024-04-02 19:00:35 +0200 eri <eri@inventati.org> * gst-libs/gst/play/gstplay.c: play: Update `video_snapshot` to support playbin3 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6516> 2024-04-02 22:56:00 +0900 Seungha Yang <seungha@centricular.com> * sys/qsv/gstqsvencoder.cpp: qsvencoder: Handle d3d12 context GstD3D12Device objetct's internal resources are singletons per adapter already though, the object itself is not a singleton. Due to the singleton design (unlike other APIs such as d3d11), d3d12 device context sharing is not a strict requirement for zero-copy, but handles context ones to make things less noisy. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6513> 2024-04-02 22:09:57 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12decoder.cpp: d3d12decoder: Always output sharable texture Because shared heap's additional costs is not significant, use D3D12_HEAP_FLAG_SHARED for resource can be shared over process boundary. And enables render target for d3d11 interop in the process. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6513> 2024-04-02 15:57:58 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live> * tests/examples/webrtc/webrtcswap.c: examples: set perfect-timestamp=true on opusenc Fix audio streaming on Chrome, see https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1524 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6512> 2024-03-28 21:54:21 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: va: av1enc: Change the set_property to make it atomic The inside encoder may be set in other threads, so we should make its accessing atomic. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6471> 2024-03-28 21:52:25 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvavp9enc.c: va: vp9enc: Change the set_property to make it atomic The inside encoder may be set in other threads, so we should make its accessing atomic. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6471> 2024-03-27 19:50:19 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * sys/va/gstvaav1enc.c: * sys/va/gstvavp9enc.c: va{vp9,av1}enc: reconfigure when properties change Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6471> 2024-03-28 21:35:07 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: va: h265enc: Change the set_property to make it atomic The inside encoder may be set in other threads, so we should make its accessing atomic. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6471> 2024-03-28 21:27:54 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: va: h265enc: set the reconf flag when cpb_size updated This feature can be changed dynamically in playing state, so we need to set reconf flag to trigger reconfig. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6471> 2024-03-28 00:00:42 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: va: h264enc: Change the set_property to make it atomic The inside encoder may be set in other threads, so we should make its accessing atomic. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6471> 2024-03-27 23:09:08 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: va: h264enc: set the reconf flag when cpb_size updated This feature can be changed dynamically in playing state, so we need to set reconf flag to trigger reconfig. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6471> 2024-04-02 18:20:43 +0900 Seungha Yang <seungha@centricular.com> * sys/dwrite/gstdwriteoverlayobject.cpp: dwrite: Fix crash on device update Selected blend mode should not be cleared on device update Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6508> 2024-03-22 01:03:11 +0900 Seungha Yang <seungha@centricular.com> * sys/nvcodec/gstnvencobject.cpp: * sys/nvcodec/gstnvh264encoder.cpp: * sys/nvcodec/gstnvh265encoder.cpp: nvencoder: Add support for RGB formats Adding RGBA, RGBx, BGRA, BGRx, VUYA and RGB10A2_LE format support for performance. However, these formats are not still recommended if upstream can support native YUV formats (e.g., NV12, P010) since NVENC does not expose conversion related optiones. Note that VUYA format is 4:4:4 YUV format already but NVENC runtime will convert it to 4:2:0 format internally Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6417> 2024-03-22 01:19:53 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/gstcudamemory.cpp: * sys/nvcodec/gstcudaconverter.c: * sys/nvcodec/gstcudaconvertscale.c: * sys/nvcodec/gstcudaformat.h: cuda: Add support for VUYA format Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6417> 2024-04-02 01:36:28 +0900 Seungha Yang <seungha@centricular.com> * sys/qsv/gstqsvallocator_d3d11.cpp: * sys/qsv/gstqsvallocator_d3d11.h: * sys/qsv/gstqsvav1enc.cpp: * sys/qsv/gstqsvav1enc.h: * sys/qsv/gstqsvencoder.cpp: * sys/qsv/gstqsvencoder.h: * sys/qsv/gstqsvh264enc.cpp: * sys/qsv/gstqsvh264enc.h: * sys/qsv/gstqsvh265enc.cpp: * sys/qsv/gstqsvh265enc.h: * sys/qsv/gstqsvjpegenc.cpp: * sys/qsv/gstqsvjpegenc.h: * sys/qsv/gstqsvvp9enc.cpp: * sys/qsv/gstqsvvp9enc.h: * sys/qsv/meson.build: * sys/qsv/plugin.cpp: qsv: Add support for d3d12 interop in encoder Since QSV API does not support D3D12, try to import d3d12 resource into d3d11 texture. Note that resource sharing requires D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_2 for NV12 texure sharing. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6501> 2024-03-25 23:33:59 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: va: av1enc: Avoid reopen encoder or renegotiate If parameters remain similar enough to avoid either encoder reopening or downstream renegotiation, avoid it. This is going to be useful for dynamic parameters setting. To check if the stream parameters changed, so the internal encoder has to be closed and opened again, are required two steps: 1. If input caps, format, profile, chroma or rate control mode have changed. 2. If any of the calculated variables and element properties have changed. Later on, only if the output caps also changed, the pipeline is renegotiated. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6441> 2024-03-25 19:02:18 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvavp9enc.c: va: vp9enc: Avoid reopen encoder or renegotiate If parameters remain similar enough to avoid either encoder reopening or downstream renegotiation, avoid it. This is going to be useful for dynamic parameters setting. To check if the stream parameters changed, so the internal encoder has to be closed and opened again, are required two steps: 1. If input caps, format, profile, chroma or rate control mode have changed. 2. If any of the calculated variables and element properties have changed. Later on, only if the output caps also changed, the pipeline is renegotiated. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6441> 2024-03-14 23:17:32 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: va: av1enc: Improve the LAST reference assignment The last frame which has the smallest diff should be consider as the first choice rather than the golden frame. Especially when only one reference available, this way can improve the BD rate about 5 percentage. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6379> 2024-03-15 15:48:34 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: va: av1enc: Fix the reference number setting bug The current way will let the total reference number surplus the reference number set by the "ref-frames" property. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6379> 2024-04-01 01:00:53 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d11/meson.build: meson: d3d11: Add support for MinGW DirectXMath package Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3428 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6495> 2024-04-01 22:19:21 +0900 Seungha Yang <seungha@centricular.com> * sys/webview2/gstwebview2object.cpp: * sys/webview2/gstwebview2object.h: * sys/webview2/gstwebview2src.cpp: * sys/webview2/meson.build: webview2: Add support for d3d12 interop Enable shared copy to D3D12 resource Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6499> 2024-04-02 00:43:20 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12graphicscapture.cpp: d3d12screencapturesrc: Use gst_d3d12_memory_get_d3d11_texture() ... and use fence to wait for GPU sync Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6499> 2024-04-02 00:36:45 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/gstd3d12_fwd.h: * gst-libs/gst/d3d12/gstd3d12memory.cpp: * gst-libs/gst/d3d12/gstd3d12memory.h: * gst-libs/gst/d3d12/meson.build: d3d12memory: Add support for d3d11 texture caching Would be useful for various D3D11 interop use cases Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6499> 2024-03-29 19:30:10 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: * sys/va/gstvavp9enc.c: va: encoder: Fix the unit of bitrate in debug log message Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6483> 2024-03-29 18:26:49 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvavp9enc.c: va: vp9enc: Adjust the coded buffer size to avoid failure Some extreme case such as "videotestsrc pattern=1" can generate pure white noise videoes, for which encoder may generate too big output for current coded buffer size. We now consider the qindex and bitrate to avoid that. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6483> 2024-03-29 18:08:54 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvavp9enc.c: va: vp9enc: Fix the frame size not enough issue for super frame The current code forgets to add the current last frame size into the total super frame size. Fixes: #3427 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6483> 2024-03-27 14:34:31 +0800 Cheah, Vincent Beng Keat <vincent.beng.keat.cheah@intel.com> * sys/msdk/gstmsdkallocator_libva.c: * sys/msdk/gstmsdkenc.c: msdk: Fix mjpeg BGRx encode Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6401> 2024-03-31 21:55:51 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d12/d3d12-prelude.h: * gst-libs/gst/d3d12/gstd3d12-private.h: * gst-libs/gst/d3d12/gstd3d12.h: * gst-libs/gst/d3d12/gstd3d12_fwd.h: * gst-libs/gst/d3d12/gstd3d12bufferpool.cpp: * gst-libs/gst/d3d12/gstd3d12bufferpool.h: * gst-libs/gst/d3d12/gstd3d12commandallocatorpool.cpp: * gst-libs/gst/d3d12/gstd3d12commandallocatorpool.h: * gst-libs/gst/d3d12/gstd3d12commandlistpool.cpp: * gst-libs/gst/d3d12/gstd3d12commandlistpool.h: * gst-libs/gst/d3d12/gstd3d12commandqueue.cpp: * gst-libs/gst/d3d12/gstd3d12commandqueue.h: * gst-libs/gst/d3d12/gstd3d12compat.h: * gst-libs/gst/d3d12/gstd3d12converter-builder.cpp: * gst-libs/gst/d3d12/gstd3d12converter-builder.h: * gst-libs/gst/d3d12/gstd3d12converter-private.h: * gst-libs/gst/d3d12/gstd3d12converter.cpp: * gst-libs/gst/d3d12/gstd3d12converter.h: * gst-libs/gst/d3d12/gstd3d12descriptorpool.cpp: * gst-libs/gst/d3d12/gstd3d12descriptorpool.h: * gst-libs/gst/d3d12/gstd3d12device-private.h: * gst-libs/gst/d3d12/gstd3d12device.cpp: * gst-libs/gst/d3d12/gstd3d12device.h: * gst-libs/gst/d3d12/gstd3d12fencedatapool.cpp: * gst-libs/gst/d3d12/gstd3d12fencedatapool.h: * gst-libs/gst/d3d12/gstd3d12format-private.h: * gst-libs/gst/d3d12/gstd3d12format.cpp: * gst-libs/gst/d3d12/gstd3d12format.h: * gst-libs/gst/d3d12/gstd3d12memory-private.h: * gst-libs/gst/d3d12/gstd3d12memory.cpp: * gst-libs/gst/d3d12/gstd3d12memory.h: * gst-libs/gst/d3d12/gstd3d12utils.cpp: * gst-libs/gst/d3d12/gstd3d12utils.h: * gst-libs/gst/d3d12/meson.build: * gst-libs/gst/meson.build: * sys/d3d12/gstd3d12av1dec.cpp: * sys/d3d12/gstd3d12basefilter.h: * sys/d3d12/gstd3d12compositor.h: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12decoder.h: * sys/d3d12/gstd3d12dpbstorage.h: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12encoder.h: * sys/d3d12/gstd3d12encoderbufferpool.h: * sys/d3d12/gstd3d12format.h: * sys/d3d12/gstd3d12h264enc.h: * sys/d3d12/gstd3d12ipc.h: * sys/d3d12/gstd3d12ipcsink.h: * sys/d3d12/gstd3d12ipcsrc.h: * sys/d3d12/gstd3d12overlaycompositor.cpp: * sys/d3d12/gstd3d12overlaycompositor.h: * sys/d3d12/gstd3d12pluginutils.h: * sys/d3d12/gstd3d12screencapture.h: * sys/d3d12/gstd3d12screencapturedevice.h: * sys/d3d12/gstd3d12screencapturesrc.h: * sys/d3d12/gstd3d12testsrc.h: * sys/d3d12/gstd3d12videosink.h: * sys/d3d12/gstd3d12window.h: * sys/d3d12/meson.build: * sys/d3d12/plugin.cpp: d3d12: Move core part to gst-libs Move buffer pool, converter, and device abstraction layer to public library Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6494> 2024-03-31 20:28:27 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12graphicscapture.cpp: * sys/d3d12/gstd3d12ipcsink.cpp: * sys/d3d12/gstd3d12memory.h: * sys/d3d12/gstd3d12pluginutils.cpp: d3d12memory: Define new D3D12 map flags Define GST_MAP_READ_D3D12 and GST_MAP_READ_D3D12 flags Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6494> 2024-03-31 20:13:20 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12commandallocatorpool.cpp: * sys/d3d12/gstd3d12commandallocatorpool.h: * sys/d3d12/gstd3d12commandlistpool.cpp: * sys/d3d12/gstd3d12commandlistpool.h: * sys/d3d12/gstd3d12commandqueue.cpp: * sys/d3d12/gstd3d12commandqueue.h: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12converter.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12descriptorpool.cpp: * sys/d3d12/gstd3d12descriptorpool.h: * sys/d3d12/gstd3d12device.cpp: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12ipcsink.cpp: * sys/d3d12/gstd3d12memory.cpp: * sys/d3d12/gstd3d12memory.h: * sys/d3d12/gstd3d12overlaycompositor.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12window.cpp: d3d12: Make resource getter methods consistent Returns COM pointer directly everywhere Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6494> 2024-03-31 19:21:47 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d11on12.cpp: * sys/d3d12/gstd3d11on12.h: * sys/d3d12/gstd3d12device.cpp: * sys/d3d12/gstd3d12device.h: * sys/d3d12/gstd3d12ipcclient.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/meson.build: d3d12: Remove device11on12 wrapping layer It was added to avoid symbol conflict between DirectX-header project and Windows SDK, but symbol conflict does not happen Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6494> 2024-03-31 19:06:12 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12bufferpool.cpp: d3d12bufferpool: Use d3dx12.h format table The format table in SDK header defines all required information already. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6494> 2024-03-31 18:42:41 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12basefilter.cpp: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12converter.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12device.cpp: * sys/d3d12/gstd3d12device.h: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12ipcsink.cpp: * sys/d3d12/gstd3d12pluginutils.cpp: * sys/d3d12/gstd3d12screencapturesrc.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12videosink.cpp: * sys/d3d12/gstd3d12window.cpp: d3d12: Add a helper method for device equality check GstD3D12Device object itself is not singltons anymore but underlying private struct is singltons. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6494> 2024-03-06 11:24:12 +0800 Mengkejiergeli Ba <mengkejiergeli.ba@intel.com> * sys/msdk/gstmsdkvpputil.c: msdkvpp: Set colorimetry for src caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6316> 2024-03-06 11:04:37 +0800 Mengkejiergeli Ba <mengkejiergeli.ba@intel.com> * sys/msdk/gstmsdkenc.c: msdkenc: Set VideoFullRange according to input colorimetry range Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6316> 2024-04-01 00:52:16 +0300 Mart Raudsepp <leio@gentoo.org> * ext/voaacenc/meson.build: meson: Don't confuse voaacenc plugin with bz2 one in meson variable names No actual issue was observed from the previous naming duplicating bz2 one, so just a correctness tweak. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6496> 2024-03-31 01:21:03 +0900 Seungha Yang <seungha@centricular.com> * sys/webview2/gstwebview2object.cpp: * sys/webview2/gstwebview2object.h: * sys/webview2/gstwebview2src.cpp: webview2: Add support for javascript injection Allow javascript injection for various custom use cases. For example, scrollbars and scrolling can be disabled via gst-launch-1.0 webview2src location=https://gstreamer.freedesktop.org \ javascript="document.querySelector('body').style.overflow='hidden'" ! ... Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6487> 2024-03-29 18:36:00 +0900 Seungha Yang <seungha@centricular.com> * sys/webview2/gstwebview2object.cpp: * sys/webview2/gstwebview2object.h: * sys/webview2/gstwebview2src.cpp: * sys/webview2/meson.build: webview2: Use IContainerVisual for offscreen rendering Capturing from hidden HWND fails sometimes for some reason. Instead of rendering to hidden HWND, render webpage to container visual and create WGC item from the container visual object. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6487> 2024-03-28 21:59:02 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * sys/d3d11/gstd3d11videosink.cpp: d3d11videosink: disconnect signals before releasing the window It might happen that the key event arrives when the d3d11videosink is stopping. In case of GstD3D11WindowWin32 it can raise a navigation event even when the sink is already freed, because the window object's refcount may reach 0 in the window thread. In other words sometimes the GstD3D11WindowWin32 lives few ms more then the GstD3D11VideoSink, because it's freed asynchronously. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6476> 2024-03-29 19:34:32 +0100 Ruben Gonzalez <rgonzalez@fluendo.com> * ext/wpe/gstwpe.cpp: wpe: avoid crash with G_DEBUG=fatal_criticals and static build No plugin filenames if static build. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6484> 2024-03-01 16:12:27 +0800 Mengkejiergeli Ba <mengkejiergeli.ba@intel.com> * sys/msdk/gstmsdkcontext.c: msdk: Fix session close failure In the case of multi-channels transcoding, a context with child sesseion can be parent for others, so we need to check if the msdkcontext has any child session in the list to avoid session leaks. Otherwise, we will see the failure of closing a parent session because one of its child's child session not released. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6259> 2024-03-28 20:02:04 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d11/meson.build: meson: d3d11: Disable library build if DirectXMath header was not found DirectXMath header library is a hard dependency Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6468> 2023-05-15 04:56:47 +0900 Seungha Yang <seungha@centricular.com> * meson_options.txt: * sys/meson.build: * sys/webview2/gstwebview2object.cpp: * sys/webview2/gstwebview2object.h: * sys/webview2/gstwebview2src.cpp: * sys/webview2/gstwebview2src.h: * sys/webview2/meson.build: * sys/webview2/plugin.cpp: webview2: Add Microsoft WebView2 based web browser source Adding webview2src element Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4631> 2024-03-28 16:29:50 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: * sys/va/gstvavp9enc.c: va: {av1, vp9}enc: Use g_free() to free frames Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6466> 2024-03-27 13:53:21 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * sys/v4l2codecs/gstv4l2codecalphadecodebin.c: v4l2codecs: alphadecoder: Explicitly pass 64 bit integers as such through varargs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6452> 2024-03-27 16:17:44 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/codecalpha/gstalphadecodebin.c: alphadecodebin: Explicitly pass 64 bit integers as such through varargs Maybe fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3422 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6452> 2024-03-22 16:14:24 +0100 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/vtdec.c: vtdec: Fix caps criticals during negotiation Calling gst_pad_peer_query_caps() without a filter can give us EMPTY caps, whereas all the code below assumes that's not the case. Replacing query+intersect with a filtered query ensures we always get a subset of the template caps back. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6429> 2024-03-25 17:45:24 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvavp9enc.c: va: vp9enc: Correct the flags for registering properties Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6437> 2024-03-25 16:05:36 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: va: av1enc: Correct the flags for registering properties Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6437> 2024-03-25 15:40:52 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: * sys/va/gstvavp9enc.c: va: {vp9, av1}enc: Do not use g_slice_new() to create frames Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6437> 2024-03-25 15:37:04 +0800 He Junyan <junyan.he@intel.com> * tests/check/libs/vp9bitwriter.c: test: Fix several code style issues in vp9bitwriter test Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6437> 2024-03-25 15:20:27 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/codecparsers/gstvp9bitwriter.c: * gst-libs/gst/codecparsers/gstvp9bitwriter.h: vp9bitwriter: Fix several hotdoc related format issues Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6437> 2024-03-23 19:14:56 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: * sys/va/gstvavp9enc.c: va: encoder: update the bitrate change correctly We should update and notify the bitrate change at a common place, no matter whether the bitrate is calculated or not. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6433> 2024-03-23 16:05:05 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: va: av1enc: enable ICQ and QVBR modes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6433> 2024-03-23 13:28:12 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvavp9enc.c: va: vp9enc: enable ICQ and QVBR modes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6433> 2024-03-23 01:05:40 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: va: h265enc: enable ICQ and QVBR modes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6433> 2024-03-21 20:55:25 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah264enc.c: va: h264enc: enable ICQ and QVBR modes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6433> 2024-03-22 23:59:25 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaencoder.c: va: encoder: Enable ICQ and QVBR mode in rate control map Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6433> 2024-03-22 23:35:55 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvabaseenc.c: va: encoder: Set the quality_factor parameter in rate control Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6433> 2024-03-26 15:32:24 +0100 VÃctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst/jpegformat/gstjpegparse.c: jpegparse: avi1 tag can be progressive AVI1 tag in APP0 is trivalue: 0 not interleaved, 1 odd, 2 even. So if avi1 is zero then the frame is progressive. Also, this patch adds a couple log messages. Fixes: #3414 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6445> 2024-03-26 12:46:02 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/libs/gstlibscpp.cc: * tests/check/meson.build: tests: add check to make sure -bad lib headers are C++ compiler clean Only non-internal libs without external deps for now. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6440> 2024-03-22 16:35:54 +1100 Matthew Waters <matthew@centricular.com> * ext/closedcaption/ccutils.c: * ext/closedcaption/gstccconverter.c: * tests/check/elements/ccconverter.c: ccconverter: fix cdp->cea608-raw field 1 60fps conversion There was a potential busy loop occuring because when we were taking data from the internal ccbuffer, we were not resetting which field had written data. This would mean that the next time data was retrieved from ccbuffer, it was always from field 0 and never from field 1. This only affects usage of cc_buffer_take_separated() which is only used by cdp->raw cea608. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6423> 2024-03-25 00:01:38 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12.h: * sys/d3d12/gstd3d12_fwd.h: * sys/d3d12/gstd3d12commandallocatorpool.h: * sys/d3d12/gstd3d12commandlistpool.h: * sys/d3d12/gstd3d12compat.h: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12converter.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12descriptorpool.h: * sys/d3d12/gstd3d12device.cpp: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12encoderbufferpool.h: * sys/d3d12/gstd3d12fencedatapool.h: * sys/d3d12/gstd3d12h264enc.cpp: * sys/d3d12/gstd3d12ipcsink.cpp: * sys/d3d12/gstd3d12memory.cpp: * sys/d3d12/gstd3d12overlaycompositor.cpp: * sys/d3d12/gstd3d12overlaycompositor.h: * sys/d3d12/gstd3d12pluginutils.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12window.cpp: * sys/d3d12/meson.build: d3d12: Add support for cross-compile ... and fix bunch of GCC reported warnings Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6435> 2024-03-24 22:39:20 +0900 Seungha Yang <seungha@centricular.com> * meson_options.txt: * sys/d3d12/gstd3d12screencapturesrc.cpp: * sys/d3d12/meson.build: d3d12: Allow building without WGC support Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6435> 2024-03-24 21:11:08 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12converter-builder.cpp: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12overlaycompositor.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/hlsl/PSMain_checker.hlsl: * sys/d3d12/hlsl/PSMain_checker_luma.hlsl: * sys/d3d12/hlsl/PSMain_checker_rgb.hlsl: * sys/d3d12/hlsl/PSMain_checker_vuya.hlsl: * sys/d3d12/hlsl/PSMain_color.hlsl: * sys/d3d12/hlsl/PSMain_converter.hlsl: * sys/d3d12/hlsl/PSMain_sample.hlsl: * sys/d3d12/hlsl/PSMain_sample_premul.hlsl: * sys/d3d12/hlsl/PSMain_snow.hlsl: * sys/d3d12/hlsl/VSMain_color.hlsl: * sys/d3d12/hlsl/VSMain_converter.hlsl: * sys/d3d12/hlsl/VSMain_coord.hlsl: * sys/d3d12/hlsl/VSMain_pos.hlsl: * sys/d3d12/hlsl/collect_hlsl_header.py: * sys/d3d12/hlsl/meson.build: * sys/d3d12/meson.build: d3d12: Port to d3dshader library Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6434> 2024-03-24 19:14:16 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d11/gstd3d11compile.cpp: * gst-libs/gst/d3d11/gstd3d11converter-builder.cpp: * gst-libs/gst/d3d11/gstd3d11converter-builder.h: * gst-libs/gst/d3d11/gstd3d11converter-helper.cpp: * gst-libs/gst/d3d11/gstd3d11device-private.h: * gst-libs/gst/d3d11/gstd3d11device.cpp: * gst-libs/gst/d3d11/hlsl/CSMain_converter.hlsl: * gst-libs/gst/d3d11/hlsl/PSMain_converter.hlsl: * gst-libs/gst/d3d11/hlsl/VSMain_converter.hlsl: * gst-libs/gst/d3d11/hlsl/collect_hlsl_header.py: * gst-libs/gst/d3d11/hlsl/meson.build: * gst-libs/gst/d3d11/meson.build: * sys/d3d11/gstd3d11pluginutils.cpp: * sys/d3d11/hlsl/PSMain_checker.hlsl: * sys/d3d11/hlsl/PSMain_checker_luma.hlsl: * sys/d3d11/hlsl/PSMain_checker_rgb.hlsl: * sys/d3d11/hlsl/PSMain_checker_vuya.hlsl: * sys/d3d11/hlsl/PSMain_color.hlsl: * sys/d3d11/hlsl/PSMain_sample.hlsl: * sys/d3d11/hlsl/PSMain_sample_premul.hlsl: * sys/d3d11/hlsl/PSMain_snow.hlsl: * sys/d3d11/hlsl/VSMain_color.hlsl: * sys/d3d11/hlsl/VSMain_coord.hlsl: * sys/d3d11/hlsl/VSMain_pos.hlsl: * sys/d3d11/hlsl/gstd3d11plugin-hlsl.h: * sys/d3d11/hlsl/meson.build: * sys/d3d11/meson.build: d3d11: Port to d3dshader library Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6434> 2024-03-24 01:41:48 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3dshader/converter-hlsl/CSMain_converter.hlsl: * gst-libs/gst/d3dshader/converter-hlsl/PSMain_converter.hlsl: * gst-libs/gst/d3dshader/converter-hlsl/VSMain_converter.hlsl: * gst-libs/gst/d3dshader/converter-hlsl/collect_hlsl_headers.py: * gst-libs/gst/d3dshader/converter-hlsl/hlsl.h: * gst-libs/gst/d3dshader/converter-hlsl/meson.build: * gst-libs/gst/d3dshader/d3dshader-prelude.h: * gst-libs/gst/d3dshader/gstd3dcompile.cpp: * gst-libs/gst/d3dshader/gstd3dcompile.h: * gst-libs/gst/d3dshader/gstd3dshader.h: * gst-libs/gst/d3dshader/gstd3dshadercache.cpp: * gst-libs/gst/d3dshader/gstd3dshadercache.h: * gst-libs/gst/d3dshader/meson.build: * gst-libs/gst/d3dshader/plugin-hlsl/PSMain_checker.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/PSMain_checker_luma.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/PSMain_checker_rgb.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/PSMain_checker_vuya.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/PSMain_color.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/PSMain_sample.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/PSMain_sample_premul.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/PSMain_snow.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/VSMain_color.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/VSMain_coord.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/VSMain_pos.hlsl: * gst-libs/gst/d3dshader/plugin-hlsl/collect_hlsl_headers.py: * gst-libs/gst/d3dshader/plugin-hlsl/hlsl.h: * gst-libs/gst/d3dshader/plugin-hlsl/meson.build: * gst-libs/gst/meson.build: * meson_options.txt: d3dshader: Add HLSL shader library Adding a new library for HLSL compile and compiled bytecode caching. This library will be used by d3d11 and d3d12 library/plugin, in order to reuse single HLSL code and compiled HLSL bytecode. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6434> 2024-03-23 20:25:42 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d11/gstd3d11converter.cpp: * gst-libs/gst/d3d11/hlsl/PSMain_converter.hlsl: d3d11: Update shader to be d3d12 compatible Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6434> 2024-03-23 19:47:34 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12converter-builder.cpp: * sys/d3d12/hlsl/PSMain_converter.hlsl: * sys/d3d12/hlsl/PSMain_sample.hlsl: * sys/d3d12/hlsl/PSMain_sample_premul.hlsl: * sys/d3d12/hlsl/VSMain_converter.hlsl: * sys/d3d12/hlsl/meson.build: * sys/d3d12/meson.build: d3d12: Update shader to be Shader Model 5.0 compatible And use fxc HLSL compiler Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6434> 2024-03-22 12:57:33 +0100 Ruben Gonzalez <rgonzalez@fluendo.com> * gst/rist/gstristsrc.c: ristsrc: Clean caps instead of unref Fix issue unrefering null caps. Better solution than ``` if (src->caps) gst_caps_unref (src->caps); ``` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6432> 2024-03-22 19:48:50 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12ipc.cpp: * sys/d3d12/gstd3d12ipc.h: * sys/d3d12/gstd3d12ipcclient.cpp: * sys/d3d12/gstd3d12ipcclient.h: * sys/d3d12/gstd3d12ipcserver.cpp: * sys/d3d12/gstd3d12ipcserver.h: * sys/d3d12/gstd3d12ipcsink.cpp: * sys/d3d12/gstd3d12ipcsink.h: * sys/d3d12/gstd3d12ipcsrc.cpp: * sys/d3d12/gstd3d12ipcsrc.h: * sys/d3d12/meson.build: * sys/d3d12/plugin.cpp: d3d12: Add IPC elements Adding d3d12ipcsink and d3d12ipcsrc elements, equivalent to D3D11 ones. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6428> 2024-03-22 22:51:54 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12pluginutils.cpp: * sys/d3d12/gstd3d12pluginutils.h: d3d12: Add buffer copy helper method Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6428> 2024-03-22 20:45:01 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12commandqueue.cpp: d3d12commandqueue: Always invoke notify asynchronously Otherwise the callback thread is unpredictable Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6428> 2024-03-22 19:05:52 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12bufferpool.cpp: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12converter.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12graphicscapture.cpp: * sys/d3d12/gstd3d12memory.cpp: * sys/d3d12/gstd3d12memory.h: * sys/d3d12/gstd3d12screencapturesrc.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12window.cpp: d3d12memory: Update for API interop Add support for destroy notify in case of wrapped memory, and allow setting external fence for interop Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6428> 2024-03-22 18:57:26 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12commandqueue.cpp: * sys/d3d12/gstd3d12commandqueue.h: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12device.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12window.cpp: d3d12: Make primary fence sharable Create primary fence with D3D12_FENCE_FLAG_SHARED flag so that the fence can be shared with other APIs or processes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6428> 2024-03-18 18:46:17 +0100 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/vtdec.c: vtdec: Ignore output loop errors in drain() if we're flushing In an early non-linked scenario, this was causing a ton of criticals about the queue array, because the output callback would still fire for leftover frames that were still being processed by VT at the time the output loop stopped. This makes sure they're flushed correctly as well. Also renames gst_vtdec_loop to gst_vtdec_output_loop for consistency with related functions. wip Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6397> 2024-03-18 18:38:41 +0100 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/vtdec.c: vtdec: Fix a deadlock during ProRes playback Sometimes a call to negotiate (and thus drain) can happen from the output loop (via finish_frame()), which will tell VT to output all internal frames, but that won't succeed if we happen to decide to wait for the queue to empty (because the loop is waiting for draining to finish and will not make space in the queue!). This commit adds an override for the queue size limit if we're draining/flushing. This bug could happen for any formats, but was especially obvious for ProRes, which has dpb_size of 0. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6397> 2024-03-19 23:37:37 +0900 Seungha Yang <seungha@centricular.com> * sys/asio/gstasiodeviceprovider.cpp: * sys/asio/gstasioobject.cpp: * sys/asio/gstasioringbuffer.cpp: * sys/asio/gstasiosink.cpp: * sys/asio/gstasiosrc.cpp: * sys/asio/gstasioutils.cpp: * sys/asio/meson.build: asio: Add support for MinGW build Drop MSVC specific bits and remove unused dependency Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6404> 2024-03-19 23:12:04 +0900 Seungha Yang <seungha@centricular.com> * meson_options.txt: * sys/asio/asio.h: * sys/asio/gstasioobject.cpp: * sys/asio/gstasioutils.h: * sys/asio/meson.build: asio: Drop external SDK header dependency Build ASIO plugin using our tiny SDK header Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6404> 2024-01-30 18:18:31 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvavp9enc.c: * sys/va/gstvavp9enc.h: * sys/va/meson.build: * sys/va/plugin.c: va: Implement the vavp9enc plugin Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3293> 2024-03-11 23:06:44 +0800 He Junyan <junyan.he@intel.com> * tests/check/libs/vp9bitwriter.c: * tests/check/meson.build: test: add vp9 bitwriter test case Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3293> 2024-01-30 18:10:12 +0800 He Junyan <junyan.he@intel.com> * gst-libs/gst/codecparsers/gstvp9bitwriter.c: * gst-libs/gst/codecparsers/gstvp9bitwriter.h: * gst-libs/gst/codecparsers/meson.build: vp9bitwriter: Add the VP9 bit writer helper functions In this first version, we only implement the "show existing frame" and super frame writting. Other frame header types writting can be added when needed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3293> 2024-03-19 19:24:56 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12device.cpp: d3d12device: Set debugging friendly object name Build object name with DXGI adapter index Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6395> 2024-03-16 22:37:46 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12commandallocatorpool.cpp: * sys/d3d12/gstd3d12commandlistpool.cpp: * sys/d3d12/gstd3d12device.cpp: d3d12: Suppress expected leak reports Such leaks are expected and intended ones Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6395> 2024-03-16 20:40:58 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12-private.h: * sys/d3d12/gstd3d12commandqueue.cpp: * sys/d3d12/gstd3d12device.cpp: * sys/d3d12/plugin.cpp: d3d12device: Keep device object permanently Because ID3D12Device objects are singletons per adapter, GstD3D12Device was following the API design, that is, keep track of global GstD3D12Device objects and reuses it. That means ID3D12Device object can be released at the time when GstD3D12Device is destroyed. But exetrnal APIs such as NVENC does not seem to be happy with the released ID3D12Device, that could be a driver bug though. Let's hold already opened ID3D12Device permanently without releasing it for now. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6395> 2024-03-16 21:00:30 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12commandqueue.cpp: * sys/d3d12/gstd3d12commandqueue.h: d3d12commandqueue: Add drain method Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6395> 2024-03-16 20:04:43 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12commandallocatorpool.cpp: * sys/d3d12/gstd3d12commandallocatorpool.h: * sys/d3d12/gstd3d12commandlistpool.cpp: * sys/d3d12/gstd3d12commandlistpool.h: * sys/d3d12/gstd3d12commandqueue.cpp: * sys/d3d12/gstd3d12commandqueue.h: * sys/d3d12/gstd3d12compositor.cpp: * sys/d3d12/gstd3d12convert.cpp: * sys/d3d12/gstd3d12converter.cpp: * sys/d3d12/gstd3d12decoder.cpp: * sys/d3d12/gstd3d12descriptorpool.cpp: * sys/d3d12/gstd3d12descriptorpool.h: * sys/d3d12/gstd3d12device.cpp: * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12encoder.cpp: * sys/d3d12/gstd3d12overlaycompositor.cpp: * sys/d3d12/gstd3d12testsrc.cpp: * sys/d3d12/gstd3d12window.cpp: d3d12: Use native device handle if possible Various abstraction objects such as command queue/list/allocator can be constructed without GstD3D12Device Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6395> 2024-03-16 02:00:31 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12commandqueue.cpp: d3d12commandqueue: Allow empty command list Just increase fence value and signal the queue in that case Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6395> 2024-03-07 22:54:29 +0900 Seungha Yang <seungha@centricular.com> * tests/examples/d3d11/d3d11decoder-appsink2.cpp: * tests/examples/d3d11/meson.build: examples: d3d11: Add inter-device synchronization example Adding an example to demonstrate resource sharing between D3D11 device and GPU synchronization Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6303> 2024-03-06 15:39:33 -0500 Ruijing Dong <ruijing.dong@amd.com> * sys/va/gstvaencoder.c: * sys/va/gstvaencoder.h: * sys/va/gstvah265enc.c: va: enc : checking surface alignment attribute Apply surface alignment attribute when availalbe, also fix frame cropping issue for va h265 encoder. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6282> 2024-03-14 19:51:08 +0000 L. E. Segovia <amy@centricular.com> * ext/soundtouch/meson.build: soundtouch: Fix build failure with Apple Clang caused by missing cpp_std Apple Clang sets C++98 by default. I'm applying C++14 to account for Meson's lack of support/fallback for `cpp_std=c++11`. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6374> 2024-03-16 19:32:19 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> * gst/dvdspu/gstspu-pgs.c: dvdspu: avoid null dereference Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6386> 2024-03-17 11:18:37 +0000 Philippe Normand <philn@igalia.com> * gst-libs/gst/play/gstplay.c: play: Fix a critical warning in error callback `on_error()` can be called with a NULL details structure, so in that situation the `gst_structure_copy()` would raise a critical warning. Create an empty structure instead of attempting to copy a NULL one. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6385> 2024-03-16 21:25:38 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12device.cpp: d3d12: Fix SDK debug layer activation Debug layer must be enabled before creating device. Otherwise already opened devices before the activation will be removed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6382> 2024-01-06 13:07:16 +0100 Robert Mader <robert.mader@collabora.com> * sys/v4l2codecs/gstv4l2codecav1dec.c: * sys/v4l2codecs/gstv4l2codech264dec.c: * sys/v4l2codecs/gstv4l2codech265dec.c: * sys/v4l2codecs/gstv4l2codecmpeg2dec.c: * sys/v4l2codecs/gstv4l2codecvp8dec.c: * sys/v4l2codecs/gstv4l2codecvp9dec.c: * sys/v4l2codecs/gstv4l2decoder.c: * sys/v4l2codecs/gstv4l2decoder.h: v4l2codecs: decoders: Add DMA_DRM caps support In order to simplify caps negotiations for clients and, notably, be more compatible with va* decoders. Crucially this allows clients to know ahead of time whether buffers will actually be DMABufs. Similar to GstVaBaseDec we only announce system memory caps if the peer has ANY caps. Further more, and again like va decoders, we fail in `decide_allocation()` if DMA_DRM caps are used without VideoMeta. Apart from buggy peers this can happen e.g. when a peer with ANY caps is used in combination with caps filters. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5890> 2024-02-17 06:01:41 +0100 Robert Mader <robert.mader@collabora.com> * sys/v4l2codecs/gstv4l2codecav1dec.c: * sys/v4l2codecs/gstv4l2codech264dec.c: * sys/v4l2codecs/gstv4l2codech265dec.c: * sys/v4l2codecs/gstv4l2codecmpeg2dec.c: * sys/v4l2codecs/gstv4l2codecvp8dec.c: * sys/v4l2codecs/gstv4l2codecvp9dec.c: * sys/v4l2codecs/gstv4l2decoder.c: * sys/v4l2codecs/gstv4l2decoder.h: v4l2codecs: decoders: Introduce and use set_output_state helper class Allowing us to avoid some code duplication. This will become more important with upcoming changes to caps generation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5890> 2024-02-17 05:43:23 +0100 Robert Mader <robert.mader@collabora.com> * sys/v4l2codecs/gstv4l2decoder.c: * sys/v4l2codecs/gstv4l2decoder.h: v4l2codecs: decoder: Clean up select_src_format() Most importantly rely on video info helpers instead of manual parsing of caps, which will allow us to use additional helpers in the future. While on it, tighen the check for supported formats - failing that indicates a bug in caps negotiation - and make some style changes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5890> 2024-02-17 04:20:16 +0100 Robert Mader <robert.mader@collabora.com> * sys/v4l2codecs/gstv4l2decoder.c: v4l2codecs: decoder: Generalize size enumeration caps By reducing the generated caps to the minimal number of fields and using intersections instead of merges. This will allow us to reuse the result in the future. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5890> 2024-02-16 22:48:17 +0100 Robert Mader <robert.mader@collabora.com> * sys/v4l2codecs/gstv4l2codecav1dec.c: * sys/v4l2codecs/gstv4l2codech264dec.c: * sys/v4l2codecs/gstv4l2codech265dec.c: * sys/v4l2codecs/gstv4l2codecmpeg2dec.c: * sys/v4l2codecs/gstv4l2codecvp8dec.c: * sys/v4l2codecs/gstv4l2codecvp9dec.c: * sys/v4l2codecs/gstv4l2decoder.c: * sys/v4l2codecs/gstv4l2decoder.h: v4l2codecs: decoders: Use src template for negotiation filter This ensures we don't create filter caps that are not supported by the individual codec implementations, as well as that the resulting caps have the required fields so they can be turned into a GstVideoFormat. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5890> 2024-03-14 20:25:52 +0900 Seungha Yang <seungha@centricular.com> * sys/asio/gstasiosink.cpp: * sys/asio/gstasiosrc.cpp: asio: Fix {input,output}-channels property handling Fixing regression introduced by the commit 06dc931b52fbd858640506616f5a1a928792b27c Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6370> 2024-03-14 00:49:45 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/d3d11/gstd3d11device.cpp: d3d11device: Fix adapter LUID comparison in wrapped device mode Fix integer type mismatching Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3382 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6358> 2024-02-23 00:24:14 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com> * gst-libs/gst/d3d11/gstd3d11device-private.h: * gst-libs/gst/d3d11/gstd3d11device.cpp: * gst-libs/gst/d3d11/gstd3d11utils.cpp: d3d11device: raise 'device-removed' signal on DXGI_ERROR_DEVICE_REMOVED When this error gets caught the GstD3D11Device object raises the new "device-removed" signal. This allows to handle the error from outside: stop the playback, re-create the player, replace the catched GstContext by the new one. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6193> 2023-11-29 14:44:37 +0100 Michiel Westerbeek <happylinks@gmail.com> * sys/nvcodec/gstcudaconvertscale.c: * sys/va/gstvavpp.c: gstcudaconvertscale, gstvavpp, videoconvertscale: downgrade 'Can't keep DAR' to debug Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5730> 2024-03-13 17:19:26 +0800 He Junyan <junyan.he@intel.com> * tests/check/libs/av1bitwriter.c: * tests/check/libs/h264bitwriter.c: * tests/check/libs/h265bitwriter.c: test: Correct the API return type of {h264,h265,av1}bitwriter Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6354> 2024-03-13 00:42:16 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12device.cpp: d3d12device: Fix IDXGIFactory2 leak factory passed to gst_d3d12_device_find_adapter() method is valid handle already Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6340> 2024-03-12 13:50:18 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/videoparsers/gstvideoparseutils.c: videoparsers: Don't verbosely warn about CEA_708_PROCESS_EM_DATA_FLAG not being set And the same for CEA_708_PROCESS_CC_DATA_FLAG. This is not really a problem and was polluting logs with warnings for every single frame. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6336> 2024-03-10 12:04:55 -0300 L. E. Segovia <amy@centricular.com> * sys/tinyalsa/meson.build: meson: Require tinyalsa >= 1.1.0 when building its plugin Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6311> 2024-03-09 15:19:20 +0000 L. E. Segovia <amy@centricular.com> * sys/tinyalsa/tinyalsasink.c: tinyalsasink: Fix missing const and deprecations with tinyalsa v2 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6311> 2024-03-12 00:45:15 +0900 Seungha Yang <seungha@centricular.com> * gst-libs/gst/cuda/gstcudabufferpool.cpp: * gst-libs/gst/d3d11/gstd3d11bufferpool.cpp: * sys/d3d12/gstd3d12bufferpool.cpp: cuda,d3d11,d3d12bufferpool: Disable preallocation Do not chain up to parent's GstBufferPool::start() which will do preallocation. We don't want it to be preallocated since there are various cases where negotiated downstream buffer pool is not used at all (e.g., zero-copy decoding, IPC elements). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6326> 2024-03-11 12:42:48 +0100 Antonio Larrosa <alarrosa@suse.com> * sys/va/gstvaav1enc.c: * sys/va/gstvah264enc.c: * sys/va/gstvah265enc.c: va{h264,h265,av1}enc: fix potential crash on devices without rate control This fixes a crash in `gst_va_h264_enc_class_init` and `gst_va_h265_enc_class_init` (and probably also in gst_va_av1_enc_class_init) when calling `g_object_class_install_properties (object_class, n_props, properties);` When rate_control_type is 0, the following code is executed in : ``` } else { n_props--; properties[PROP_RATE_CONTROL] = NULL; } ``` n_props has initially a value of N_PROPERTIES but PROP_RATE_CONTROL is not the last element in the array, so it's making g_object_class_install_properties fail to iterate over the properties array. This applies the same fix to gstvah264enc.c, gstvah265enc.c and gstvaav1enc.c. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6319> 2024-03-07 12:28:58 +0100 Jurijs Satcs <jurijs.satcs@veset.tv> * docs/plugins/gst_plugins_cache.json: * gst/mpegtsmux/gstbasetsmux.c: * gst/mpegtsmux/tsmux/tsmux.c: mpegtsmux: allow to disable SCTE NULL by setting interval to 0 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6284> 2024-02-26 14:57:32 +0100 Piotr BrzeziÅ„ski <piotr@centricular.com> * sys/applemedia/atdec.c: * sys/applemedia/atdec.h: * sys/applemedia/meson.build: * sys/applemedia/plugin.m: macos: Move atdec from applemedia (-bad) to osxaudio (-good) osxaudio has a few helper methods potentially useful in atdec (or future atenc), like GStreamer -> CoreAudio channel mapping. Doesn't make sense to duplicate them in applemedia, and atdec is the only audio-oriented element there anyway. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6223> 2024-03-08 18:22:53 +1100 Matthew Waters <matthew@centricular.com> * docs/plugins/gst_plugins_cache.json: * ext/closedcaption/ccutils.c: * ext/closedcaption/ccutils.h: * ext/closedcaption/gstcccombiner.c: * ext/closedcaption/gstcccombiner.h: * ext/closedcaption/gstccconverter.c: * ext/closedcaption/gstcea608mux.c: * tests/check/elements/cccombiner.c: closedcaption: produce valid cea608 padding by default Cea608 (valid) padding removal is available on the input side of ccconverter or configurable on cccombiner. cccombiner can now configure whether valid or invalid cea608 padding is used and for valid padding, how long after valid non-padding to keep sending valid padding. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6300> 2024-03-09 20:16:22 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvaav1enc.c: va: av1enc: Init the output_frame_num when resetting gf group Fixes: #3359 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6308> 2024-03-06 12:15:37 +0000 Chris Spencer <spencercw@gmail.com> * gst-libs/gst/vulkan/gstvkmemory.c: vkmemory: invalidate non-coherent memory when mapping for read Mapping non-coherent memory does not implicitly invalidate the host caches. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6310> 2024-02-22 12:26:33 +0000 Chris Spencer <spencercw@gmail.com> * gst-libs/gst/vulkan/gstvkoperation.c: vulkan/operation: use timeline semaphore fallback if sync2 not supported gst_vulkan_operation_add_dependency_frame does not fall back to the timeline semaphore implementation if VK_KHR_synchronization2 is compiled in, but not supported by the driver. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6309> 2024-02-22 12:22:34 +0000 Chris Spencer <spencercw@gmail.com> * gst-libs/gst/vulkan/gstvkoperation.c: vulkan/operation: add missing unlock gst_vulkan_operation_add_dependency_frame does not release its lock if support for VK_KHR_timeline_semaphore/VK_KHR_synchronization2 is compiled in, but not supported by the driver. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6309> 2024-03-08 18:18:08 +0200 Jordan Petridis <jordan@centricular.com> * ext/rsvg/meson.build: rsvg: Add direct dependency on cairo We include cairo.h in the element so we should also declare it in meson. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6306> 2024-03-07 17:36:33 +0100 François Laignel <francois@centricular.com> * ext/webrtc/gstwebrtcbin.c: * ext/webrtc/transportstream.c: webrtc: add all SSRC attributes getting CAPS for a PT The transport stream only returned the CAPS for the first matching PT entry from the `ptmap`. Other SSRC with the same PT where not included. For a stream which bundled multiple audio streams for instance, only the first SSRC was knowed to the SSRC demux and downstream elements. This commit adds all the `ssrc-` attributes from the matching PT entries. The RTP jitter buffer can now find the CNAME corresponding its SSRC even if it was not the first to be registered for a particular PT. The RTP PT demux removes `ssrc-*` attributes cooresponding to other SSRCs before pushing SSRC specific CAPS to downstream elements. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6119> 2024-02-23 11:00:20 +0100 François Laignel <francois@centricular.com> * ext/webrtc/gstwebrtcbin.c: webrtcbin: RFC5576 - early CNAME support See RFC5576: have CNAME available to the rtpjitterbuffer before the the first RTCP SR is received, for rapid synchronization. Similar to what was done for RTSP (last 2 commits) of [MR 2132]. [RFC5576]: https://www.rfc-editor.org/rfc/rfc5576 [MR 2132]: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2132 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6119> 2024-03-02 02:13:41 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12dxgicapture.cpp: * sys/d3d12/gstd3d12dxgicapture.h: * sys/d3d12/gstd3d12graphicscapture.cpp: * sys/d3d12/gstd3d12graphicscapture.h: * sys/d3d12/gstd3d12screencapture.cpp: * sys/d3d12/gstd3d12screencapture.h: * sys/d3d12/gstd3d12screencapturesrc.cpp: * sys/d3d12/meson.build: d3d12screencapturesrc: Add support for WGC API Adding support for window and monitor capturing by using Windows Graphics Capture API. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6256> 2024-03-05 22:49:05 +0900 Seungha Yang <seungha@centricular.com> * sys/d3d12/gstd3d12memory.cpp: * sys/d3d12/gstd3d12memory.h: * sys/d3d12/gstd3d12utils.cpp: * sys/d3d12/gstd3d12utils.h: d3d12memory: Implement NT handle caching and custom user data support Same as the d3d11 memory implementation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6256> 2024-02-16 18:08:36 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/onvif/gstrtponviftimestamp.c: * gst/onvif/gstrtponviftimestamp.h: rtponviftimestamp: make sure to set E and T bits on last buffer of lists Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5173> 2024-02-28 09:30:33 +1100 Jan Schmidt <jan@centricular.com> * gst/onvif/gstrtponviftimestamp.c: rtponviftimestamp: Use gst_segment_to_stream_time_full() In the situation where playback starts from a keyframe before the target playback segment, then the first buffers will be outside the configured segment and gst_segment_to_stream_time() will return GST_CLOCK_TIME_NONE unconditionally. If drop-out-of-segment is false, the RTP buffers will not be dropped, but will be sent witout ONVIF extension timestamps and given GST_CLOCK_TIME_NONE timestamps on the receiver. Instead, use gst_segment_to_stream_time_full() to extrapolate stream time outside the segment so that such buffers still get assigned their correct timestamps on the receiver. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6248> 2024-03-01 21:00:33 +1100 Jan Schmidt <jan@centricular.com> * gst/dvbsubenc/gstdvbsubenc-util.c: dvbsubenc: Fix bottom field size calculation Don't accidentally include the stuffing byte (if present) into the bottom field size. It should only be included in the total segment length. Fixes problems with FFmpeg not rendering the subtitles with a stuffing byte, giving a "Invalid object location!" error. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6250> 2024-02-28 15:51:31 +0200 Sebastian Dröge <sebastian@centricular.com> * sys/aja/gstajasink.cpp: ajasink: Make logging between ajasrc and ajasink more consistent Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6208> 2024-02-23 12:41:44 +0200 Sebastian Dröge <sebastian@centricular.com> * sys/aja/gstajasrc.cpp: * sys/aja/gstajasrc.h: ajasrc: Improve clock handling Provide a clock from the source that is a monotonic system clock with the rate corrected based on the measured and ideal capture rate of the frames. If this clock is selected as pipeline clock, then provide perfect timestamps to downstream. Otherwise, if the pipeline clock is the monotonic system clock, use the internal clock for converting back to the monotonic system clock. Otherwise, use the monotonic system clock time calculated in the above case and convert that to the pipeline clock. In all cases this will give a smoother time than the previous code, which simply took the difference between the driver provided capture time and the current real-time clock time, and applied that to the current pipeline clock time. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6208> 2024-02-23 12:21:56 +0200 Sebastian Dröge <sebastian@centricular.com> * sys/aja/gstajasrc.cpp: ajasrc: Move frame drop detection after the frame transfer Otherwise there's a small window between querying the state and doing the transfer in which a frame could be dropped, and we would then output the frame right after the dropped one as if it was the dropped frame. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6208> 2024-02-23 12:21:04 +0200 Sebastian Dröge <sebastian@centricular.com> * sys/aja/gstajasrc.cpp: ajasrc: Improve debug output related to frame transfers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6208> 2024-02-26 22:19:57 +0800 He Junyan <junyan.he@intel.com> * sys/msdk/gstmsdkdec.c: * sys/msdk/gstmsdkenc.c: * sys/msdk/gstmsdkvpp.c: MSDK: Set the job type when create context from external handle Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6221> 2024-03-01 00:08:03 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: vah265enc: Set backward_num to 1 in low delay mode In low delay B mode, the P frame is converted as B frame with forward references. For example, One P frame may refers to P-1, P-2 and P-3 in list0 and refers to P-3, P-2 and P-1 in list1. So the num in list0 and list1 does not reflect the forward_num and backward_num. The vaapi does not provide ref num for forward or backward so far. In this case, we just consider the backward_num to be 1 conservatively. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6249> 2024-01-26 23:50:08 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: vah265enc: Improve B pyramid mode in HEVC If the reference frame number is bigger than 2, we can enable the pyramid B mode. We do not need to assign a reference frame to each pyramid level. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6249> 2024-01-28 23:27:48 +0800 He Junyan <junyan.he@intel.com> * sys/va/gstvah265enc.c: vah265enc: Expand log2_max_pic_order_cnt if needed In b_pyramid mode, B frames can be ref and prevPicOrderCntLsb can be the B frame POC which is smaller than the P frame. This can cause POC diff bigger than MaxPicOrderCntLsb/2 and generate wrong POC value. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6249> 2024-03-05 12:58:57 +0000 Tim-Philipp Müller <tim@centricular.com> * README.md: * RELEASE: * meson.build: Back to development Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6261> === release 1.24.0 ===