Commit graph

121252 commits

Author SHA1 Message Date
Robert Mader
04c6727fcd v4l2: object: Add P010 format
For 10bit content. Tested with HEVC on a Pixel3a (qcom).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8194>
2024-12-21 18:26:46 +01:00
Sebastian Dröge
d08fb9c241 baseparse: Add bitrate tags to empty taglists too
It's unclear why empty taglists should be handled in a special way. If the
subclass or upstream did not provide any tags at all then we can still provide
bitrate tags at least.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8157>
2024-12-21 13:07:44 +00:00
Hosang Lee
228dd25a0a 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-21 10:29:48 +00:00
Sebastian Dröge
10fc594847 splitmuxsrc: Post messages when a fragment is started
This allows the application to keep track which fragment is currently active.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8184>
2024-12-21 08:44:23 +00:00
Thibault Saunier
2c9a642b66 meson: Give the same name for api_version in all modules
There were 2 version of it, apiversion and api_version, I chose the one
with most occurencies: `api_version`

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178>
2024-12-20 20:19:28 +00:00
Thibault Saunier
8be9074b0f doc: Handle gst_dep.get_variable('libexecdir') failure
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178>
2024-12-20 20:19:28 +00:00
Thibault Saunier
caa223baf4 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 20:19:28 +00:00
Robert Mader
6c29395ea4 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>
2024-12-20 17:13:23 +00:00
Edward Hervey
19cea52dbd 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-12-20 14:19:00 +00:00
Edward Hervey
5480894dee pbutils: New AV1 caps utility functions
Makes it easy to convert between caps and codec_data

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4442>
2024-12-20 14:19:00 +00:00
Stéphane Cerveau
2a19805f7d 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-20 12:55:51 +00:00
Edward Hervey
f7d6822589 urisourcebin: Avoid deadlock on shutdown
The reason why the STATE lock was taken was to avoid issues where we would be
adding (and activating) elements at the same time as urisourcebin would be
brought down to READY. That would cause those new elements to potentially return
ERRORS because of not-negotiated/flushing-pads

But that creates a really bad deadlock (state lock is taken to deactivate the
streaming thread which .. is currently grabbing the state lock).

Instead, we can just ignore the warning/error messages that might occur when
shutting down.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4075

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8162>
2024-12-20 08:01:01 +00:00
Nicolas Dufresne
988f806e7a av1parse: Fix some debug trace and comment typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8026>
2024-12-20 01:26:12 +00:00
Nicolas Dufresne
98d40251d8 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: 79312357a6
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8026>
2024-12-20 01:26:12 +00:00
He Junyan
c79f83f4ec av1parse: Fix a typo in the comments about its usage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710>
2024-12-20 08:22:31 +08:00
He Junyan
d63a9340b0 Doc: Update the plugin document for h266parse
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710>
2024-12-20 08:22:31 +08:00
He Junyan
b8a806d8a9 test: Add the h266parse element test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710>
2024-12-20 08:22:31 +08:00
He Junyan
b5e4c8b774 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-20 08:22:31 +08:00
He Junyan
51618400ec 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-20 08:22:31 +08:00
He Junyan
5b768ce0cc 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-20 08:22:31 +08:00
Sebastian Dröge
9f79d39b1b vp9parse: Add video codec tag to the tag list
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8156>
2024-12-19 23:30:31 +00:00
Sebastian Dröge
f590e815fe av1parse: Add video codec tag to the tag list
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8156>
2024-12-19 23:30:31 +00:00
Robert Mader
b275f63b13 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-12-19 20:55:59 +00:00
Robert Mader
4b07d54931 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-19 20:55:59 +00:00
Stéphane Cerveau
97d62d2291 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-19 19:49:06 +00:00
Stéphane Cerveau
f618270c59 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-19 19:49:06 +00:00
Tim-Philipp Müller
f4733d0af7 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-19 15:47:13 +00:00
Carlos Falgueras García
1dd4a6e832 rtph26xpay: Fix the default framerate
Use 0/1 instead of 0/0 as the default framerate for rtph26{4,5}pay.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8176>
2024-12-19 11:55:29 +00:00
Matthew Waters
dbf4915abd 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-19 00:33:03 +00:00
Matthew Waters
d6563016ca cuda: add CuGet/SetCtxLimit()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8158>
2024-12-19 00:33:03 +00:00
Nicolas Dufresne
0fb5d8afa8 doc: v4l2: Update documentation cache for DMA_DRM
The template caps now exposes DMA_DRM formats.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-12-18 23:34:08 +00:00
Nicolas Dufresne
3ee04883ee v4l2: object: Adjust DMABuf negotiation base on io-mode
If the io-mode is forced by user to MMAP, USERPTR or RW, don't try and
negotiated DMABuf caps feature. This would otherwise fail later.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-12-18 23:34:08 +00:00
Nicolas Dufresne
3ec1feb88f v4l2: pool: Adjust pool behaviour when DMA_DRM is used
We disable the copy threshold and always add GstVideoMeta.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-12-18 23:34:08 +00:00
Nicolas Dufresne
77744c3d63 v4l2: Add support for setting memory:DMABuf caps
This is the final step to allow negotiation of this caps features. Limiting the
features based on the io-mode shall come next.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-12-18 23:34:08 +00:00
Nicolas Dufresne
58b196d62b v4l2: object: Implement probing memory:DMABuf caps feature
This is the caps obtained trough caps query. We now have both system and
DMAbuf varaint, while maintaining support for meta:Interlaced feature.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-12-18 23:34:08 +00:00
Nicolas Dufresne
8860eadffd v4l2: object: Add memory:DMABuf caps feature to template caps
In this patch, we introduce memory:DMABuf caps feature into V4L2
elements template caps. This is required to allow caps query,
allocation query and set_format to use it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-12-18 23:34:08 +00:00
Nicolas Dufresne
14b5df4850 v4l2: Directly map V4L2 formats to DRM formats
As in the long term not all V4L2 formats will have a libgstvideo
implementation, add a dedicated DRM fourcc map. This will be used
to enable memory:DMABuf caps features.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-12-18 23:34:08 +00:00
Nicolas Dufresne
50bb74e0c1 v4l2: Include a copy of drm_fourcc.h
This one has been imported from libdrm 2.4.122.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-12-18 23:34:08 +00:00
Robert Mader
b687b9527b glupload: Add DRM raw uploader
The goal is equivalent to adding DMA_DRM caps to the existing raw
uploader, but creating a new dedicated uploader allows separating the
logic more easily.

Test:
 - use an AMD system
 - modprobe visl
 - gst-launch-1.0 filesrc location=some-1080p-content.mkv ! parsebin ! v4l2slh265dec ! glimagesink

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8126>
2024-12-18 22:31:02 +00:00
Nicolas Dufresne
a6be74786e 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-18 13:38:42 -05:00
Sebastian Dröge
4b1954b490 avcodecmap: Add some more channel position mappings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8173>
2024-12-18 11:22:12 +00:00
Guillaume Desmottes
219bf89159 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-18 09:13:22 +00:00
Nicolas Dufresne
bebfbb6f69 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-12-17 21:51:10 +00:00
Sebastian Dröge
88a36b53c5 pad: Only remove TAG events on STREAM_START if the stream-id actually changes
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4097

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8135>
2024-12-17 12:05:54 +00:00
Emil Ljungdahl
f28a7b6ef3 webrtcbin: Tear down src and sink bins before removing them from webrtc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7900>
2024-12-17 09:48:46 +00:00
Emil Ljungdahl
df8b8f9692 webrtcbin: Fix potential deadlock on bin elements cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7900>
2024-12-17 09:48:46 +00:00
Nirbheek Chauhan
d09605a3ff vtenc: Fix authors of encoder features
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>
2024-12-16 18:52:22 +00:00
Nirbheek Chauhan
07e538c043 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-16 18:52:21 +00:00
Nirbheek Chauhan
e881817567 vtenc, osxaudio: Fix missing since markers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>
2024-12-16 18:52:21 +00:00
Nirbheek Chauhan
0c93eaec4f vtenc: Mark rate-control enum as plugin API, and update cache
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>
2024-12-16 18:52:21 +00:00