platform/upstream/gstreamer.git
5 months agopad: Reset not-linked last flow return on reconfigure events upstream/main
Sebastian Dröge [Tue, 31 Dec 2024 08:50:58 +0000 (10:50 +0200)]
pad: Reset not-linked last flow return on reconfigure events

The pad might actually be linked now and we'd only find out by actually pushing
a buffer downstream again.

The last flow return is used by GstFlowCombiner to detect if all pads are not
linked, and not resetting this when re-linking creates a race condition when
switching between pads where all pads are temporarily considered not linked.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8224>

5 months agoqtdemux: Undef helper macros after use
Jochen Henneberg [Thu, 2 Jan 2025 11:24:03 +0000 (12:24 +0100)]
qtdemux: Undef helper macros after use

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8127>

5 months agoqtdemux: Validate matrix before doing simplified multiply
Jochen Henneberg [Wed, 18 Dec 2024 07:44:30 +0000 (08:44 +0100)]
qtdemux: Validate matrix before doing simplified multiply

The matrix multiplication makes some assumption about the element
values to simplify the math with fixpoint values. If this is allowed
for the given matrices is now checked first.

Then the debug output for matrix and a comment have been fixed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8127>

5 months agoqtdemux: Fixup for orientation matrix parsing
Jochen Henneberg [Tue, 17 Dec 2024 09:48:45 +0000 (10:48 +0100)]
qtdemux: Fixup for orientation matrix parsing

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8127>

5 months agoqtdemux: Use mvhd transform matrix and support for flipping
Jochen Henneberg [Tue, 10 Dec 2024 20:34:48 +0000 (21:34 +0100)]
qtdemux: Use mvhd transform matrix and support for flipping

The mvhd matrix is now combined with the tkhd matrix. The combined
matrix is then checked if it matches one of the standard values for
GST_TAG_IMAGE_ORIENTATION.
This check now includes matrices with flipping.

Fixes #4064

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8127>

5 months agodecodebin3: Free main input even if it is not part of the list of inputs
Sebastian Dröge [Fri, 27 Dec 2024 12:27:54 +0000 (14:27 +0200)]
decodebin3: Free main input even if it is not part of the list of inputs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8216>

5 months agod3d12screencapturesrc: Add support for HDR capture in DDA mode
Seungha Yang [Tue, 31 Dec 2024 15:43:41 +0000 (00:43 +0900)]
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>

5 months agod3dshader: Add sampling pixel shader for scRGB SRV
Seungha Yang [Wed, 1 Jan 2025 13:15:58 +0000 (22:15 +0900)]
d3dshader: Add sampling pixel shader for scRGB SRV

Shaders required for HDR capturing

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8227>

5 months agowebrtc: add new post-rtp-aux-sender signal
Albert Sjolund [Fri, 22 Nov 2024 11:46:22 +0000 (12:46 +0100)]
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>

5 months agortpsession: send twcc struct in both directions
Albert Sjolund [Mon, 9 Dec 2024 13:26:03 +0000 (14:26 +0100)]
rtpsession: send twcc struct in both directions

As there are signals around rtpsession in both directions,
send twcc data both upstream and downstream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7940>

5 months agoaacparse: add test to make sure output caps are set also on reuse
Tim-Philipp Müller [Wed, 25 Dec 2024 15:22:23 +0000 (16:22 +0100)]
aacparse: add test to make sure output caps are set also on reuse

See https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/350

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8214>

5 months agotsdemux: fix JPEG XS framerate handling for 29.97fps
Tim-Philipp Müller [Thu, 26 Dec 2024 00:33:37 +0000 (01:33 +0100)]
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>

5 months agomeson: Also disable drm on GNU/Hurd
Samuel Thibault [Mon, 30 Dec 2024 21:53:02 +0000 (22:53 +0100)]
meson: Also disable drm on GNU/Hurd

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8223>

5 months agodocs: Update qsv plugin docs
Seungha Yang [Sat, 28 Dec 2024 13:29:23 +0000 (22:29 +0900)]
docs: Update qsv plugin docs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220>

5 months agodocs: Update d3d11 plugin docs
Seungha Yang [Sat, 28 Dec 2024 13:26:48 +0000 (22:26 +0900)]
docs: Update d3d11 plugin docs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220>

5 months agodocs: Update d3d12 plugin docs
Seungha Yang [Sat, 28 Dec 2024 12:43:46 +0000 (21:43 +0900)]
docs: Update d3d12 plugin docs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220>

5 months agod3d12: Add "Since" markers
Seungha Yang [Sat, 28 Dec 2024 12:35:44 +0000 (21:35 +0900)]
d3d12: Add "Since" markers

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220>

5 months agodocs: Add asio plugin docs
Seungha Yang [Sat, 28 Dec 2024 12:06:24 +0000 (21:06 +0900)]
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>

5 months agoasio: Add "Since" markers and fix typos in property description
Seungha Yang [Sat, 28 Dec 2024 11:42:56 +0000 (20:42 +0900)]
asio: Add "Since" markers and fix typos in property description

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220>

5 months agodocs: Add webview2 plugin docs
Seungha Yang [Sat, 28 Dec 2024 11:38:13 +0000 (20:38 +0900)]
docs: Add webview2 plugin docs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8220>

5 months agoplay: Fix stream id leaks on initial stream selection
Sebastian Dröge [Sat, 28 Dec 2024 11:26:18 +0000 (13:26 +0200)]
play: Fix stream id leaks on initial stream selection

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7650>

5 months agoplay: Actually check for valgrind for the tests
Sebastian Dröge [Fri, 27 Dec 2024 17:01:21 +0000 (19:01 +0200)]
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>

5 months agoplay: Fix tests after the switch to playbin3
Sebastian Dröge [Fri, 27 Dec 2024 11:31:09 +0000 (13:31 +0200)]
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>

5 months agoplay: Port tests to libsoup 3
Sebastian Dröge [Thu, 10 Oct 2024 19:54:04 +0000 (15:54 -0400)]
play: Port tests to libsoup 3

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7650>

5 months agoplay: Add stream-id based selection of streams to match better playbin3's API
Sebastian Dröge [Thu, 10 Oct 2024 19:08:33 +0000 (15:08 -0400)]
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>

5 months agovideoflip: Add support for Y444_16XX
Thibault Saunier [Wed, 18 Dec 2024 14:43:16 +0000 (11:43 -0300)]
videoflip: Add support for Y444_16XX

Necessary code already existed, it was just a matter of advertising it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8177>

5 months agosrtpdec: fix build when libsrtp1 is being used
Tim-Philipp Müller [Mon, 23 Dec 2024 14:17:57 +0000 (15:17 +0100)]
srtpdec: fix build when libsrtp1 is being used

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8204>

5 months agowpe: Fix build for version 2.44
Philippe Normand [Mon, 23 Dec 2024 13:58:31 +0000 (14:58 +0100)]
wpe: Fix build for version 2.44

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8203>

5 months agovideodecoder: Gracefully handle missing data without prior input segment
Philippe Normand [Mon, 23 Dec 2024 08:49:51 +0000 (09:49 +0100)]
videodecoder: Gracefully handle missing data without prior input segment

Exit early in case the decoder has been resetted and hasn't received a new
segment event yet.

This was detected with netsim dropping buffers in a WebRTC pipeline.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8200>

5 months agosrtpdec: Fix a use-after-free buffer issue
Philippe Normand [Sun, 22 Dec 2024 14:00:07 +0000 (15:00 +0100)]
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>

5 months agov4l2: object: Add P010 format
Robert Mader [Sat, 21 Dec 2024 13:39:58 +0000 (14:39 +0100)]
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>

5 months agobaseparse: Add bitrate tags to empty taglists too
Sebastian Dröge [Mon, 16 Dec 2024 09:41:40 +0000 (11:41 +0200)]
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>

5 months agomssdemux: Use gsturi structure to form fragment urls
Hosang Lee [Mon, 10 Aug 2020 05:27:29 +0000 (14:27 +0900)]
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>

5 months agosplitmuxsrc: Post messages when a fragment is started
Sebastian Dröge [Thu, 19 Dec 2024 15:01:28 +0000 (17:01 +0200)]
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>

5 months agomeson: Give the same name for api_version in all modules
Thibault Saunier [Wed, 18 Dec 2024 20:11:33 +0000 (17:11 -0300)]
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>

5 months agodoc: Handle gst_dep.get_variable('libexecdir') failure
Thibault Saunier [Wed, 18 Dec 2024 16:18:32 +0000 (13:18 -0300)]
doc: Handle gst_dep.get_variable('libexecdir') failure

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178>

5 months agodoc: Allow updating the plugins cache for all modules even if hotdoc is not present
Thibault Saunier [Wed, 18 Dec 2024 15:27:30 +0000 (12:27 -0300)]
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>

5 months agov4l2codecs: decoder: Fix drm format query
Robert Mader [Fri, 20 Dec 2024 11:52:31 +0000 (12:52 +0100)]
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>

5 months agompegts: Add provisional AV1 mapping
Edward Hervey [Tue, 18 Apr 2023 09:37:25 +0000 (11:37 +0200)]
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>

5 months agopbutils: New AV1 caps utility functions
Edward Hervey [Tue, 18 Apr 2023 09:34:54 +0000 (11:34 +0200)]
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>

5 months agodash: handle 0 duration in gst_xml_helper_set_prop_duration
Stéphane Cerveau [Mon, 18 Nov 2024 11:31:21 +0000 (12:31 +0100)]
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>

5 months agourisourcebin: Avoid deadlock on shutdown
Edward Hervey [Mon, 16 Dec 2024 15:36:06 +0000 (16:36 +0100)]
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>

5 months agoav1parse: Fix some debug trace and comment typo
Nicolas Dufresne [Mon, 2 Dec 2024 16:39:11 +0000 (11:39 -0500)]
av1parse: Fix some debug trace and comment typo

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8026>

5 months agoav1parse: Don't immediatly reset timestamp in presence of TD
Nicolas Dufresne [Mon, 2 Dec 2024 16:32:13 +0000 (11:32 -0500)]
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>

5 months agoav1parse: Fix a typo in the comments about its usage
He Junyan [Fri, 20 Dec 2024 00:18:15 +0000 (08:18 +0800)]
av1parse: Fix a typo in the comments about its usage

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710>

5 months agoDoc: Update the plugin document for h266parse
He Junyan [Wed, 4 Dec 2024 15:27:37 +0000 (23:27 +0800)]
Doc: Update the plugin document for h266parse

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710>

5 months agotest: Add the h266parse element test
He Junyan [Thu, 12 Dec 2024 16:00:01 +0000 (00:00 +0800)]
test: Add the h266parse element test

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710>

5 months agoh266parse: Add the new h266parse element
He Junyan [Fri, 8 Sep 2023 17:10:18 +0000 (01:10 +0800)]
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>

5 months agolibs: codecparsers: Add the missing ilrp_idx field in H266's ref list
He Junyan [Mon, 16 Dec 2024 16:12:51 +0000 (00:12 +0800)]
libs: codecparsers: Add the missing ilrp_idx field in H266's ref list

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5710>

5 months agolibs: codecparsers: H266 GstH266RefPicListStruct's abs_delta_poc_st should be 16...
He Junyan [Mon, 16 Dec 2024 16:15:07 +0000 (00:15 +0800)]
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>

5 months agovp9parse: Add video codec tag to the tag list
Sebastian Dröge [Mon, 16 Dec 2024 09:39:10 +0000 (11:39 +0200)]
vp9parse: Add video codec tag to the tag list

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8156>

5 months agoav1parse: Add video codec tag to the tag list
Sebastian Dröge [Mon, 16 Dec 2024 09:38:52 +0000 (11:38 +0200)]
av1parse: Add video codec tag to the tag list

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8156>

5 months agov4l2codecs: format: Add V4L2_PIX_FMT_NC12
Robert Mader [Fri, 8 Nov 2024 11:38:09 +0000 (12:38 +0100)]
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>

5 months agov4l2codecs: decoder: Translate V4L2 formats into DRM fourcc/mod pairs
Robert Mader [Wed, 14 Aug 2024 00:11:06 +0000 (02:11 +0200)]
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>

5 months agovkencoder: init debug category earlier
Stéphane Cerveau [Thu, 12 Dec 2024 13:41:08 +0000 (14:41 +0100)]
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>

5 months agovkdecoder: init debug category earlier
Stéphane Cerveau [Thu, 12 Dec 2024 13:40:55 +0000 (14:40 +0100)]
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>

5 months agosvtjpegxsdec: handle decode errors more gracefully
Tim-Philipp Müller [Mon, 16 Dec 2024 19:01:15 +0000 (19:01 +0000)]
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>

5 months agortph26xpay: Fix the default framerate
Carlos Falgueras García [Wed, 18 Dec 2024 14:15:22 +0000 (15:15 +0100)]
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>

5 months agocuda/context: add gpu stack size property
Matthew Waters [Mon, 16 Dec 2024 06:32:20 +0000 (17:32 +1100)]
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>

5 months agocuda: add CuGet/SetCtxLimit()
Matthew Waters [Mon, 16 Dec 2024 06:31:17 +0000 (17:31 +1100)]
cuda: add CuGet/SetCtxLimit()

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8158>

5 months agodoc: v4l2: Update documentation cache for DMA_DRM
Nicolas Dufresne [Wed, 18 Dec 2024 21:21:47 +0000 (16:21 -0500)]
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>

5 months agov4l2: object: Adjust DMABuf negotiation base on io-mode
Nicolas Dufresne [Wed, 18 Dec 2024 20:30:24 +0000 (15:30 -0500)]
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>

5 months agov4l2: pool: Adjust pool behaviour when DMA_DRM is used
Nicolas Dufresne [Wed, 18 Dec 2024 20:13:17 +0000 (15:13 -0500)]
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>

5 months agov4l2: Add support for setting memory:DMABuf caps
Nicolas Dufresne [Thu, 22 Aug 2024 20:08:03 +0000 (16:08 -0400)]
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>

5 months agov4l2: object: Implement probing memory:DMABuf caps feature
Nicolas Dufresne [Tue, 20 Aug 2024 19:20:02 +0000 (15:20 -0400)]
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>

5 months agov4l2: object: Add memory:DMABuf caps feature to template caps
Nicolas Dufresne [Thu, 15 Aug 2024 18:28:51 +0000 (14:28 -0400)]
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>

5 months agov4l2: Directly map V4L2 formats to DRM formats
Nicolas Dufresne [Thu, 15 Aug 2024 13:54:26 +0000 (09:54 -0400)]
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>

5 months agov4l2: Include a copy of drm_fourcc.h
Nicolas Dufresne [Thu, 15 Aug 2024 13:53:06 +0000 (09:53 -0400)]
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>

5 months agoglupload: Add DRM raw uploader
Robert Mader [Tue, 10 Dec 2024 17:04:21 +0000 (18:04 +0100)]
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>

5 months agova: display: Optimize out some property indirection
Nicolas Dufresne [Wed, 18 Dec 2024 18:35:53 +0000 (13:35 -0500)]
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>

5 months agoavcodecmap: Add some more channel position mappings
Sebastian Dröge [Wed, 18 Dec 2024 10:21:15 +0000 (12:21 +0200)]
avcodecmap: Add some more channel position mappings

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8173>

5 months agowpe: enable console message with WPE2
Guillaume Desmottes [Tue, 17 Dec 2024 16:36:19 +0000 (17:36 +0100)]
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>

5 months agova: h264dec: Allow "extended" profile decoding
Nicolas Dufresne [Tue, 17 Dec 2024 02:41:55 +0000 (21:41 -0500)]
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>

5 months agopad: Only remove TAG events on STREAM_START if the stream-id actually changes
Sebastian Dröge [Thu, 12 Dec 2024 08:50:30 +0000 (10:50 +0200)]
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>

5 months agowebrtcbin: Tear down src and sink bins before removing them from webrtc
Emil Ljungdahl [Mon, 18 Nov 2024 06:54:55 +0000 (07:54 +0100)]
webrtcbin: Tear down src and sink bins before removing them from webrtc

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7900>

5 months agowebrtcbin: Fix potential deadlock on bin elements cleanup
Emil Ljungdahl [Fri, 15 Nov 2024 14:00:00 +0000 (15:00 +0100)]
webrtcbin: Fix potential deadlock on bin elements cleanup

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7900>

5 months agovtenc: Fix authors of encoder features
Nirbheek Chauhan [Tue, 10 Dec 2024 07:42:18 +0000 (13:12 +0530)]
vtenc: Fix authors of encoder features

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>

5 months agovtenc: Fix class hierarchy in an attempt to fix property docs
Nirbheek Chauhan [Mon, 9 Dec 2024 18:35:53 +0000 (00:05 +0530)]
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>

5 months agovtenc, osxaudio: Fix missing since markers
Nirbheek Chauhan [Mon, 9 Dec 2024 09:42:57 +0000 (15:12 +0530)]
vtenc, osxaudio: Fix missing since markers

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>

5 months agovtenc: Mark rate-control enum as plugin API, and update cache
Nirbheek Chauhan [Mon, 9 Dec 2024 09:42:57 +0000 (15:12 +0530)]
vtenc: Mark rate-control enum as plugin API, and update cache

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>

5 months agoatenc: Add missing since markers and mark plugin API
Nirbheek Chauhan [Mon, 9 Dec 2024 09:48:55 +0000 (15:18 +0530)]
atenc: Add missing since markers and mark plugin API

Also update the plugin docs cache.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>

5 months agoavfvideosrc: Add missing since markers for screen-crop properties
Nirbheek Chauhan [Mon, 9 Dec 2024 09:42:06 +0000 (15:12 +0530)]
avfvideosrc: Add missing since markers for screen-crop properties

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>

5 months agodocs: Update macOS plugin docs again
Nirbheek Chauhan [Wed, 4 Dec 2024 19:02:37 +0000 (00:32 +0530)]
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>

5 months agomeson: Skip the plugins_doc_caches target if docs are disabled
Nirbheek Chauhan [Wed, 4 Dec 2024 18:36:58 +0000 (00:06 +0530)]
meson: Skip the plugins_doc_caches target if docs are disabled

This is a follow-up to 95eca6d91912620a8a36b55ae32f72a32bc2475b, due
to which the target existed, but was a no-op, and it was difficult to
notice why the plugin caches are not being generated, since the doc
option is disabled by default.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>

5 months agocccombiner: expose new input-meta-processing type, force
Mathieu Duponchelle [Fri, 6 Dec 2024 18:13:50 +0000 (19:13 +0100)]
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>

5 months agomeson: Improve NVMM CUDA detection
Nirbheek Chauhan [Mon, 2 Dec 2024 11:42:00 +0000 (17:12 +0530)]
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>

5 months agoinfo: Use an RW lock to protect the log functions and their list
Sebastian Dröge [Tue, 9 Jul 2024 08:42:03 +0000 (11:42 +0300)]
info: Use an RW lock to protect the log functions and their list

Previously the code tried to be thread-safe by only locking when modifying the
list and leaking the old list, but this was not sufficient. When removing a log
function, its user_data would be freed but this log function and its user_data
might afterwards still be used during logging which then could lead to memory
corruption.

To avoid that, use an RW lock: get a write lock whenever modifying the list and
get a read lock whenever only using the list of log functions for logging.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7151>

5 months agod3d12: Suppress misleading leak report
Seungha Yang [Sun, 15 Dec 2024 15:22:47 +0000 (00:22 +0900)]
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>

5 months agoges-launcher: return early on 'project-loaded' signal on error
Thibault Saunier [Fri, 13 Dec 2024 12:17:32 +0000 (09:17 -0300)]
ges-launcher: return early on 'project-loaded' signal on error

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8145>

5 months agoges: project: Add missing API guards
Thibault Saunier [Fri, 13 Dec 2024 12:11:05 +0000 (09:11 -0300)]
ges: project: Add missing API guards

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8145>

5 months agoges: formatter: Keep a reference on the timelines
Thibault Saunier [Fri, 13 Dec 2024 12:09:15 +0000 (09:09 -0300)]
ges: formatter: Keep a reference on the timelines

We will be using it in an async way so we need to keep our own
reference to it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8145>

5 months agod3d12: Add d3d12deinterlace element
Seungha Yang [Sun, 7 Apr 2024 10:23:52 +0000 (19:23 +0900)]
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>

5 months agod3dshader: Add YADIF deinterlacing compute shader code
Seungha Yang [Wed, 9 Oct 2024 14:02:09 +0000 (10:02 -0400)]
d3dshader: Add YADIF deinterlacing compute shader code

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8140>

5 months agoappsrc: Decrease log level for item drop
Max Romanov [Fri, 13 Dec 2024 12:51:20 +0000 (15:51 +0300)]
appsrc: Decrease log level for item drop

Leaky appsrc feature was implemented similar to queue. Dropping item
is a normal case because it is configured so. Warning messages
is too severe for this event.

Level changed to DEBUG just like in queue.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8147>

5 months agoges-meta-container: Fix the GET_INTERFACE macro
Thibault Saunier [Fri, 13 Dec 2024 13:14:32 +0000 (10:14 -0300)]
ges-meta-container: Fix the GET_INTERFACE macro

It had a synthax issue

Fixes https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/issues/141

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8146>

5 months agovideodecoder: set decode only flag by decode only buffer
Dean Zhang (张安迪) [Fri, 13 Dec 2024 02:07:58 +0000 (10:07 +0800)]
videodecoder: set decode only flag by decode only buffer

This is used for optimize frame drop issue. Some video streams such as av1
contains decode-only frames. These frames are handled by decoder but not show
by display, which will cause input frame count unmatch the output frame count.
After collecting more decoder only frame, it will cause error report "so many
frame droped". So attach the flag GST_BUFFER_FLAG_DECODE_ONLY with the input
buffer, the v4l2videodecoder can further handle the decode-only buffer in
output list.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8142>

5 months agourisourcebin: Only rewrite stream-start event once
Edward Hervey [Thu, 12 Dec 2024 04:51:09 +0000 (05:51 +0100)]
urisourcebin: Only rewrite stream-start event once

If the custom field is already present, we don't want to rewrite the event
again. Otherwise it would cause downstream into believing that a *new*
stream-start event has arrived ... which isn't the case.

Fixes #4097

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8132>

6 months agogl: raise WARNING instead of ERROR when no connector is connected
Guillaume Desmottes [Thu, 12 Dec 2024 09:43:26 +0000 (10:43 +0100)]
gl: raise WARNING instead of ERROR when no connector is connected

This is a valid and working use case when rendering on a headless
server.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8136>

6 months agortppassthroughpay: ensure buffer is writable before mapping writable
Matthew Waters [Thu, 12 Dec 2024 01:05:04 +0000 (12:05 +1100)]
rtppassthroughpay: ensure buffer is writable before mapping writable

It is entirely possible that the incoming buffer into _chain() is not writable
and will result in a critical when trying to map().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8131>

6 months agoanalytics: add rotation to object detection mtd
Oskar Fiedot [Wed, 11 Dec 2024 10:53:47 +0000 (11:53 +0100)]
analytics: add rotation to object detection mtd

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7938>