Commit graph

618 commits

Author SHA1 Message Date
Cheung Yik Pang
acc1309cdf video: fix AV12 format lacking the GST_VIDEO_FORMAT_FLAG_ALPHA flag
The GST_VIDEO_FORMAT_FLAG_ALPHA indicates whether a video format has an
alpha channel.  AV12 does have an alpha plane.  Switching from
MAKE_YUV_FORMAT to MAKE_YUVA_FORMAT to generate GST_VIDEO_FORMAT_AV12.

Fixes #4081

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8067>
2024-12-05 10:07:54 +00:00
Guillaume Desmottes
082a8fcd5e 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-12-04 13:56:13 +00:00
Sebastian Dröge
537161868f id3v2: Don't try parsing extended header if not enough data is available
Thanks to Antonio Morales for finding and reporting the issue.

Fixes GHSL-2024-235
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3842

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8033>
2024-12-03 03:29:34 +00:00
Philippe Normand
c683cdc914 rtp: Fix precision loss in gst_rtcp_ntp_to_unix()
Without this patch the UNIX timestamp resulting from the translation from NTP
would be off by one nano-second.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8010>
2024-12-02 10:24:01 +00:00
Sebastian Dröge
f7aac1cc07 rtsp: Fix off-by-one in month/day-of-the-week array
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8017>
2024-12-01 09:49:29 +00:00
Edward Hervey
acf1efbf8d gl: Add missing Since marker
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8001>
2024-11-29 08:44:30 +00:00
Philipp Zabel
f18d6fcb40 glupload/egl: Extract EGL image cache and make it public
Extract the EGLImage cache from gstglupload.c, place it in a separate
source file gsteglimagecache.c, and make the API public, so it can be
reused by the gldownload element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792>
2024-11-28 15:25:28 -05:00
Jakub Adam
b7970a4d95 gldownload: enumerate emulated video formats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792>
2024-11-28 15:25:28 -05:00
Jakub Adam
1ef9f6ab26 glcontext/egl: Fix use of uninitialized memory
At least some Mesa drivers (see llvmpipe_query_dmabuf_modifiers()) don't
initialize the provided external_only array, so some format/modifier
combinations could get incorrectly marked as only external.

Make sure we zerofill the array before passing it to
eglQueryDmaBufModifiersEXT().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792>
2024-11-28 15:25:28 -05:00
Jakub Adam
270e186311 glcontext_egl: add method to check if format supports a modifier
Makes _check_modifier from glupload reusable.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792>
2024-11-28 15:25:27 -05:00
Jakub Adam
d80477d769 glupload: make _dma_buf_transform_* functions public API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792>
2024-11-28 15:25:27 -05:00
Jakub Adam
57f36ed9d9 glupload: rename GstGLUploadDrmFormatFlags -> GstGLDrmFormatFlags
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792>
2024-11-28 13:46:08 -05:00
Tim-Philipp Müller
13f2b7dd74 discoverer: fix build with older glib versions
Follow-up to !7969

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7988>
2024-11-28 11:40:38 +00:00
Sebastian Dröge
ccb40ca7d0 discoverer: Fix formatting of a debug log string
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7969>
2024-11-27 16:48:55 +00:00
Sebastian Dröge
27a2fa73bc discoverer: Move cache file tracking from GstDiscovererInfo into GstDiscoverer
It's only used temporarily during discovery and makes no sense as part of the
resulting info.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7969>
2024-11-27 16:48:55 +00:00
Sebastian Dröge
9e4c173c3c discoverer: Move stream counter from GstDiscovererInfo into GstDiscoverer
It's only used temporarily during discovery and makes no sense as part of the
resulting info.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7969>
2024-11-27 16:48:55 +00:00
Sebastian Dröge
dc3f2c6721 discoverer: Also copy missing element details when copying a GstDiscovererInfo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7969>
2024-11-27 16:48:55 +00:00
Sebastian Dröge
d553448b95 discoverer: Make sure the missing elements details array is NULL-terminated in a thread-safe way
And also avoid a possible out-of-bounds read if the array contains no elements.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7969>
2024-11-27 16:48:55 +00:00
Tomáš Polomský
fa1ed5d210 appsink: fix timeout logic for gst_app_sink_try_pull_sample
In case of gst_app_sink_try_pull_object returns an object instead of a sample,
the whole process must be restarted with the reduced timeout, otherwise requested
timeout could be easily exceeded.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7962>
2024-11-27 11:09:47 +00:00
Andoni Morales Alastruey
7b408bae69 discoverer: fix segfault in race condition adding a new uri's
There is a race condition adding new uri's right after receiving
the `discovered` event. We must wait until we have cleaned-up
the last discovery to start processing the new one

Fix #3758

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7930>
2024-11-20 21:36:30 +00:00
Nicolas Dufresne
9f707f6c64 glupload: dmabuf: Only pass padded size for indirect tiled handling
We only require out_info to hold on padded width/height when
using our internal detiling shaders. Doing so for direct upload
leads to the image being scaled down in a way that the padding
is displayed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7849>
2024-11-19 21:22:38 +00:00
Benjamin Gaignard
0847f7fbe1 video: dma-drm: Add DRM vendor modifiers list
Copy DRM vendor modifier IDs from drm_fourcc.h

Add Vivante modifier definition and map GST_VIDEO_FORMAT_NV12_4L4 and
GST_VIDEO_FORMAT_NV12_10LE40_4L4 accordingly. Also add Samsung 64Z32 tiled
format mapping.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7849>
2024-11-19 21:22:38 +00:00
Benjamin Gaignard
18a90f9180 video: dma-drm: Add NV15, NV20 and NV30 DRM formats definitions
Cherry pick DRM NV15, NV20 and NV30 formats definitions from drm_fourcc.h

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7849>
2024-11-19 21:22:38 +00:00
Nicolas Dufresne
80a4d36522 video: dma drm: Fix modifier definition on 32bit
The modifiers are 64bit, add missing ULL suffix so that the compiler does
not complain on 32bit platforms.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7849>
2024-11-19 21:22:38 +00:00
Benjamin Gaignard
afd8bf807d video: dma-drm: Add modifier field to FormatMap
A GST_VIDEO_FORMAT_* could be mapped to only one pair of DRM_FORMAT_*
and DRM_FORMAT_MOD_*. Until now only DRM_FORMAT_MOD_LINEAR was used.
To be able to add other modifiers add a modidier field in struct FormatMap.
Create a helper functions the allow turning a GstVideoFormat into a pair
of DRM fourcc and modifier and vis-versa.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7849>
2024-11-19 21:22:38 +00:00
Philippe Normand
b6c7280868 sdp: Add debug categories for message and mikey modules
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7924>
2024-11-19 18:54:32 +00:00
Qian Hu (胡骞)
53007b5d83 docs: update fields about gst video aligment
1) add stride align fields in allocation.md
2) add stride align fields in gstvideometa.h

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7201>
2024-11-19 15:27:38 +00:00
Qian Hu (胡骞)
6335c5d005 meta: add aggregation function for allocation meta api params
since tee do allocation query for each downstream element, and
get allocation query params from them. this function will aggregate
all params, and propose it for upstream element of tee

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7201>
2024-11-19 15:27:38 +00:00
Nicolas Dufresne
be95be4b31 video: pool: Make structure const when getting video alignment
Downgrade to const, this is backward compatible make makes the API compatible
wit more usages.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7201>
2024-11-19 15:27:38 +00:00
Thibault Saunier
45806c4d66 gl: colorconvert: Add support for I422_10XX and I422_12XX
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7919>
2024-11-19 12:39:01 +00:00
Nicolas Dufresne
000a7650fc glupload: Upgrade uploader selection message to INFO
This allow using INFO log to quickly see what uploader we
picked. This is very useful as the DEBUG category has became
very noisy.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7891>
2024-11-16 12:30:34 +00:00
Nicolas Dufresne
3c8b1427ca glupload: dmabuf: Fix emulated tiled import
The added check for LINEAR modifier broke dmabuf import for
NV12 emulation (R8/RG88) of all sort (linear and tiled).

Fixes !5461

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7891>
2024-11-16 12:30:34 +00:00
Sebastian Dröge
dce0cdf548 audiostreamalign: Don't report disconts for every buffer if alignment-threshold is too small
If it is too small, the maximum allowed diff becomes 0 samples which would then
trigger if there is no discontinuity at all.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7888>
2024-11-16 00:10:51 +00:00
Thibault Saunier
6ed0d547a7 gl: colorconvert: Add support for Y444_10XX and Y444_16XX
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7858>
2024-11-12 11:31:37 -03:00
Sebastian Dröge
e57bd3b0dc riff: Add support for M101 Matrox uncompressed SD video codec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7823>
2024-11-11 08:47:41 +00:00
Diego Nieto
0d85cdafd5 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-11-10 12:57:36 +00:00
Jan Schmidt
75fcfdb12d video-converter: Set TIME segment format on appsrc
Combine the appsrc and appsink settings into one place and ensure that
the appsrc will output a TIME segment, to avoid incorrect segment format
criticals in some situations.

The D3D11 path was already setting the segment format correctly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7839>
2024-11-06 19:30:11 +11:00
Andoni Morales Alastruey
5a3dd943fe cocoa: fix rendering artefacts in retina displays
Set the correct contentsScale in the CALayer instead of using
the default (1.0) which causes rendering artefacts in retina
displays due to using a smaller bitamp than the display size.

See: https://developer.apple.com/documentation/quartzcore/calayer/1410746-contentsscale?language=objc

Fix: #3942
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7828>
2024-11-05 13:40:23 +00:00
Andreas Wittmann
41ad50fb48 qmlgloverlay: make depth buffer optional
allow dropping depth/stencil buffer for
qmlgloverlay element. Shows considerable
drop in memory bandwidth consumption of
the element on windows platforms.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7677>
2024-11-01 02:37:57 +00:00
Albert Sjolund
ae6ac2a659 appsrc: Fix use-after-free when making buffer / buffer-lists writable
make_writable can cause a reallocation of the buffer, meaning that obj
would point to an invalid object, both for buffer and for bufferlist.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7803>
2024-11-01 00:03:48 +00:00
Thibault Saunier
ec2b3cb200 discoverer: Fix typos
discovererd / discoverered -> discovered

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7733>
2024-10-29 00:17:58 +00:00
Thibault Saunier
5ed2af5083 discoverer: Fix serializing tags StreamInfo on disc
When `use-cache` is used, we were serializing the StreamInfo **before**
_ensure_info_tags was called, meaning we were always missing that information.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7733>
2024-10-29 00:17:58 +00:00
Diego Nieto
fe61bc3cee video-format: reduce the number of memcpy if possible
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7694>
2024-10-26 07:02:50 +00:00
Edward Hervey
38c07a2d01 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-25 08:58:29 +00:00
Carlos Falgueras García
561ca94916 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-25 05:53:22 +00:00
François Laignel
0f7be28eb1 rtspsrc: client-managed MIKEY KeyMgmt
Some servers (e.g. Axis cameras) expect the client to propose the encryption
key(s) to be used for SRTP / SRTCP. This is required to allow re-keying so
as to evade cryptanalysis. Note that the behaviour is not specified by the
RFCs. By setting the 'client-managed-mikey-mode' property to 'true', rtspsrc
acts as follows:

* For a secured profile (RTP/SAVP or RTP/SAVPF), any media in the SDP
  returned by the server for which a MIKEY key management applies is
  elligible for client managed mode. The MIKEY from the server is then
  ignored.
* rtspsrc sends a SETUP with a MIKEY payload proposed by the user. The
  payload is formed by calling the 'request-rtp-key' signal for each
  elligible stream. During initialisation, 'request-rtcp-key' is also
  called as usual. The keys returned by both signals should be the same
  for a single stream, but the mechanism allows a different approach.
* The user can start re-keying of a stream by calling SET_PARAMETER.
  The convenience signal 'set-mikey-parameter' can be used to build a
  'KeyMgmt' parameter with a MIKEY payload.
* After the server accepts the new parameter, the user can call
  'remove-key' and prepare for the new key(s) to be served by signals
  'request-rtp-key' & 'request-rtcp-key'.
* The signals 'soft-limit' & 'hard-limit' are called when a key
  reaches the limits of its utilisation.

This commit adds support for:

* client-managed MIKEY mode to srtpsrc.
* Master Key Index (MKI) parsing and encoding to GstMIKEYMessage.
* re-keying using the signals 'set-mikey-parameter' & 'remove-key' and
  then by serving the new key via 'request-rtp-key' & 'request-rtcp-key'.
* 'soft-limit' & 'hard-limit' signals, similar to those provided by srtpdec.

See also:

* https://www.rfc-editor.org/rfc/rfc3830
* https://www.rfc-editor.org/rfc/rfc4567

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7587>
2024-10-24 12:43:11 +00:00
James Cowgill
8cf0d5a65c exiftag: Check the result of gst_date_time_new_local_time
Fixes a critical warning when parsing a JPEG containing a malformed
`DateTime` tag (like `0000:00:00 00:00:00`).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7709>
2024-10-23 05:34:30 +00:00
Scott Moreau
6846746a0e gst-plugins-base: Set swap interval to 0 for wayland EGL windows
This allows the stream to drive the buffers submitted to the display server.
If the application does not receive frame events for a period of time due to
minimization or tty switch for example, instead of waiting to process and
then catching up when frame events resume, the stream will resume instantly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7691>
2024-10-20 14:03:11 +00:00
Nicolas Dufresne
64c6ff97c4 glcontext: egl: Unrestrict the support base DRM formats
There is no requirement for a base DRM format to be supported by libgstvideo
in order to be uploaded to. Don't limite to DRM fourcc that have a libgstvideo
format mapping. This notably enabled AFBC support, which uses an opaque based
format that does not have a linear definition. This also adds R8/RG88 and
simimlar other formats that are not yet mapped in libgstvideo.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7689>
2024-10-19 23:59:58 +00:00
François Laignel
375acaed51 gst: hamonise recent Caps function names with Structure counterparts
These functions were introduced as part of the GstIdStr MR:

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7644>
2024-10-16 23:14:50 +00:00