Compare commits

...

937 Commits

Author SHA1 Message Date
acu
6422c7f343 added comments 2025-09-01 16:44:40 +02:00
052ce3ca15 delete Debug 2025-09-01 16:44:40 +02:00
acu
840e5b4dd1 opencl gpu acceleration tested - successful 2025-09-01 16:44:40 +02:00
0f0ddbb776 changed variable types in remap function in gstcameraundistort.cpp to support gpu acceleration - It still needs to be tested on the ACU! 2025-09-01 16:44:40 +02:00
Elias Rosendahl
75652a481a Add Execution Provider OpenVINO 2025-09-01 16:44:39 +02:00
Santosh Mahto
5186341c28 gstanalytics : Add tensor decoder element for yolo detection models
Existing tensor decoder has been bifurcated into two seperate gst
element as:

`yoloodv5tensordecoder`: decodes tensors output(masks) from detection-only
models e.g yolov8s.onnx

`yolsegv8tensordecoder`: decoder tensors output(masks and logits) from
segementation models e.g FastSAM or yolov8s-seg
2025-09-01 16:37:15 +02:00
Daniel Morin
96ac4c9a43 tensordecoders: rename element
- yolotensordecoder replaced with yolov8segtensordecoder
2025-09-01 16:36:41 +02:00
Daniel Morin
8f08bafa5d tensordecoders: address MR comments 2025-09-01 16:36:41 +02:00
Daniel Morin
3f3cfc0c91 tensordecoders: Remove object locking in properties accessors 2025-09-01 16:36:41 +02:00
Daniel Morin
a194dcc293 tensordecoders: add property label-file to exemple 2025-09-01 16:36:41 +02:00
Daniel Morin
64e0805126 tensordecoder: Improve class retrieval
- Optimize the way to retrieve class with maximum confidence. Avoir multiple
  pass.
- Add support for label files
2025-09-01 16:36:41 +02:00
Santosh Mahto
07920e7122 gst-analytics : Adapt and Rename fastsamtensordecoder to yolo based.
YOLOv8 model have same tensor output format as FastSAM, so for better
generalization rename fastsamtensordecoder to yolotensordecoder. This
also requires code adaptation to support Yolo based model.
2025-09-01 16:36:41 +02:00
Olivier Crête
f967d58093 fastsamtensordecoder: Set mask resolution based on model output 2025-09-01 16:34:56 +02:00
Daniel Morin
7aa0319af6 fastsamtensordecoder: Add FastSAM tensor decoder
Co-authored-by: Vineet Suryan <vineet.suryan@collabora.com>

# Conflicts:
#	subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json
#	subprojects/gst-plugins-bad/gst/tensordecoders/gsttensordecoders.c
#	subprojects/gst-plugins-bad/gst/tensordecoders/meson.build
2025-09-01 16:34:56 +02:00
Tim-Philipp Müller
680b687639 csharp: add trailing spaces to match bindings generator generated files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9623>
2025-08-30 20:43:07 +01:00
Tim-Philipp Müller
dd483d3e88 csharp: Gst: update for miscellaneous other core additions in 1.28
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:29 +00:00
Tim-Philipp Müller
803bde32dc csharp: GstSdp: add API new in 1.28
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:29 +00:00
Tim-Philipp Müller
de0a6cfd20 csharp: GstWebRTC: add API new in 1.28
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:28 +00:00
Tim-Philipp Müller
83351aed41 csharp: Gst: add LogContext API new in 1.28
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:27 +00:00
Tim-Philipp Müller
b2daa4400d csharp: GstRtspServer: update for new API in 1.28
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:27 +00:00
Tim-Philipp Müller
3765169973 csharp: Gst: add new value hash API new in 1.28
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:26 +00:00
Tim-Philipp Müller
c7c5f0e1d5 csharp: GstVideo: update for new format defines in 1.28
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:25 +00:00
Tim-Philipp Müller
b697c7fafd csharp: Gst: update for miniobject is_writable() and make_writable() changes in 1.28
These were defines before and are now inline functions, so
were probably not picked up before because of that.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:25 +00:00
Tim-Philipp Müller
acb903186f csharp: GstNet: add new gst_net_client_clock_deinit() API in 1.28
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:24 +00:00
Tim-Philipp Müller
9873de8d73 csharp: GstBase: update for new aggregator and baseparse API in 1.28
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:23 +00:00
Tim-Philipp Müller
b1c7203059 csharp: GstApp: add gst_app_sink_pull_object() and _try_pull_object()
This API was added in 1.20. Unsure if it had been omitted on
purpose or if it's just an oversight.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:22 +00:00
Tim-Philipp Müller
ae7a5eff7c csharp: GstApp: update for new 1.28 API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:22 +00:00
Tim-Philipp Müller
246bd61b07 csharp: update gstreamer version constants
Some were not updated, some had formatting issues.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9620>
2025-08-30 07:18:21 +00:00
stefan-dangl
a17c566c7e docs: Fix negotiation documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9618>
2025-08-28 20:55:33 +00:00
Stéphane Cerveau
0b26bebe35 vkdecoder-private: manage existing dpb pool
When the decoder wants to recreate the dpb pool
on resize event for example, an existing dpb pool
might exist, so it should be kept if the caps
are equal or destroy for new caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9614>
2025-08-28 08:35:57 +00:00
Jan Schmidt
c086c83ac4 rtspsrc: Prefer an empty SET_PARAMETER call for keep-alive
In RTSP 2.0, they started recommending that clients use an
empty SET_PARAMETER request as the preferred keep-alive mechanism
as all cameras must support that method. It also works
for RTSP 1.0, so use it as the preferred method unconditionally.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9577>
2025-08-28 00:46:19 +00:00
Jan Schmidt
492a420fa9 rtspsrc: Send RTSP keepalives in TCP/interleaved modes
When rtspsrc is using an interleaved connection to the camera,
it will continously receive a stream of tunnelled RTP packets
from the server, so the rtspconnection doesn't return ETIMEOUT
and trigger the keepalive. Add a check on the RTSP timer
and send the keepalive whenever we haven't sent a message to
the server in some time.

Fixes problems with some cameras that don't see the RTCP traffic
as sufficient proof of liveness, when using TCP/HTTP tunnelled
modes

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9577>
2025-08-28 00:46:19 +00:00
Nicolas Dufresne
7205433549 video: pool: Fix pool size configuration for DMA DRM
Now that VideoPool accept DMA DRM, it is quite likely that the size does not get
provided in the configuration even if the format have a matching GstVideoFormat.

Fix this by reporting back the minimum expected size in the configuration. This
allows the configuration handshake to succeed.

Fixes regression caused by !9345

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9600>
2025-08-27 15:30:22 +00:00
Víctor Manuel Jáquez Leal
5e995b2b21 vulkanh26xdec: fix discont state handling
It fixes a couple tests in fluster for H.265 decoding.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9610>
2025-08-27 11:32:32 +00:00
Stéphane Cerveau
90dc0f1313 vulkan: tests: remove/update ci comments
Since previous commit, the CI can now run vulkan
tests. Remove or update the comments related to CI.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9416>
2025-08-27 10:50:57 +00:00
Stéphane Cerveau
b2eeb6d6d3 ci: enable vulkan tests in validate
As CI now supports llvm 18 and mesa 24.1 which
allow to use properly lavapipe in the CI, the vulkan
ci tests have been removed from the validate blacklist.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9416>
2025-08-27 10:50:56 +00:00
Xavier Claessens
13eed32842 gst: Add _take and _steal to more mini objects
Those are simple wrappers around mini object API, similar to
what GstEvent does.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9595>
2025-08-26 19:23:55 +00:00
Vivian LEE
5801dd0593 x265: Fix duplicate SEI at startup IDR frame problem
x265 encoder_headers return headers with SEI after encoding the frame,
while the output frame also contains SEI so two identical header
blocks appeared.
Cache the headers at init, leaving only a single copy in the stream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9604>
2025-08-26 06:56:07 +00:00
Thibault Saunier
321601f069 ges: validate: Fix race condition in deeply nested timeline test
Fix race condition where wrong caps were sometimes received before
the last gap internal clip by setting explicit framerate in video
caps and adjusting test timing accordingly.

The test now uses framerate=1/1 with single buffer expectations
instead of relying on default 30fps timing that created timing
races with the internal gap clip processing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9608>
2025-08-25 15:22:29 +00:00
Sebastian Dröge
e8ab8eccae baseparse: Try harder to fixate caps based on upstream in default negotiation
Upstream might provide a width/height while downstream has the field but accepts
a range. gst_caps_fixate() would select the minimum value of that range later
but it would be more accurate to take the upstream value, at least if it's a
subset of what downstream accepts.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9593>
2025-08-24 10:32:02 +00:00
Robert Mader
c24dc93944 gl: Add support for the NV24 pixel format
For completeness - and because it came in handy while testing the format
in a related context.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9596>
2025-08-24 11:43:23 +02:00
Thibault Saunier
8d2612a056 ges: validate: Fix konwn issue synthax
It somehow passed undetected on the CI

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9602>
2025-08-23 13:21:21 +00:00
Thibault Saunier
5376a1d5e2 ges: validate: Respect the mute argument
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9602>
2025-08-23 13:21:20 +00:00
Sebastian Dröge
9f19e0e0a2 gst: Convert is_writable() / make_writable() macros to inline functions
Plus actual functions that are exported from the library.

Apart from improving type-safety, this also makes bindings more happy.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9588>
2025-08-23 12:42:12 +00:00
Daniel Morin
c2d83fabbd tensordecoders: fix wrong assumption in ultralightfacedetectortensordec
- UltraLightFaceDetection was assmuming only one TensorMeta could be attach to
  buffer. We need to look at all TensorMeta attach to the buffer and check for
  the one it support.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9564>
2025-08-22 23:10:31 +00:00
Daniel Morin
3116ecc970 analytics: update gir
- update gir file

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9564>
2025-08-22 23:10:31 +00:00
Daniel Morin
3eefb6c5db analytics: always add GstTensorMeta
Always add GstTensorMeta to buffer instead of re-using existing GstTensorMeta
when it's already present. The reason for the change is when we have cascaded
inference elements overwriting (tflite) or leaking (ONNX) GstTensorMeta when we
have cascaded inferences. We didn't create and API to append to GstTensorMeta
and I think it's more convenient to have a new GstTensorMeta for each
inferences. It's also more clear that a group of tensor was produced by one
inference but doesn't limit tensordecoders from using tensors produced by
multiple inference. I don't see much value in having all tensors data always
inside one GstTensorMeta since appending would mean re-allocation of the tensors
array anyway.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9564>
2025-08-22 23:10:31 +00:00
Seungha Yang
0f4bddc9a9 wasapi2: Add support for format negotiation
Enumerate supported formats during open so that src/sink can
report them via get_caps(). The format is then fixated and
initialized on acquire(), allowing users to select their
preferred format

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9586>
2025-08-22 22:10:28 +00:00
Seungha Yang
d9279a5145 wasapi2: Enumerate supported shared mode formats
... and report it via device provider property

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9586>
2025-08-22 22:10:28 +00:00
Seungha Yang
c97ed1e6f6 wasapi2: Workaround for S24_32LE format mismatch
Since Windows 24bit-in-32bit format is not supported
by GStreamer (Windows one is MSB-aligned), converts format
in ringbuffer using SSE2.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9586>
2025-08-22 22:10:28 +00:00
Seungha Yang
0d94713288 wasapi2: Demote S24_32LE in exclusive-mode format ordering
Some endpoints accept 24-bit in 32-bit PCM (S24_32LE) in exclusive mode
but playback at very low volume. Until the root cause is identified,
push S24_32LE to the end of the candidate list

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9586>
2025-08-22 22:10:27 +00:00
Seungha Yang
f2aabd6a71 wasapi2: Add support for exclusive mode device switching
Because of APO/OS mixer bypass in exclusive mode, we should
convert samples if new device has different format.
The conversion with additional buffering is implemented in this patch

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9586>
2025-08-22 22:10:26 +00:00
Seungha Yang
4257cd8546 wasapi2: Fix process loopback device init
Fix AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM flag usage

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9586>
2025-08-22 22:10:26 +00:00
Seungha Yang
18b5398960 wasapi2: Add support for exclusive mode
Add "exclusive" property and try exclusive mode streaming

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9586>
2025-08-22 22:10:25 +00:00
Seungha Yang
370499875c wasapi2: Probe exclusive mode formats
... and report it via device provider props

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9586>
2025-08-22 22:10:25 +00:00
Stéphane Cerveau
34a009d85c tests: add vulkan AV1 encode test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8841>
2025-08-21 17:42:47 +00:00
Stéphane Cerveau
167e41c343 vulkan: add basic AV1 encode support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8841>
2025-08-21 17:42:47 +00:00
Julian Bouzas
ea133d97a0 lcevcdec: Support all available formats
RGB and GRAY formats are only placeholders in LCEVCDec and therefore are not
supported yet.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9463>
2025-08-21 14:00:55 +00:00
Julian Bouzas
3fc37b90e1 lcevcdec: Remove unneeded LCEVC 2.0.0 workaround
This is not needed anymore as the min version for LCEVCdec is 4.0.1

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9463>
2025-08-21 14:00:55 +00:00
Julian Bouzas
30aa1e84e4 lcevcdec: Handle pixel aspect ratio and crop size correctly
LCEVCdec supports different pixel aspect ratios other than 1/1. This change
forwards the pixel aspect ratio of the base picture to the LCEVC decoder,
and also updates the output pixel aspect ratio caps base on the one from the
enhanced frame.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9463>
2025-08-21 14:00:55 +00:00
Julian Bouzas
d66213bfa3 lcevcdec: Peek the decoder for output resolution
The output resolution is not always twice as big as the input resultion divided
by the pixel aspect ratio. This is the case for LCEVC '0D' mode, where the
output resolution is the same as the input resolution, and the only enhancement
is the picture being clearer.

This patch uses LCEVC_PeekDecoder() after sending the LCEVC enhancement data to
know what the output resolution will be before allocating the output picture.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9463>
2025-08-21 14:00:54 +00:00
Julian Bouzas
3208d6c62a lcevcdec: Fix LCEVC picture access flags
Even though the LCEVC decoder works fine without this, it is recommended to
set read access to base pictures that are sent to the decoder, and write access
to enhanced pictures that are received from the decoder.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9463>
2025-08-21 14:00:54 +00:00
Julian Bouzas
265b69520a lcevcdec: Fix width type typo
This was always meant to be gint instead of gint32.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9463>
2025-08-21 14:00:53 +00:00
Vivienne Watermeier
54d28569b2 baseparse: don't clear most sticky events after a FLUSH_STOP event
Clearing sticky events - besides EOS, STREAM_GROUP_DONE, and SEGMENT -
risks losing them if a flush occurs before we get another buffer.

Also adds a unit test: parser_sticky_events_after_flush

Fixes #4193

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9506>
2025-08-21 11:00:36 +00:00
Víctor Manuel Jáquez Leal
fc647552fa vulkan: enable video maintenance2 for inline session parameters
.. in decoders.

Inline session parameters allows to not create session parameters handlers for
every new stream parameters (such as SPS and PPS for H.264, for example), but
instead to pass them as a chained structure in the decoding main structure. This
is completely align with GStreamer decoder base classes.

Even that the previous approach is kept, if the devices doesn't support video
maintenance2, it shows a lot of validation errors.

Also it was required to add another parameter when enabling extension to verify
if the extension is linked with a device feature and if it is enabled.

Bump Vulkan API (and driver version for both decoders and encoders) to 1.4.306

Also bumped the ABI_CHECK_TAG because the CI finally catches up with the vulkan
video symbols that are not exposed by a public header (tough they are binary
public).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9585>
2025-08-21 05:22:19 +00:00
Víctor Manuel Jáquez Leal
8ce2ed05ac vkvideo-private: remove unused guards
Since this file is compiled only if vulkan video support is enabled with the
proper vulkan headers version.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9585>
2025-08-21 05:22:19 +00:00
Víctor Manuel Jáquez Leal
1d60643a1a vkdevice: check for features when enabling extensions
Some extensions need to have enabled certain feature in the device. This patch
does that check by adding a new field in the extension list which is a function
that can be mapped to gst_vulkan_physical_device_has_feature_*() functions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9585>
2025-08-21 05:22:18 +00:00
Víctor Manuel Jáquez Leal
caae3b07e1 vkimagesbufferpool: another usage for non-independent profile flag
Fix validation issue VUID-VkImageCreateInfo-flags-08329 on old RADV hardwware.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9591>
2025-08-20 20:11:24 +02:00
Víctor Manuel Jáquez Leal
48dd6aee51 vulkanh265dec: fix validation layer complain
Silence the validation VUID-VkImageMemoryBarrier2-srcAccessMask-03915

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9591>
2025-08-20 20:11:18 +02:00
Ian Napier
aee742223c decklinkvideosrc: fix decklinkvideosrc becomes unrecoverable if it fails to start streaming
See #2611

When transitioning to PLAYING we call IDeckLinkInput::StartStreams() (via GstDecklinkInput::start_streams). This can
fail for various reasons, including if the hardware device is already in use.

Previously, we logged StartStreams() failure as an element error but otherwise continued to successfully transition to
PLAYING. Now, if StartStreams() returns an error we fail the state change.

If StartStreams() fails then a subsequent call to StopStreams(), when transitioning PAUSED to READY, will also fail.

Previously, if StopStreams() failed then the state change also failed. Unfortunately this prevented the element from
later being disposed, which in turn meant the associated hardware resources was never freed. Consequently, if a
decklinkvideosrc failed to transition PAUSED to READY, then the associated hardware device could not subsequently be
used by any other decklinkvideosrc.

Now, we log an element error if StopStreams() fails but otherwise consider the state change to have succeeded. This
means that the element can be disposed and the associated hardware resource released.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9578>
2025-08-20 11:38:03 +00:00
Víctor Manuel Jáquez Leal
6d53576194 vkimagebufferpool: don't use independent profile flag for some usage
VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR, among others, needs the video profile
to use.

The patch clears the validation issue  VUID-VkImageCreateInfo-flags-08331

This is a continuation of !9550

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9570>
2025-08-20 06:37:03 +00:00
L. E. Segovia
2dd28e36e6 glib: update to 2.82.5 and backport shebangs patch
Fixes Meson 1.8 and higher's detection of the shebang for glib-mkenums
and glib-genmarshal.

See https://github.com/mesonbuild/meson/issues/14896

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9561>
2025-08-19 22:21:15 +00:00
Thibault Saunier
c8db458ce9 ges: Set framerate caps filter on the last time effect
The responsibility to change the framerate to the one
requested on the VideoTrack should always be the last time effect in it.

This introduces a new `capsfilter` at the end of video effect that
will be in passthrough most of the time.
t show

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9013>
2025-08-19 17:11:51 +00:00
Thibault Saunier
fac2d62054 validate: videorate: Update tests to use fakevideodec and fix race condition
There was a case where we could end up having more buffers on the sinkpads
than what was expected, depending on timings. This ensure that we have a fixed
number of buffers produced by the testsrc, and we play until EOS.

Replace theora encoder/decoder chain with fakevideodec for testing
QoS handling in videorate rate property tests. This simplifies the
test pipeline and removes dependency on theora codecs.

Also adjust test expectations to match RGBA format output from
fakevideodec instead of I420 from theoradec, and limit buffer
counts to make tests more deterministic.

This also fixes the rate we set for 2.0 test as we were actually testing
0.5 there.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9013>
2025-08-19 17:11:51 +00:00
Thibault Saunier
efdc9b1aea validate: scenario: Clear wait_message_action on stop
When executing a stop action, ensure that any pending wait_message_action
is cleared and unreffed to prevent it from being executed after the
scenario has been stopped. This prevents potential crashes or unexpected
behavior when stopping a scenario that has a pending wait action.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9013>
2025-08-19 17:11:51 +00:00
Thibault Saunier
fe6ad6f370 validate: scenario: Fix NULL context usage in action done callback
Use the local context variable that was retrieved earlier instead of
action->priv->context which is always NULL at this point since we
reset it right before. This ensures we invoke the callback on the
correct context.

And make sure that the wait message still has a reference when setting done
otherwise it is unref before calling the context invoke function

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9013>
2025-08-19 17:11:51 +00:00
Thibault Saunier
f99bf2abee validate: Add support for overrides field in meta structure
Add support for an 'overrides' field in validatetest meta structures that
allows changing issue severity levels during test execution. This enables
tests to pass when encountering known issues by downgrading their severity.

The overrides field accepts an array of change-severity structures with:
- issue-id: The issue ID to override
- new-severity: New severity level (critical, warning, issue, ignore)

Currently only change-severity overrides are supported. The feature follows
the same pattern as expected-issues and is only available in .validatetest
files, not .scenario files.

Includes comprehensive documentation and a test case demonstrating the
functionality.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9013>
2025-08-19 17:11:50 +00:00
Thibault Saunier
0b745f67db videorate: Convert input ts to output scale to close segment
Otherwise we compare values that are in two different time scales.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9013>
2025-08-19 17:11:50 +00:00
Thibault Saunier
e697fe98eb videorate: Bring all timestamp in the runtime scale when applying rate to QoS
Otherwise the timescale won't match and we might end up with totally broken
QoS events.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9013>
2025-08-19 17:11:50 +00:00
Thibault Saunier
51d43529c3 videorate: Refactor so upstream/downstream time domains are properly decoupled
Refactor the videorate element to properly separate upstream and downstream
time domains when the `rate` property is set.

The previous implementation had issues with time domain conversions when
changing rates, especially during seeks after which we were basically confusing
input and output timestamps.

This also fixes rate changes as we are now tracking the wanted input timestamps
and not confusing them with the output, so this way we do not drop buffers when
the rate is changed while playing, meaning that the related tests have been
fixed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9013>
2025-08-19 17:11:49 +00:00
Thibault Saunier
242b4fa931 videorate: Handle the case where the base_ts is > qo.timestamp
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9013>
2025-08-19 17:11:49 +00:00
Thibault Saunier
d21c1f13d1 videorate: Do not fail setting caps on flushing pad
Avoiding to error out when flushing "at the wrong time" for example.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9013>
2025-08-19 17:11:49 +00:00
Thibault Saunier
3715b0b7b8 debugutils: Use SHOW_FULL_PARAMS when GstDotsTracer is active
When the dots tracer is detected among active tracers, switch from
SHOW_ALL to SHOW_FULL_PARAMS to prevent parameter ellipsization.
The dots tracer is designed to work with gst-dots-viewer which can
handle long parameter values, so we preserve the full text in dot files.

This improves the viewing experience when using the dots tracer with
the gst-dots-viewer tool.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9547>
2025-08-19 15:34:45 +00:00
Thibault Saunier
e87b3b0359 tracerutils: keep tracers that do not register to any hook alive as others
This checks if a tracer has registered to any hook after
initialization and automatically registers it to the "none" hook if not
so the lifetime of those tracer is the same as tracer who registers to hooks.

For example the `dots` tracer was being freed right after initialization
which was unexpected.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9547>
2025-08-19 15:34:45 +00:00
Thibault Saunier
775187188d dots-viewer: Reindent and remove unused code in jquery.graphviz.svg.js
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9547>
2025-08-19 15:34:44 +00:00
Thibault Saunier
d3ad6136ef dots-viewer: Refactor JavaScript into modular architecture
Split monolithic embedded JavaScript in overlay.html into dedicated modules:
- tooltip.js: Custom tooltip functionality with interactive copy/paste mode
- pipeline-navigation.js: Clickable pipeline-dot references for navigation
- text-ellipsizer.js: Text ellipsizing with tooltip integration
- svg-overlay-manager.js: Main coordinator orchestrating all functionality

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9547>
2025-08-19 15:34:44 +00:00
Thibault Saunier
4d5fa1c43b dots-viewer: make pipeline dot references clickable for navigation
When GStreamer pipeline graphs contain references to other pipeline dot files,
users should be able to navigate between related pipeline views by clicking
on these references. This enables exploring complex pipeline hierarchies
where one pipeline references sub-pipelines.

The implementation detects text elements containing pipeline-dot references,
styles them as web links, and handles click events to navigate to the
referenced pipeline while preserving existing text selection and drag
functionality for other elements.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9547>
2025-08-19 15:34:44 +00:00
Thibault Saunier
28684cba1a dots-viewer: Make text copyable while preserving drag functionality
Enable text selection on SVG text elements by changing CSS user-select
properties from 'none' to 'text' and cursor from 'default' to 'text'.

Add JavaScript event handling to intercept mousedown events on text
elements, preventing dragscroll interference while allowing normal text
selection. This preserves the existing drag-to-pan functionality for
non-text areas while making text elements selectable and copyable.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9547>
2025-08-19 15:34:44 +00:00
Olivier Crête
e37d5b7b74 rtpbasedepayload: Avoid potential use-after free
Clear the pointer after freeing the reference.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9579>
2025-08-19 09:15:03 -04:00
Havard Graff
162c4b0008 buffer: Fix gst_buffer_memcmp() / gst_buffer_memset() using wrong memory index
Regression from 160205b483dc7a1ae5da60d80a722837cf7c01d0.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9565>
2025-08-19 08:18:17 +00:00
Vivian LEE
c4439a5b55 adaptivedemux2: fix crash due to log
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4588

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9573>
2025-08-19 07:20:13 +00:00
Thibault Saunier
48a2be6d6a validate: http-actions: Replace GUri with GstURI for GLib 2.64 compatibility
GUri was added in GLib 2.66, but GStreamer claims to build with 2.64.
Replace GUri usage with equivalent GstURI functions to maintain
backward compatibility.

Fixes #4607

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9572>
2025-08-19 06:49:41 +00:00
Víctor Manuel Jáquez Leal
c63d3b5cb4 tests: fix queues for vulkan h26x encoders
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9571>
2025-08-18 19:46:26 +02:00
Sebastian Dröge
b051285e03 python: Handle buffer PTS/DTS/duration/offset/offset-end as unsigned long long
Previously these fields were truncated to 32 bits on 32 bit platforms and
64 bit Windows because of using `unsigned long`.

Thanks to Tim Williams for reporting and debugging this issue.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9567>
2025-08-18 15:43:50 +00:00
Jan Alexander Steffens (heftig)
e40a037b67 decodebin3: Update stream tags
parsebin does this, so should decodebin3.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9557>
2025-08-18 09:43:39 +00:00
Sebastian Dröge
58a48d92bb value: Consider NULL caps in array a fixed value
There's no requirement for caps in arrays to be non-NULL and NULL is clearly a
fixed, single value.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9522>
2025-08-18 09:05:36 +00:00
Víctor Manuel Jáquez Leal
c1d0fb0165 vulkanh26xdec: fix debug category name
This is a regression from merge request !78011

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9560>
2025-08-16 16:33:14 +00:00
Víctor Manuel Jáquez Leal
9c93152599 vulkanh26xdec: re-negotiate after FLUSH
Vulkan decoders also have the same issue as VA decoders fixed in !9457, where
FLUSH event doesn't renegotiate downstream the pipeline.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9560>
2025-08-16 16:33:14 +00:00
Víctor Manuel Jáquez Leal
101722d477 vkimagebufferpool: support video profile independent images
With video_maintenance1 extension is possible to create images independent of a
the video profile list, under that image will be processed.

With that extension is possible to share the same image for dynamic transcoding.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9550>
2025-08-16 15:36:02 +02:00
Adrian Perez de Castro
2ebb835381 alsa: Fill in alsa.name for PCM sinks
The device description may be used as the "alsa.name" property, to match
what is done for card devices.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9534>
2025-08-15 20:54:16 +00:00
Adrian Perez de Castro
aae0ed6eb2 alsa: Enumerate output-only PCM sinks
Change the logic to skip only devices which have "Input" as their IOID. The ALSA
Input/Output identifier (IOID) it may be either "Input", "Output", or NULL; with
the latter meaning that the device supports both input and output.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9534>
2025-08-15 20:54:16 +00:00
Jan Alexander Steffens (heftig)
fbe7a86973 tests: cccombiner: Test durationless buffers
Crashes without the previous fix.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9415>
2025-08-15 00:12:03 +00:00
Jan Alexander Steffens (heftig)
69ddd8c3c7 cccombiner: Don't crash when first frame has no duration
Aggregate again so the code above can determine the end time or EOS.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9415>
2025-08-15 00:12:03 +00:00
Jan Alexander Steffens (heftig)
1428a86783 cccombiner: Avoid dividing by zero framerate
This was broken in b29262e662b86cd76225894f7504ee505125fa49.

The `gst_util_uint64_scale` emitted a critical warning and returned
`GST_CLOCK_TIME_NONE`, so beyond removing the warning this fix does not
change behavior.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9415>
2025-08-15 00:12:03 +00:00
Adrian Perez de Castro
71619ec72b oss: Check for element types when reconfiguring
Make gst_oss_device_reconfigure_element() check whether the passed element
type matches that of the device itself before attempting to apply the new
configuration.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9558>
2025-08-14 23:54:33 +03:00
Adrian Perez de Castro
9c166d6dfa alsa: Check for element types when reconfiguring
Make gst_alsa_device_reconfigure_element() check whether the passed element
type matches that of the device itself before attempting to apply the new
configuration.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9558>
2025-08-14 21:44:59 +03:00
Seungha Yang
7a48a0036f wasapi2: Warm up capture audio client on open
If the endpoint is idle, the first IAudioClient::Start() call
may take a long time to return. Start/stop the capture client
on open to reduce latency of subsequent Start() calls.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9553>
2025-08-14 12:38:41 +00:00
Seungha Yang
cb7dcff69e wasapi2sink: Do not push too large preroll buffer to endpoint
To avoid startup glitches, a silent buffer is pushed to
render endpoint, but pushing too large silent buffer will
introduce unnecessary latency. Limit it to a single period worth data.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9553>
2025-08-14 12:38:41 +00:00
Víctor Manuel Jáquez Leal
71b787a39f vkdecoder-private: fix mistake from !9531
This was a very silent mistake.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9552>
2025-08-13 19:59:52 +02:00
Víctor Manuel Jáquez Leal
36b8b87b18 vk{decoder,encoder}-private: use API to check device version
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9552>
2025-08-13 19:59:52 +02:00
Ruben Gonzalez
cb9f1f2b8d gst-launch: clean unused local variable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9551>
2025-08-13 16:18:22 +02:00
Víctor Manuel Jáquez Leal
ad03600a0c test: vkimagebufferpool: silence validation
The validation complained with

VUID-VkImageCreateInfo-usage-requiredbitmask]:
vkCreateImage(): pCreateInfo->usage is zero.

This patch force to use the internal defaults in vkimagebufferpool if no usage
is defined.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9544>
2025-08-13 15:24:05 +03:00
Víctor Manuel Jáquez Leal
9be96a7a88 vkphysicaldevice: silence validation for features
With merge request !9438 the validation layer started to complain with
VUID-VkDeviceCreateInfo-pNext-02829

This patch fixes this ill-usage of Vulkan API, by removing the feature enabling
of sampler ycbcr conversion, since it was promoted since Vulkan 1.1, and in
GStreamer is only used in Vulkan Video operations, which are only enabled in
Vulkan 1.3+.

Also, these features detection and enabling were moved to a function called when
filling the physical device data, in order to check the API version of the
device driver before adding the enabling of the feature.

Finally, the getters were adapted to use the version feature structure if the
device driver version matches.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9544>
2025-08-13 15:24:05 +03:00
Mathieu Duponchelle
75590bfeac aggregator: implement start-time-selection=now
This is actually the only correct mode when live, let's at least expose
an option for it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9394>
2025-08-13 14:13:22 +03:00
Andrey Khamukhin
e94830c79d videorate: don't hold the reference to the buffer in drop-only mode
Pushing the buffer via gst_pad_push () in transform_ip () function
causes downstream elements to process the buffer with a reference
count > 1. This leads to performance issue if there are downstream
elements which modify the buffer memory.

However, in drop-only mode this reference is not required.

So, let GstBaseTransform push the buffer in drop-only mode.

Fixes #4258

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9532>
2025-08-13 08:47:27 +00:00
Víctor Manuel Jáquez Leal
9f8885c19c vkimagebufferpool: fix regression from !9492
On commit 1a7f0f162726f07f5723e0c1f43f2c6725d07c80 a regression were introduced
by omitting to initialize the profileCount field.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9545>
2025-08-12 20:15:49 +02:00
Víctor Manuel Jáquez Leal
f7c1eae481 vkencoder-private: remove duplicated definition
They are already declared in gstvkvideo-private.h

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9531>
2025-08-12 09:37:08 +00:00
Víctor Manuel Jáquez Leal
8b5c83696b vulkan: remove spurious video extension checking
Since they are expected dependencies. If the specific codec extension is loaded,
that means that dependencies are loaded too.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9531>
2025-08-12 09:37:08 +00:00
Jan Schmidt
9317c0442b hlsdemux: Fix parsing of byterange and init map directives
Don't reuse the same offset and size variables when reading
the byterange out of a MAP directive, as it can overwrite
values from a pending BYTERANGE directive for the next
fragment URI.

Fixes problems where the EXT-X-MAP directive has been written
into the playlist between an EXT-X-BYTERANGE and the fragment
URI it applies to.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9533>
2025-08-12 02:47:46 +00:00
Jan Schmidt
cdf1338e6b hlsdemux2: Fix parsing of byterange and init map directives
Don't reuse the same offset and size variables when reading
the byterange out of a MAP directive, as it can overwrite
values from a pending BYTERANGE directive for the next
fragment URI.

Fixes problems where the EXT-X-MAP directive has been written
into the playlist between an EXT-X-BYTERANGE and the fragment
URI it applies to.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9533>
2025-08-12 02:47:46 +00:00
Elliot Chen
fd6168709c video: dma-drm: Add P016_LE format map
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9513>
2025-08-11 17:24:15 +00:00
Qian Hu (胡骞)
9943a6082c waylandsink: add some error handler for event dispatch
if wl client got last_error, wl_display_dispatch_queue_pending
will return -1, may lead to unhandled case, we should quit.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9511>
2025-08-11 16:39:19 +00:00
Seungha Yang
42758aac2c wasapi2: Tone down activation fail log
If there's no endpoint available, that failure is expected error

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9521>
2025-08-11 12:29:52 +00:00
Seungha Yang
e0146536ab wasapi2: Pass correct data flow value to GetDefaultAudioEndpoint()
Respect requested data flow value

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9521>
2025-08-11 12:29:51 +00:00
Sebastian Dröge
a052257c03 gstreamer: Make sure to zero-initialize the GValue before G_VALUE_COLLECT_INIT
G_VALUE_INIT does not zero-initialize the data member as automatic
zero-initialization only happens for non-union types. For union types the
initialized value is undefined.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9525>
2025-08-11 08:39:53 +00:00
Sebastian Dröge
9d6cd03221 ptp: Fix a new Rust 1.89 compiler warning on Windows
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9527>
2025-08-11 07:49:48 +00:00
Sebastian Dröge
57df39fb4c ci: Update to cargo-c 0.10.15
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9503>
2025-08-10 19:11:49 +00:00
Sebastian Dröge
78c2140db7 ci: Update to Rust 1.89
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9503>
2025-08-10 19:11:49 +00:00
Xavier Claessens
6a9da23bbf mpegtsmux: Caps event fails with stream type change error
If mpegtsmux receives the same caps again, it wrongly claims the stream
type changed:

  error: Stream type change from 06 to 8f not supported

This adds a unit test that demonstrate the issue in the very hacky way.
I have seen this happening with the below pipeline when upstream caps
changes. Since the caps filter fixates the caps received by opusenc and
mpegtsmux, the stream type cannot change.

  ...
  ! audioconvert
  ! audio/x-raw,format=S16LE,channels=2,rate=48000
  ! opusenc bitrate=128000
  ! mpegtsmux

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9430>
2025-08-10 19:31:52 +10:00
Jan Schmidt
80949e1ca6 mpegtsmux: Use 'internal' stream_type to detect codec changes
The TsMuxStream internal_stream_type field stores the original
'full' stream type (such as Opus), while the stream_type field
stores the value that will actually be written into the MPEG-TS
packets according to the codec mappings. When checking if
input caps are changing stream type, check the original type.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9430>
2025-08-09 11:42:29 +00:00
Seungha Yang
1cba38145f wasapi2: Fix default render device probing
Fixing typo

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9517>
2025-08-08 18:39:51 +00:00
Sebastian Dröge
99ad6972c2 gstreamer: Disable miniobject inline functions for gobject-introspection for non-subprojects too
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9518>
2025-08-08 14:52:44 +00:00
Víctor Manuel Jáquez Leal
a62fa5d66e vkphysicaldevice: detect and dump Vulkan 1.4 properties and features
In order to link videomaintenance1, and others to come, without knowing if
Vulkan 1.4 features are chained in the device properties structure, a static and
inlined function was added in gstvkphysicaldevice-private.h. It was added in a
header file to avoid compiler warnings if it's not used because of old Vulkan
headers.

Also the value dump videomaintenance1 was moved to another function to pack
there all the future features to query which aren't part of a Vulkan release
yet.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9492>
2025-08-08 11:48:25 +00:00
Víctor Manuel Jáquez Leal
c84982b5c9 vulkan: fine grained access to API
This patch is the payment to my technical debt.

The symbol GST_VULKAN_HAVE_VIDEO_EXTENSIONS is defined at compilation-time if
the user requests for the usage of the Vulkan Video extensions. And we used this
symbol for anything related with Vulkan Video. But this is not the smartest
approach.

The rule should be:

- If the code allocates Vulkan Video resources, use
  GST_VULKAN_HAVE_VIDEO_EXTENSIONS

- Otherwise, use the Vulkan's guard for the used API

In this way, API version bumps will be easier.

Also, this commit marks the end of GST_VULKAN_HAVE_VIDEO_EXTENSIONS guarded code
for readability.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9492>
2025-08-08 11:48:25 +00:00
Víctor Manuel Jáquez Leal
92e2c5b29d vkoperation: refactor for fine grained guards and clean ups
Added a static inlined function in gstvkphysicaldevice-private.h for looking up
a specific vulkan structure in a chain.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9492>
2025-08-08 11:48:25 +00:00
Víctor Manuel Jáquez Leal
1a7f0f1627 vkimagebufferpool: refactor common code
Both gst_vulkan_image_buffer_pool_set_config() and
gst_vulkan_image_buffer_pool_alloc() functions share the same code to create
Vulkan images for different purposes.

This patch refactor them in a new helper function that creates the images and
stores them in a buffer if it's passed as output parameters, such as the
offsets.

This patch also adds specifics guards for Vulkan's symbols for better grained
API usage, but also for prepare_buffer() the guard is set where the symbol is
used.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9492>
2025-08-08 11:48:25 +00:00
Víctor Manuel Jáquez Leal
f3f319a630 vkdevice: fine grained vulkan video extensions detection
The Vulkan Video extensions can be available, according to the specification,
since Vulkan 1.1, but with other extensions dependencies. That's why this patch
adds a field in the extension structure, which represents the extension
dependency that the specified extension requires. And they are specified by
Vulkan Video extensions.

This allow to have a single function to check if the extension can be enabled
both by optional extensions and video extensions.

Regardless that video extension can be loaded since Vulkan 1.1, they are rather
loaded since Vulkan 1.3, when synchronization2 was promoted, so it isn't
checked as video_queue dependency.

Finally, this patch checks for each guard symbol.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9492>
2025-08-08 11:48:24 +00:00
Víctor Manuel Jáquez Leal
80da022590 vulkan: private functions for physical device features
This is a continuation of !9483, but without back-porting.

Instead of checking the driver's API version to figure out if a physical device
feature is available and enabled, or even more, instead of checking for enabled
extensions in the driver, this patch adds private functions in the physical
driver to get the availability and enabling of features such as sampler ycbrc
conversion, synchronization2, timeline semaphore and video maintenance1.

And these new functions are used internally in the GstVulkanOperation object,
and the private object GstVulkanDecoder.

This approach is computationally cheaper, simpler and precise.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9492>
2025-08-08 11:48:24 +00:00
Sebastian Dröge
8921c6504b ptp: Fix new compiler warning with Rust 1.89
This still compiles with Rust 1.48 and newer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9512>
2025-08-08 13:14:30 +03:00
Jan Alexander Steffens (heftig)
5a6ceaf2f3 zbar: tests: Handle symbol-bytes as not null-terminated
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4592
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9510>
2025-08-08 07:28:26 +00:00
L. E. Segovia
265b488093 gobject-introspection: Fix introspection failing on Linux with subproject GLib
This is caused by RPATHs missing when glib, gobject, or gio are supplied by
uninstalled pkg-config modules (as opposed to directly in the command line).

Fixes #4561

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9509>
2025-08-08 07:01:49 +00:00
Nirbheek Chauhan
3f1e8835b8 docs: Initialize the debug category in class_init when possible
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9496>
2025-08-08 11:38:50 +05:30
Nirbheek Chauhan
e8e12db5f4 debug: Category init should happen in class_init when possible
plugin_init() will not get called if element/feature registration
happens manually, such as when using linking only specific plugin
features with gstreamer-full. That is possible when plugins contain
static features.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9496>
2025-08-08 11:38:50 +05:30
Sebastian Dröge
fdeca0767d av1parser: Don't error out on "currently" undefined seq-level indices
They might very well be defined in the future and that shouldn't affect the
parsing in any way. Specifically, ffmpeg with `av1_nvenc` seems to create
`GST_AV1_SEQ_LEVEL_7_3` currently and parsing such streams would fail otherwise.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9502>
2025-08-07 12:22:22 +00:00
Julian Bouzas
1b041d8114 lcevcdec: Set LCEVCdec min version to 4.0.0 and fix build
V-Nova's LCEVCdec SDK 4.0.0 was released with a small API change. This patch
fixes the 'lcevcdec' element so that it builds with the new version. For more
information see:

https://github.com/v-novaltd/LCEVCdec/blob/4.0.0/docs/v4_migration_guide.md

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9414>
2025-08-06 17:45:14 +00:00
Sebastian Dröge
8ea031b400 uridecodebin3: Add missing locking and NULL checks when adding URIs to messages
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4559

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9500>
2025-08-06 12:51:54 +00:00
Xavier Claessens
24356c099a audioconvert: Fix regression when using a mix matrix
This fixes regression introduced by commit da3a1011. When a mix matrix
is set, we still want to set the default channel-mask on output caps.

Fixes: #4579

Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9487>
2025-08-06 10:25:51 +00:00
Nirbheek Chauhan
a9f803247f device-monitor: Also accept utf8 in launch lines
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9494>
2025-08-06 07:05:11 +00:00
Nirbheek Chauhan
fe2db9df3d device-monitor: Fix criticals when dumping non-string values
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9494>
2025-08-06 07:05:11 +00:00
Tim-Philipp Müller
fe760ca71d ci: add rtsp-server valgrind job
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7811>
2025-08-05 23:24:39 +00:00
Víctor Manuel Jáquez Leal
573f401e58 vkvideoutils-private: make it private
Since we moved the GstVulkan generic decoder and encoder to private objects in
the library, there was not need to keep vkvideoutils public.

This patch turns it private and reduces the public API surface.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9493>
2025-08-05 19:44:36 +00:00
Thibault Saunier
8162ba6338 ges: docs: fix enum value extraction for enums with gaps
Handle enums like GstBaseTextOverlayHAlign that have missing values
by dynamically calculating the actual range needed and skipping
invalid enum values instead of creating placeholder entries.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9495>
2025-08-05 14:58:30 -04:00
Seungha Yang
6af0ea60c1 wasapi2: Always fallback to MMDevice if default device is unavailable
Automatic stream routing supported virtual device may not be
available for some reason, but can try default MMdevice

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:29 +00:00
Seungha Yang
2769f8ff44 wasapi2: Always probe default audio endpoint info
Regardless of GetActivateResult() return code, fill default
device information to device provider props

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:29 +00:00
Seungha Yang
fedced4017 wasapi2: Handle GetActivateResult failure
Even if GetActivateResult() succeeded, activation result can fail.
Checks output HRESULT code as well

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:29 +00:00
Seungha Yang
7651662fc9 wasapi2deviceprovider: Log device update details
... and add wasapi2deviceprovider debug category

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:29 +00:00
Seungha Yang
7d6d49a888 wasapi2enumerator: Retry on IMMDevice::Activate failure
Since the sequence of IMMDeviceEnumerator::EnumAudioEndpoints()
followed by IMMDevice::Activate() is not atomic, Activate() may fail
if the enumerated device becomes invalidated before probing.
In such cases, retry device probing

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:29 +00:00
Seungha Yang
df95f95206 wasapi2enumerator: Avoid racy device probing
IMMDeviceEnumerator may fire a series of callbacks even for a single
device plug/unplug event. To avoid redundant probing, start device
enumeration only after no further callbacks are received for 100ms.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:29 +00:00
Seungha Yang
e515b1aee8 wasapi2enumerator: Log IMMNotificationClient callback details
... and add wasapi2enumerator debug category

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9468>
2025-08-05 13:40:28 +00:00
Thibault Saunier
3fe0127a64 scripts: git-hooks: ci: Add GES children properties documentation check
Add a pre-commit hook that automatically checks if GES children properties
documentation is up to date when GES source files are modified. The hook
runs the document-children-props.py script and warns if the generated
documentation files have changes that need to be committed.

This ensures that children properties documentation stays synchronized
with code changes and prevents outdated documentation from being merged.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5987>
2025-08-05 12:48:38 +00:00
Thibault Saunier
b27bcf1751 ges: docs: Fix enum introspection in document-children-props.py
The script was failing with newer pygobject versions because the
__enum_values__ attribute has been removed. Updated to use proper
introspection by:

- Getting enum type from property default value
- Using enum_class.values for the first enum value (index 0)
- Creating other enum values with enum_type(i) constructor
- Extracting name and nick from enum values properly

Also fixed ruff linting issues:
- Removed unused imports and variables
- Used specific exception types instead of bare except
- Added noqa comment for gi import ordering

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5987>
2025-08-05 12:48:38 +00:00
Thibault Saunier
e8cb82137c ges: Update children properties documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5987>
2025-08-05 12:48:38 +00:00
Thibault Saunier
84580ebf08 ges: framepositioner: Make zorder controllable and expose it
And add a test for it

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5987>
2025-08-05 12:48:37 +00:00
Elliot Chen
a1faec5f47 glupload: check the return value when transforming caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9478>
2025-08-04 16:00:31 +00:00
Qian Hu (胡骞)
a626f74872 v4l2: fix memory leak for dyn resolution change
if resolution changed, old input state will not unref before
new state overwrite self->input_state

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9479>
2025-08-04 12:50:24 +00:00
Elliot Chen
a374bd51fb videopool: support parsing dma_drm caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9345>
2025-08-04 12:11:41 +00:00
Philippe Normand
ea69849cd8 webrtc: sdp: Validate ICE SDP attributes
According to https://datatracker.ietf.org/doc/html/rfc5245#section-15.4,
those attributes should contain only alpha-numerical (with / and + allowed),
should be less than 256 characters, the ufrag should be at least 4 characters
and the pwd should be at least 22 characters.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9485>
2025-08-04 10:22:24 +00:00
Philippe Normand
80e663d560 webrtc: sdp: Relax ice-ufrag and ice-pwd checks
According to RFC 8839 section 5.4, if two data streams have identical
"ice-ufrag"s, they MUST have identical "ice-pwd"s.

The previous code wasn't allowing different ice-ufrag values in bundled medias.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9485>
2025-08-04 10:22:24 +00:00
Philippe Normand
9e38ee7526 webrtc: stats: Set DTLS role and state on transport stats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9485>
2025-08-04 10:22:24 +00:00
Víctor Manuel Jáquez Leal
829de89122 vkphysicaldevice: enable sampler ycbcr, sync2 and timeline semaphore features
For the features VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
VkPhysicalDeviceSynchronization2Features and
VkPhisicalDeviceTimelineSemaphoreFeatures

The Vulkan specification states:

  If the `VkPhysicalDeviceXXXFeatures` structure is included in the `pNext`
  chain of the `VkPhysicalDeviceFeatures2` structure passed to
  `vkGetPhysicalDeviceFeatures2`, it is filled in to indicate whether each
  corresponding feature is supported. If the application wishes to use a
  `VkDevice` with any features described by `VkPhysicalDeviceXXXFeatures`,
  it **must** add an instance of the structure, with the desired feature members
  set to `VK_TRUE`, to the `pNext` chain of `VkDeviceCreateInfo` when creating
  the `VkDevice`.

And that was missing in the code.

Strangely, that functionality doesn't have a Valid-Usage ID assigned, so it
isn't caught by the validation layer.

This patch adds the structures in the physical devices to get them and later set
them in the device creation.

In order to link these features, videomaintenance1, and others to come, without
knowing if Vulkan 1.3 features are chained in the device properties structure, a
static and inlined function was added in gstvkphysicaldevice-private.h. It was
added in a header file to avoid compiler warnings if it's not used because of
old Vulkan headers.

Also the value dump videomaintenance1 was moved to another function to pack
there all these queried features.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9483>
2025-08-04 09:31:14 +00:00
Jan Schmidt
e653acc200 decodebin3: Don't error out for unknown streams in default selection
If there is only unknown stream-type streams in the current collection
don't post an error straight away. This fixes a problem with RTSP
cameras and legacy upstream collection building, if the first
stream that rtspsrc outputs is the ONVIF metadata track. That
happens often on bandwidth-constrained camera inputs, as the
video and audio will naturally take longer to arrive.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9433>
2025-08-04 06:14:00 +00:00
Nirbheek Chauhan
55f72b1840 gst-device-monitor: Add shell quoting for launch lines
Launch-lines will be pasted into a shell, and `gst_value_serialize()`
yields strings that will likely be interpreted by the shell. For
example:

`gst-launch-1.0 ... ! osxaudiosink unique-id="AppleUSBAudioEngine:BEHRINGER:UMC202HD\ 192k:12345678:1\,2"`

The shell will remove the double-quotes `"` but keep the `\ ` which
means the output of `gst_value_deserialize()` will not be the original
string, and the launch line will not work.

So let's use `gst_value_serialize()` only if the string is non-ASCII,
and if it's ASCII and needs quoting, we do some shell quoting.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9466>
2025-08-02 17:26:58 +05:30
Nirbheek Chauhan
5c14cb882e gst-device-monitor: Don't loop unnecessarily when printing properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9466>
2025-08-02 10:12:22 +00:00
Olivier Crête
4650a7a58f test glfilter: Make sure the meta are not copied twice
This only happens if there are no tags, so we use a custom meta to
check it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6212>
2025-08-01 16:30:01 -04:00
Olivier Crête
14493fa064 Revert "glcolorconvert: should copy metadatas from the incoming buffer"
This reverts commit 199b62570fd201fd67e41af1932d6ae19ead2b76.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6212>
2025-08-01 16:30:01 -04:00
Olivier Crête
c135020c5f random: Remove historical doc
This is about porting which happened over 20 years ago.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>
2025-08-01 16:00:20 +00:00
Olivier Crête
7ac6e8e1ec random: Remove historical LICENSE header
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>
2025-08-01 16:00:20 +00:00
Olivier Crête
0efbacf886 docs: Remove 0.11 plan
We're 10 years past.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>
2025-08-01 16:00:20 +00:00
Olivier Crête
f88e6781cd AUTHORS: Remove outdated files
They only contained historical contributors, the modern version is
to look at the git logs.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>
2025-08-01 16:00:20 +00:00
Olivier Crête
668d54f8fb MAINTAINERS: Update to reflect current maintainership
Instead of listing everyone, just point to GitLab

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>
2025-08-01 16:00:20 +00:00
Olivier Crête
235258259d REQUIREMENTS: Remove outdated doc
They contained information which was completely outdated.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9476>
2025-08-01 16:00:19 +00:00
Víctor Manuel Jáquez Leal
f170eff6bb vaXXXenc: fix potential race condition
VA encoders, at reconfiguration, have to check if the rate-control was changed
by the user, but since user parameters setting are in another thread, the
comparison was racy.

This patch locks the object to compare the current rate-control with the one set
by the user.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9480>
2025-08-01 15:20:56 +00:00
Jonathan Lui
c81c19bfdc vaav1enc: Enable intrablock copy and palette mode
This allow screen content coding (SCC) optimization feature.

Co-authored-by: Victor Jaquez <vjaquez@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8560>
2025-08-01 13:42:37 +00:00
Seungha Yang
0c378091a0 d3d12screencapturedevice: Avoid false device removal on monitor reconfiguration
Post device-changed instead of device-removed/device-added when
only HMONITOR or display position changed without actual device change.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9472>
2025-08-01 12:51:46 +00:00
Olivier Crête
ec85036a1e analytics: Add unit test for copying GstAnalyticsRelationMeta
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9475>
2025-07-31 22:56:26 +00:00
Olivier Crête
0428b71c68 avtpbasepay: Add debug message for time handling
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9412>
2025-07-31 22:15:07 +00:00
Olivier Crête
c76f65e0ee avtpbasepay: Make make constants more readable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9412>
2025-07-31 22:15:07 +00:00
Olivier Crête
a6a38dcab9 avtp: Use the DTS as the AVTP base time
Make it work a little more like RTP. Have the source interact with the
clock and set the capture time on each packet. Then the other elements
can use that to do adjustments. Since AVTP is always very low latency,
it can be assumed that the gPTP clock at the packet reception is very
close to the sending time, never more than 2 seconds off, so the
timestamps can be compared directly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9412>
2025-07-31 22:15:07 +00:00
Olivier Crête
134ff5b45f avtp: Use nicely abstracted process function in base depayloader class
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9412>
2025-07-31 22:15:07 +00:00
Olivier Crête
0398e376b0 avtp: Intercept changes in the latency
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9412>
2025-07-31 22:15:06 +00:00
Olivier Crête
cf039e49e8 avtpvfpaybase: Don't require a caps handling method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9412>
2025-07-31 22:15:06 +00:00
Nicolas Dufresne
33d0170d6e docs: Update documentation cache for new RGB 10bit support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9460>
2025-07-31 21:34:35 +00:00
Nicolas Dufresne
6078cee500 opengl: Add opaque 10bit RGB support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9460>
2025-07-31 21:34:35 +00:00
Nicolas Dufresne
c5657fde44 waylandsink: Enable 10bit RGB for SHM buffer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9460>
2025-07-31 21:34:35 +00:00
Nicolas Dufresne
b634094928 video: Add more variants of 10bit RGB formats
Add support for RGB10A2/BGR10x2/RGB10x2.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9460>
2025-07-31 21:34:35 +00:00
Nicolas Dufresne
a4969e8c02 av1parse: Set MDI into the final caps
The MDI was being set in the original caps which is not even writable.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9474>
2025-07-31 20:54:02 +00:00
Olivier Crête
40828d890b onnx: Add Verisilicon provider
Add the option to use the VSI provider for the Verisilicon NPUs.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9408>
2025-07-31 18:09:19 +00:00
Marc-André Lureau
78f0f61523 meson: d3d12: Add support for MinGW DirectXMath package
This is a similar issue that was found for d3d11:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6495

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9464>
2025-07-31 15:09:34 +00:00
Seungha Yang
ffc3d16983 device-monitor: Use gst_print instead of g_print
Avoid broken stdout output on Windows. Same change was made for
gst-launch in commit 493a3261a9757b5ade7aec289eb07221966f9eed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9467>
2025-07-31 20:12:43 +09:00
Matthew Waters
9522551e1d gl/basesrc: add get_gl_context
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9455>
2025-07-31 02:24:46 +00:00
Matthew Waters
9dca1f4a6f gl/basesrc: support changing caps
Caps may change the framerate used and the frame counting approach for
timestamps, needs to account for this by taking a snapshot of the current frames
and running time to add to all subsequent produced frames.  Code is mostly taken
from videotestsrc.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9455>
2025-07-31 02:24:46 +00:00
Víctor Manuel Jáquez Leal
6cfc1d383c vulkanh264enc: calculate latency with corrected framerate
Fix for the h264encoder base class in the same spirit of !9437.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9465>
2025-07-30 15:37:21 +00:00
Amotz Terem
489e908a92 nvcodec: Add emit-frame-stats signal
Add emit-frame-stats property to optionally emit frame stats on each frame

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9429>
2025-07-30 14:13:46 +00:00
Hou Qi
7b61be6c43 v4l2videodec: Fix assertion failure when acquiring drm caps
This is to fix assertion failure "assertion 'drm_info->drm_fourcc != DRM_FORMAT_INVALID' failed"
when acquiring drm caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8533>
2025-07-30 17:32:24 +09:00
Jaslo Ziska
b58605ec0d gloverlay: Recompute geometry when caps change
Set geometry_changed when setting caps so that the geometry is
recomputed correctly with the new dimensions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9434>
2025-07-30 03:07:08 +00:00
Jaslo Ziska
3f99fb7f94 gloverlay: Load texture after stopping and starting again
Set location_has_changed when stopping so that the texture will be
loaded when starting again.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9434>
2025-07-30 03:07:08 +00:00
Nirbheek Chauhan
87ed0c0e33 windows: Disable all audio device providers except wasapi2
We have too many device providers outputting duplicate device entries,
and it's not clear to people what they should be using. Let's only
keep wasapi2 around since it is PRIMARY + 1.

After the device switching work done on WASAPI2, there is no reason to
use directsound anymore.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9438>
2025-07-30 00:21:18 +00:00
Nirbheek Chauhan
7788186a30 meson: Pass sysprof=disabled to glib
sysprof cannot be built on Windows, and this causes the build to fail
on Windows.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9438>
2025-07-30 00:21:18 +00:00
Nirbheek Chauhan
eef8ec6e47 meson: Pass python=false to libxml2
We don't need this in gstreamer anyway.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9438>
2025-07-30 00:21:18 +00:00
Philippe Normand
009192bde4 vavp9dec: Always chain to parent class negotiate vmethod
When the base videodecoder class re-attempts a negotiation after flush, the
vabasedec `need_negotiation` flag isn't necessarily set to TRUE, because in that
situation the input state hasn't changed.

By always chaining up we are sure that buffer pool negotiation will always be
attempted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9457>
2025-07-29 21:34:59 +01:00
Philippe Normand
eab8abad8c vajpegdec: Always chain to parent class negotiate vmethod
When the base videodecoder class re-attempts a negotiation after flush, the
vabasedec `need_negotiation` flag isn't necessarily set to TRUE, because in that
situation the input state hasn't changed.

By always chaining up we are sure that buffer pool negotiation will always be
attempted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9457>
2025-07-29 21:34:59 +01:00
Philippe Normand
8317dd5ef3 vaav1dec: Always chain to parent class negotiate vmethod
When the base videodecoder class re-attempts a negotiation after flush, the
vabasedec `need_negotiation` flag isn't necessarily set to TRUE, because in that
situation the input state hasn't changed.

By always chaining up we are sure that buffer pool negotiation will always be
attempted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9457>
2025-07-29 21:34:59 +01:00
Philippe Normand
92931e2907 vabasedec: Instrument negotiate function with debug statements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9457>
2025-07-29 21:34:59 +01:00
Philippe Normand
a28a040913 vabasedec: Always chain to parent class negotiate vmethod
When the base videodecoder class re-attempts a negotiation after flush, the
vabasedec `need_negotiation` flag isn't necessarily set to TRUE, because in that
situation the input state hasn't changed.

By always chaining up we are sure that buffer pool negotiation will always be
attempted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9457>
2025-07-29 20:31:21 +01:00
Philippe Normand
914beb9756 vah264dec: Spelling fix in warning debug statement
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9457>
2025-07-29 20:31:21 +01:00
Philippe Normand
e07c720476 h264decoder: Spelling fix in warning debug statement
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9457>
2025-07-29 20:31:21 +01:00
Olivier Crête
f69c8bf4aa onnx: Add debug message with tensor id
Also downgrade input dimensions as it's shown on
each buffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9439>
2025-07-29 14:20:48 -04:00
Olivier Crête
edd46c51f1 ssdtensordecoder: Use tensor ids from the registry
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9439>
2025-07-29 14:20:14 -04:00
Thibault Saunier
47213732b5 ignore: Exclude build artifacts and minified files from ripgrep
Add common build directories, minified files, and node_modules
to .ignore file to reduce noise when using ripgrep for code search.

Follow-up to !9458 which addressed git grep via .gitattributes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9459>
2025-07-29 12:09:49 -04:00
Thibault Saunier
fb36c54bd8 gitattributes: Mark dots-viewer dist files as binary
This prevents git grep from searching through minified JavaScript
and other generated files in the dots-viewer static distribution
directory, reducing noise in search results.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9458>
2025-07-29 11:15:07 -04:00
Derek Foreman
f1f482f3d6 av1parse: Set CLL and MDI caps
We already parse the content-light-level and mastering-display-info data
from the stream, so propagate that into caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9445>
2025-07-29 11:06:24 +00:00
Derek Foreman
a26983d043 wayland: display: Scale whitepoint the same as the primaries
The whitepoint metadata also needs the same scale factor as the
display_primaries.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9444>
2025-07-29 04:08:52 +00:00
Derek Foreman
e33f89a4bf wayland: window: Name the color management queue
Wayland debugging is easier if we use queue names.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9446>
2025-07-29 00:12:00 +00:00
Julian Bouzas
b375b7d3e9 lcevcdecoder: Add lcevch265decodebin and lcevch266decodebin elements
Similar to lcevch264decodebin, these new elements are needed for LCEVC H265 and
H266 video streams to be decoded properly with autoplugging elements.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9427>
2025-07-28 23:13:05 +00:00
Julian Bouzas
7411337812 h266parse: Fix typo when finding compatible profiles
This solves some critical errors about not fixed caps with some H266 streams.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9427>
2025-07-28 23:13:05 +00:00
Julian Bouzas
064d2dedd6 h266parse: Wait for SEI before exposing src caps
Similar to h264parse, 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/9427>
2025-07-28 23:13:05 +00:00
Julian Bouzas
b904ac195f h265parse: Wait for SEI before exposing src caps
Similar to h264parse, 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/9427>
2025-07-28 23:13:05 +00:00
Julian Bouzas
98d3228fc2 codecparsersbad: Accept lcevc=false sink caps
This is needed if the LCEVC enhancement data is part of the video stream as SEI
and the demuxer outputs 'lcevc=false' src caps because LCEVC enhancement data is
not stored as a separate stream in the container.

To clarify, 'lcevc=true' just means that the video buffers have LCEVC metadata
attached. Therefore, it is valid to have a stream with LCEVC enhancement data as
SEI with 'lcevc=false' as long as it is not attached as metadata.

This will be needed once we add support for the demuxer to attach LCEVC metadata
to video buffers if it is stored in a separate track.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9427>
2025-07-28 23:13:05 +00:00
Nirbheek Chauhan
08db7b9497 ci: Ensure that the docs build is triggered for script changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9452>
2025-07-29 01:49:32 +05:30
Nirbheek Chauhan
c98d49f13e ci: Fix gst-full breakage due to typos
This broke in 81bdef0150df3306136137a5187dc25a7c5f4aee. Simplify
removal of the plugin from the plugin list if features are listed, and
fix invocation of the script -- it was adding an extra space before
the first plugin filename.

Also ensure that gst-full CI is run when the script changes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9452>
2025-07-29 01:48:44 +05:30
Nirbheek Chauhan
81bdef0150 gst-full: Fix detection of duplicate plugin entries
Just because a plugin name is a substring of another plugin, doesn't
mean it is the same plugin. If the list of plugins can contain
a filename, that will be a static lib of the form libgstfoo.a

For example, if you had `-p applemedia -e app:appsrc,appsink` then
`applemedia` would be removed from the plugins list.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9442>
2025-07-27 01:36:28 +00:00
Seungha Yang
32e6b47b07 examples: Add d3d12fisheyedewarp test example
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9441>
2025-07-27 01:22:28 +09:00
Seungha Yang
461e3946d4 d3d12: Add support for dewarping fisheye images
Add d3d12fisheyedewarp element that performs fisheye image dewarping
using D3D12. A UV remap LUT texture is generated via a compute shader,
and the actual remapping is performed in a pixel shader using this LUT

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9441>
2025-07-27 01:22:28 +09:00
Nirbheek Chauhan
316473f722 gitignore: Update for latest meson
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9431>
2025-07-26 00:06:37 +00:00
Nirbheek Chauhan
ba73cfd36e gstreamer: Disable C5287 warning on MSVC
```
../subprojects/gstreamer/gst/gstpad.c(3866): warning C5287:
operands are different enum types 'GstQueryType' and 'GstQueryTypeFlags';
use an explicit cast to silence this warning
```

We abuse these enums, and MSVC emits a warning for this specific case:

https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9431>
2025-07-26 00:06:37 +00:00
Olivier Crête
7456266117 objectdetectionoverlay: Print tracking id
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9440>
2025-07-25 17:09:16 +00:00
Víctor Manuel Jáquez Leal
4a986e611b vaXXXenc: calculate latency with corrected framerate
Fixes: #4558
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9437>
2025-07-25 09:56:50 +00:00
Seungha Yang
0d2157e801 wasapi2: Add continue-on-error property
If enabled, wasapi2src/sink will post a warning message instead of an error,
when device failures occur, such as open failure, I/O error,
or device removal.
The element will continue to produce/consume audio buffers and behave as if
a capture/render device were active, allowing pipeline to keep running even when
no audio endpoint is available

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9326>
2025-07-24 17:04:53 +00:00
Seungha Yang
37637d9611 wasapi2: Use 48kHz default sample rate
That's most common default value

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9326>
2025-07-24 17:04:53 +00:00
Seungha Yang
fc861119ed wasapi2deviceprovider: Probe device form factor and enumerator name
Adding form factor and enumerator information to device property struct

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9326>
2025-07-24 17:04:53 +00:00
Seungha Yang
9dbc7a491e wasapi2: Add support for dynamic device switch
Ringbuffer implementation is re-written to support "device" property
change in playing state

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9326>
2025-07-24 17:04:53 +00:00
François Laignel
6b32228573 gst-env: only-environment: only dump added and updated vars
By default, `gst-env.py` spawns a new shell with an updated environment
suitable for working with current branch.

The option `only-environment` dumps the resulting environment on `stdout`
without spawing a new shell. This can be used to save it to a file and `source`
it later, possibly from another shell.

However the resulting environment contains all the env vars from the initial
environment, some of which are session, display or DE specific (e.g.
`XAUTHORITY`, `DESKTOP_SESSION`, `WAYLAND_DISPLAY`, ...). This can cause
problems when sourced later.

Reproduction:

1. `gst-env.py --only-environment > env-full`
2. `source env-full`
3. `gst-launch-1.0 videotestsrc ! ximagesink` <= this works
4. Reboot
5. `source env-full`
6. `gst-launch-1.0 videotestsrc ! ximagesink` <= this doesn't work because
   `XAUTHORITY` was overriden with previous value in step 5.

This was initially observed with a Qt application running with the X11 backend.

This commit changes the behaviour of `only-environment` to only dump env vars
that are actually set or modified by `gst-env.py`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8846>
2025-07-24 11:00:07 +02:00
Mathieu Duponchelle
eb4caff16a rtspclientsink: post error message on RTCP timeout
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9124>
2025-07-23 19:20:02 +02:00
Mathieu Duponchelle
17f9d8a18e rtsp-stream-transport: expose new timed-out property
Upon RTCP timeout, rtpsession emits a signal that we catch to set a
timed_out private field, this also exposes it as a property of the
transport in order for users (such as rtspclientsink) to get notified
about it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9124>
2025-07-23 19:20:02 +02:00
Seungha Yang
338d5501d0 nvdsdewarp: Disallow resizing in case of passthrough
It's not supported yet

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8558>
2025-07-23 12:37:43 +00:00
Seungha Yang
608e57e542 nvdsdewarp: Avoid synchronization if possible
If input/output memory objects have the same cuda stream,
don't need to synchronize stream

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8558>
2025-07-23 12:37:43 +00:00
Seungha Yang
6d2530fb37 nvdsdewarp: Cache texture object
... instead of creating texture for every frame

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8558>
2025-07-23 12:37:43 +00:00
Seungha Yang
f93e200bfe nvdsdewarp: Add support for output resizing
... and adding "add-borders" property

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8558>
2025-07-23 12:37:43 +00:00
Stéphane Cerveau
7320acdaca vkdownload: implement decide_allocation virtual method
In the case of caps change such as frame size, a new buffer pool should be
created according to this new caps via the decide_allocation() vmethod.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8931>
2025-07-23 09:45:20 +00:00
Olivier Crête
9fb3df1422 analyticsoverlay: Add expire-overlay property
If there has been no new data for this amount of time, just
expire the overlay and don't send one. Otherwise, it keeps sending
the old one for the following frames.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9409>
2025-07-22 23:31:23 +00:00
Seungha Yang
5325ec41e4 nvencoder: Always allow interlaced stream
... even if hardware does not support interlaced encoding at bitstream level.
Although interlacing information is not written in the bitstream,
that information can be signalled via container, thus allow interlaced
stream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9328>
2025-07-22 15:49:04 +00:00
Seungha Yang
4f932ee081 d3d12swapchainsink: Add last-rendered-sample action signal
Add a new action signal to allow applications to capture
the most recently rendered frame directly from the swapchain
back buffer.

Unlike the existing "last-sample" property, which exposes
the raw input sample before any sink-side processing, this
signal captures the final displayed image after any internal
image processing (e.g., UV remap, color balance, overlay) has been
applied.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9423>
2025-07-22 12:02:15 +00:00
Stéphane Cerveau
559dbdecf1 tests: vkh26xenc: use vkvideoencodebase
To avoid duplicating code, use vkvideoencodebase.c

Code cleanup and function clarifications.
Fix leaks in case of multiple device.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9077>
2025-07-22 10:35:16 +00:00
Xavier Claessens
6122c8070f svtjpegxs: Update wrap file
It fixes build with older GCC version.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9426>
2025-07-21 22:43:55 +00:00
Olivier Crête
69e91b78a7 tflite: Add support for VSI delegate
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9410>
2025-07-21 17:40:04 -04:00
Olivier Crête
d1b00839c3 classifiertensordecoder: Use utility functions to get tensors
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9419>
2025-07-21 14:49:42 +00:00
Olivier Crête
d1483d6c55 classifiertensordecoder: Handle error cases better with labels file
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9419>
2025-07-21 14:49:42 +00:00
Olivier Crête
fe0d7f249d ssdobjectdetector: Validate tensor type and dimensions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9419>
2025-07-21 14:49:42 +00:00
Olivier Crête
561e2b28af tensor: Print tensor name in debug name
It makes it easier to understand which one is rejected.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9419>
2025-07-21 14:49:42 +00:00
Tim-Philipp Müller
15c9bc4d2a unixfd: fix and improve the example pipelines in the documentation
- Add a videoconvert element before the videosink so that the output
  works no matter what format gets negotiated (A444_16LE for me)

- Specify a reasonable video format and size with a capsfilter, so
  we don't default to something silly like A444_16LE @ 240p.

- Add a timeoverlay element, so it's obvious when stoppping/restarting
  the pipeline that the input stream is just picked up again from the
  moment the consumer pipeline is restarted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9422>
2025-07-18 17:52:42 +01:00
Philippe Normand
990c8b91a9 transcoder: Fix warning/error APIs
The GError pointers were actually not out-parameters. :(

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9407>
2025-07-18 08:02:50 +00:00
Philippe Normand
a03d5bedd3 transcoder: Remove unused priv->bus variable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9407>
2025-07-18 08:02:50 +00:00
Philippe Normand
9babc9a9e5 transcoder: signal-adapter: Fix error/warning details access
The field names were missing in the gst_structure_get() calls...

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9407>
2025-07-18 08:02:50 +00:00
Philippe Normand
e31b1d8859 check: Silence some OpenSSL memory leaks
The OpenSSL version shipping in Fedora 40 leaks memory, the issue is fixed in
F42.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9323>
2025-07-18 00:57:40 +00:00
Philippe Normand
6db20592ef dtls: Use ECDSA private key for default certificate
ECDSA is widely used in browsers and SFUs, some servers such as the ones using
BouncyCastle only accept certificates signed with ECDSA.

Based on closed MR https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2458

Fixes #4516

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9323>
2025-07-18 00:57:40 +00:00
Jordan Petridis
8ab5e5b7cb ci: Update the kernel version we use with fluster
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9401>
2025-07-17 22:30:37 +00:00
Olivier Crête
2c3f2747d6 tensormeta: Check dimensions when retrieving tensor
Modify the API to retrieve the tensor meta to check for the dimensions
as well.

Also fix an API mistake, the buffer whose dimensions should be checheck
is the one inside the GstTensor, not another buffer some outside.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9411>
2025-07-17 17:43:32 +00:00
Olivier Crête
5f52eaae83 tensormeta: Don't crash on invalid tensor name
It's a valid case to check for an existing tensor.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9411>
2025-07-17 17:43:32 +00:00
Stéphane Cerveau
d1022fb469 vkupload: fix the refactored frame copy
When refactoring the code in 743c425f64,
the wrong GstBuffer has been used to copy to,
leading to a failing frame copy.

The bug has been discovered running
elements_vkcolorconvert.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9373>
2025-07-17 15:30:25 +00:00
Seungha Yang
0d1cd40097 d3d12swapchainsink: Update uv-remap signal to support background color
Allow per viewport background color setting

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9393>
2025-07-17 12:55:11 +00:00
Sebastian Dröge
d255ed96f0 tensor: Clarify meaning of the dimensions array in the docs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9325>
2025-07-17 11:25:59 +00:00
Jordan Petridis
f91b272f20 ci: Unpin the python version we install on windows
Originally pinned due to [1] but it has been fixed
for a while now.

[1] https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/427

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8717>
2025-07-17 04:52:33 +00:00
L. E. Segovia
2c86dbddee ci: Work around PowerShell broken argument parsing
iex aka Invoke-Expression is also trying to pass (break) arguments
of the form -Dlibfoo:yadda=true as -Dlibfoo yadda=true.

See https://github.com/PowerShell/PowerShell/issues/19451

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8717>
2025-07-17 04:52:33 +00:00
L. E. Segovia
ec75dd5c1c pycairo: update to 1.28.0
Fixes Python 2 buffer API causing the build to fail.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8717>
2025-07-17 04:52:33 +00:00
L. E. Segovia
d993c82ea8 pygobject: update to 3.50.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8717>
2025-07-17 04:52:33 +00:00
L. E. Segovia
b6d006f89c gobject-introspection: Update to 1.84.0
Fixes "ModuleNotFoundError: No module named 'distutils.msvccompiler'" when updating Python version

See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8878

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8717>
2025-07-17 04:52:33 +00:00
Olivier Crête
b11ccc5cdf analyticsmeta: Remove incorrect check
The value can be NULL which is the wildcard

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9413>
2025-07-16 18:55:55 -04:00
raghu447
d868357270 tensordecoder: rename facedetector element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9344>
2025-07-16 20:35:04 +00:00
Julian Bouzas
36bb470d1d h266parse: Parse and attach LCEVC metadata to buffers if present
Similar to h264parse and h265parse, this patch enhances the element to parse
LCEVC enhancement data from SEI, and attach it to output buffers as GstLcevcMeta.
The 'lcevc' field in the output caps is also set to TRUE or FALSE depending on
whether LCEVC data is present or not.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9365>
2025-07-15 19:23:41 -04:00
Julian Bouzas
e44bab9fe9 h266parse: Parse and process SEI registered user data
Similar to h264parse and h265parse, this patch improves the element to parse
the SEI registered user data from NAL units. The core structure of H266 SEI for
ITU-T T.35 is the same as the other parsers, so we can re-use the same logic.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9365>
2025-07-15 19:23:39 -04:00
Olivier Crête
65c88ff18f abi-check: Rebuild image
This should result in the same content, but use the fixed scripts.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9382>
2025-07-15 22:05:48 +00:00
Olivier Crête
1358e00083 ci: Save ABI needs to run as root
It's modifying the base image

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9382>
2025-07-15 22:05:48 +00:00
Olivier Crête
911fb66ce0 ci: chown the builddir
Even if it's not the project dir, this is needed when
building inside the image building stage

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9382>
2025-07-15 22:05:48 +00:00
Olivier Crête
f6052f204f ci: Reference SUBPROJECT_CACHE_DIR to build abi-check image too
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9382>
2025-07-15 22:05:48 +00:00
Olivier Crête
f3f00c9bc4 ci: Update ci-template
The includes a new fix to the cbuild tool to forward the environment
to the FDO_DISTRIBUTION_EXEC script.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9382>
2025-07-15 22:05:48 +00:00
Sebastian Dröge
0aa11dc93c examples: Update Rust dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9397>
2025-07-15 14:15:17 +00:00
Sebastian Dröge
c61039e95a dots-viewer: Update Rust dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9397>
2025-07-15 14:15:17 +00:00
Daniel Morin
a97757d6a9 caps: fix nested caps
- Fixes #4534
- Fix gst_caps_is_fixed(), fix gst_caps_fixate () for caps-in-caps

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9378>
2025-07-14 15:06:08 -04:00
Seungha Yang
66880012c5 examples: d3d12swapchainsink: Add support for force-aspect-ratio change
Adding keyboard control for "force-aspect-ratio" property change

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9392>
2025-07-14 17:07:35 +00:00
Seungha Yang
fc73216671 d3d12swapchainsink: Fix force-aspect-ratio change in playing state
Set output updated flag so that viewport can be calculated again

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9392>
2025-07-14 17:07:35 +00:00
Sebastian Dröge
6ce4637aab analytics: Include new batch meta in the single-include header
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9391>
2025-07-14 15:07:37 +03:00
Sebastian Dröge
3a51f42ab0 analytics: Add GstAnalyticsBatchMeta for batches of buffers from one or more streams
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9282>
2025-07-13 18:25:26 +02:00
Nirbheek Chauhan
9c2e20419b win-pkgconfig: Bump to 0.29.2
The older 0.28 version has a buggy --msvc-syntax option:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8717#note_3001648

This 32-bit version was compiled from our meson port of pkg-config:
https://gitlab.freedesktop.org/gstreamer/meson-ports/pkg-config

The toolchain used was MSYS2's mingw32-gcc toolchain
`mingw-w64-i686-gcc` so that it uses 32-bit MSVCRT, which gives it
maximum compatibility with all Windows versions. UCRT DLLs are
specific to the VS version and Windows version.

This version will also not insert any system library or include paths,
like the previous 0.28 version. The build commands were:

```
meson setup --optimization=s --strip \
        --wrap-mode=forcefallback \
        -Dpc_path='' \
        -Dsystem_include_path='' \
        -Dsystem_library_path='' \
        _mingw32
meson install --destdir $PWD/install -C _mingw32
cp install/bin/pkg-config.exe .
zip pkg-config-$VERSION.zip pkg-config.exe
```

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9376>
2025-07-11 18:18:15 +00:00
Nirbheek Chauhan
d34798824f win-pkgconfig: Fix version, and fix gitignore
The pkg-config.exe we ship here is version 0.28.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9376>
2025-07-11 18:18:14 +00:00
L. E. Segovia
53cc57a9c2 python: Fix compatibility of pygobject patch with 3.42
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9332#note_3003134

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9377>
2025-07-11 10:29:14 -03:00
Doug Nazar
c00d77e6d7 avtp: crf: Setup socket during state change to ensure we handle failure
Previously the socket would be created in the thread, which take some
time to start. As the tests were so short they would usually pass as
they don't actually use the socket.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9364>
2025-07-10 15:50:30 +00:00
Doug Nazar
7d8f9b840f avtp: crf: tests: Only run tests if packet socket is available
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9364>
2025-07-10 15:50:30 +00:00
Mathieu Duponchelle
cde27346fb rtmp2src: don't send window acknowledgement size commands twice
This causes servers such as AWS MediaLive to drop the connection, and
the message flow chart as documented in the "spec" always has the
server sending it first, and the client replying to it on reception of
the Set Peer Bandwidth, which we do since 286a3829b637.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9360>
2025-07-10 09:04:16 +00:00
Mathieu Duponchelle
668ef84171 rtmp2src: fix playback of URIs without a playpath
ffmpeg manages to play RTMP URLs in the form:

```
protocol://servername:port/appname
```

and does not require a second component to the path, adapt our code to
allow using such URLs as `tcUrl`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9360>
2025-07-10 09:04:16 +00:00
Piotr Brzeziński
c43d3900bf vtenc: Fix negotiation failure with profile=main-422-10
Previous version passed just enough data to the parser to detect
main/main-10, but main-422-10 is one of the range extensions profiles.
Those need a few more bits to be accurately detected, and since those
were just uinitialized memory previously, we'd incorrectly end up with
main or main-10 when the encoder was in fact giving us 4:2:2 10bit
output.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9348>
2025-07-10 08:04:45 +00:00
Nirbheek Chauhan
dabb3eb5bd ci: Don't forward default variables to downstream cerbero pipeline
Forward only the specified variables. Fixes an issue where the wrong
images were used for cerbero trigger pipeline jobs.

This list needs to be kept up-to-date whenever the rules: below it
change.

https://docs.gitlab.com/ci/yaml/#triggerforward

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9356>
2025-07-09 21:55:39 +00:00
Nicolas Dufresne
8092669a18 wayland: window: Fix next video info leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9353>
2025-07-09 20:07:38 +00:00
Nicolas Dufresne
c803ce7a9c waylandsink: Parse and set the HDR10 metadata
Basically whenever the compositor have support for it, and the caps includes it,
set the mastering display and light content level information.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9353>
2025-07-09 20:07:38 +00:00
Nicolas Dufresne
c61b6f76b0 wayland: display: Detect HDR10 metadata feature
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9353>
2025-07-09 20:07:38 +00:00
Nirbheek Chauhan
19a2a158fa soup: Disable range requests when talking to Python's http.server
Python's SimpleHTTP server doesn't add Accept-Ranges and also doesn't
support range requests: https://github.com/python/cpython/issues/86809

According to the spec, this means the server may or may not support
Range requests, but we know that SimpleHTTP server doesn't, so let's
disable it. If they fix it, they will hopefully add an Accept-Ranges
header.

See also: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8505#note_2994060

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9341>
2025-07-09 13:53:57 +00:00
Doug Nazar
160205b483 buffer: Find initial memory block without unnecessary mapping
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9354>
2025-07-09 12:14:52 +00:00
Haihua Hu
4e7df779df v4l2videodec: Fix alternative output format support
Some decoder have the ability to output multiple formats.
This has been supported for a while but stopped working
after commit 77744c3d638. Restore this functionality
by replacing acquired_caps with the new caps.

Fixes #4528

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8674>
2025-07-09 11:08:40 +00:00
Doug Nazar
24dcc0a009 openh264: Ensure src_pic is initialized before use
valgrind was showing reads of uninitialized memory and the
library examples all memset the structure before use.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9352>
2025-07-09 07:13:06 +00:00
Doug Nazar
d694a38cc3 alsa: free conf cache under valgrind
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9352>
2025-07-09 07:13:06 +00:00
Julian Bouzas
7ad82930e2 h265parse: Parse and attach LCEVC metadata to buffers if present
Similar to h264parse, this patch enhances the element to parse LCEVC enhancement
data from SEI, and attach it to output buffers as GstLcevcMeta. The 'lcevc'
field in the output caps is also set to TRUE or FALSE depending on whether LCEVC
data is present or not.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9335>
2025-07-08 22:36:08 +00:00
Tim-Philipp Müller
24ee088cee Back to development after 1.27.1 2025-07-08 20:00:07 +01:00
Tim-Philipp Müller
1fa56616fb Release 1.27.1 2025-07-08 19:58:12 +01:00
Tim-Philipp Müller
336276be47 gst-plugins-good: update translations 2025-07-08 19:55:11 +01:00
Tim-Philipp Müller
618a193c1d gst-plugins-base: update translations 2025-07-08 19:55:11 +01:00
Tim-Philipp Müller
529ddd0c5f gstreamer: update translations 2025-07-08 19:55:11 +01:00
Nicolas Dufresne
d18dd3fa61 opengl: gldownload: Restore DMABuf support
The download element relied on a fuzzy translation from GStreamer format to a
DRM fourcc, and then all supported modifiers for that fourcc. Since !9306 this
was fixed to only enumerate that way when direct import is used.

Flag direct upload to the transform caps helper, so that we now enumerate all
non-external formats again.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9339>
2025-07-08 15:06:05 +01:00
Nicolas Dufresne
d45864d77c opengl: upload: Fix and improve DRM modifiers direct import
When using direct DMABuf upload, supported DRM formats and modifiers
pairs should be translated to RGBA. Instead of overwriting the translation
to RGBA, which may endup having nothing to override, we introduce a new
flag for the transform helper, so it can do direct translation.

This fixes a regression introduced by !9306, and fixes more negotiations
issues.

Fixes #4525

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9339>
2025-07-08 15:06:05 +01:00
Matthew Waters
4ed83e5973 vulkanfullscreenquad: add locks for synchronisation
Now all API can be accessed from any thread.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9337>
2025-07-08 11:43:13 +00:00
Doug Nazar
f11d258545 cpu-throttling-clock: fix race between async callback and unscheduling
It's possible that the callback is already scheduled to run on another
thread when we unschedule it during dispose and we would then access
a freed object.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>
2025-07-08 09:05:29 +00:00
Doug Nazar
12c08027b2 meson: Disable flags not compatible with sanitizers if enabled
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>
2025-07-08 09:05:29 +00:00
Doug Nazar
13f3656b7b h266parse: test: Pass correct size argument to va_arg function
sizeof(int) != sizeof (gsize)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>
2025-07-08 09:05:29 +00:00
Doug Nazar
0add16906a analytics: tests: Copy correct size of array to buffer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>
2025-07-08 09:05:29 +00:00
Doug Nazar
50a6f31902 decklink: Fix a memory leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>
2025-07-08 09:05:29 +00:00
Doug Nazar
dac375ab7a webrtc: tests: Fix a few memory leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>
2025-07-08 09:05:29 +00:00
Doug Nazar
f6cc177dab camerabin: Fix a memory leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>
2025-07-08 09:05:29 +00:00
Doug Nazar
63302342ff splitmuxsrc: Fix a memory leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>
2025-07-08 09:05:29 +00:00
Doug Nazar
03f465a6de videoscale: Fix test for allowed caps
videoscale_get_allowed_caps_for_method() could leave holes in the
returned array, causing the test to skip some caps and not free them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>
2025-07-08 09:05:29 +00:00
Doug Nazar
3c8cb96826 glviewconvert: Fix a memory leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>
2025-07-08 09:05:29 +00:00
Doug Nazar
1c5430a394 glstereosplit: Fix a leaked event
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>
2025-07-08 09:05:28 +00:00
Doug Nazar
d155aeecb3 tracerutils: Fix a few memory leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9151>
2025-07-08 09:05:28 +00:00
Nirbheek Chauhan
f08635d5fa gst-device-monitor: Fix caps filter splitting
max_tokens=-1 means we will split on `:` in the caps as well, for
example caps features, and then discard those tokens.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9342>
2025-07-08 08:24:48 +00:00
Hanna Weiß
3232e7a948 vulkan: Fix drawing too many triangles in fullscreenquad
was using a index buffer for triangle list but drawn as strip

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9338>
2025-07-07 21:56:50 +00:00
Nicolas Dufresne
5ac6d2b635 gtkwaylandsink: Make the rotate property GST_PARAM_MUTABLE_PLAYING
This matches the change we made to waylandsink.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9283>
2025-07-07 21:11:44 +00:00
Michael Olbrich
5275bb0c20 gstwaylandsink: add some locking documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9283>
2025-07-07 21:11:44 +00:00
Michael Olbrich
0a524ca115 gstwaylandsink: add GST_PARAM_MUTABLE_PLAYING flag for more properties
The fullscreen state and rotate method can be changed while the element is
playing, so add the GST_PARAM_MUTABLE_PLAYING flag to those properties to
indicate this.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9283>
2025-07-07 21:11:44 +00:00
Michael Olbrich
96b800f82a waylandsink: make sure self->window is not NULL before using it
self->window is created with the first frame, so it is not available when
properties are set during construction of the element.
Skip calling gst_wl_window_ensure_fullscreen() in this case.

The window is already constructed with the current configured fullscreen state,
nothing else in needed here.

Without this, running e.g. 'gst-launch-1.0 -v videotestsrc ! waylandsink
fullscreen=true' will result in:

GStreamer-Wayland-CRITICAL **: 14:11:19.921: gst_wl_window_ensure_fullscreen: assertion 'self' failed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9283>
2025-07-07 21:11:43 +00:00
Olivier Crête
f86fb556df sdp: Keep profile-level-id in caps
If it is present in the SDP, then keep it in the caps,
it should be equal for it to work.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9031>
2025-07-07 19:51:39 +00:00
Olivier Crête
1413dc37eb webrtcbin: Add RTX/FEC for each relevant payload type
When sending an answer with multiple codecs, we need to add the RTX and FEC
payload for each codec

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9031>
2025-07-07 19:51:39 +00:00
Olivier Crête
5d9abea64c sdpmessage: Try to re-create profile-level-id
Some WebRTC implementations such as Pion are unhappy if the
profile-level-id isn't returned with a compatible profile as the
RFC requires. Let's try to reform it

In practice, the correct way to do this would be to not use caps
intersection, but to instead implement the correct RFC compliant
SDP O/A negotiation of formats.

Include a unit test written by Philippe Normand

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9031>
2025-07-07 19:51:39 +00:00
Olivier Crête
7fb6965ded sdpmessage: Avoid duplicating the extmap when adding multiple codecs
The extmap aren't per-codec in SDP, so if one adds multiple codecs
to the same SDP media, the extmap were duplicated. Look if they are
already present and skip them if they are.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9031>
2025-07-07 19:51:39 +00:00
Seungha Yang
feedb9a769 hipmemorycopy: Use stream associated with buffer
... instead of global device stream. memory object might hold
different stream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9281>
2025-07-07 14:39:54 +00:00
Seungha Yang
c1f023baaf hipconverter: Avoid unnecessary sync
If input and output buffers are running on the same stream,
record event instead of sync

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9281>
2025-07-07 14:39:54 +00:00
Seungha Yang
7d259c4224 hipmemory: Allow lazy sync
Store recorded hip event and wait for sync later if needed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9281>
2025-07-07 14:39:54 +00:00
Seungha Yang
e9d96fd4e7 hip: Add GstHipEvent object
hip event handle wrapper object

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9281>
2025-07-07 14:39:54 +00:00
Seungha Yang
ad942d2627 hip: Use non-default stream
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9281>
2025-07-07 14:39:54 +00:00
Seungha Yang
b465694957 hip: Add GstHipStream object
Adding hip stream abstraction layer

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9281>
2025-07-07 14:39:53 +00:00
Doug Nazar
9575de7367 netclientclock: Update gir file
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9115>
2025-07-07 13:01:34 +00:00
Doug Nazar
88314f7706 netclientclock: Add deinitialize function for testing
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9115>
2025-07-07 13:01:34 +00:00
Doug Nazar
15ae6d13f8 tests: appsrc: fix race accessing expected list
Without synchronization, a thread may still see an old value.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9115>
2025-07-07 13:01:34 +00:00
Doug Nazar
88412c9ebf tests: rtpbin_buffer_list: unref clock after usage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9115>
2025-07-07 13:01:34 +00:00
Doug Nazar
50208d6064 netclientclock: test: add delay under valgrind to free clock from cache
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9115>
2025-07-07 13:01:34 +00:00
Doug Nazar
c5b9e5dcd5 info: free dwarf cache during shutdown
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9115>
2025-07-07 13:01:34 +00:00
Doug Nazar
45eef1a000 alphacombine: fix memory leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9115>
2025-07-07 13:01:34 +00:00
Doug Nazar
8873237131 cpu-throttling-clock: free clock when finished
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9115>
2025-07-07 13:01:34 +00:00
Doug Nazar
6aca08f155 encoding-target: free fullname on failure
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9115>
2025-07-07 13:01:34 +00:00
Doug Nazar
fdbc6deb39 identity: unref clock after usage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9115>
2025-07-07 13:01:34 +00:00
Nirbheek Chauhan
beb07214a5 meson: Update gl-headers wrap
More ergonomic build with -Dauto_features=disabled

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9332>
2025-07-07 12:23:34 +00:00
Nirbheek Chauhan
8571f35b73 python: Allow pygobject to auto-find built modules on Windows
There is no consensus on the upstream MR about how to solve this:

https://gitlab.gnome.org/GNOME/pygobject/-/merge_requests/415

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9332>
2025-07-07 12:23:34 +00:00
Seungha Yang
239a679fbf d3d12screencapture: Add support for monitor add/remove in device provider
Update device list on WM_DISPLAYCHANGE event

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4521
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9330>
2025-07-04 18:47:58 +00:00
Nicolas Dufresne
5c6273d663 Revert "vp9parse: Always default to super-frame"
This reverts commit fd1428d3ebf937d7656c3788df3ef3ff85fecc31.

As reported in #4524, this changes cause regressions. The problem is due to a
bug in how vp9parse interact with parsebin, presenting downstream negotiation of
alignment to work. This revert to being stuck using frame alignment always,
which fortunately works with libvpx, though less efficient.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9329>
2025-07-04 12:53:46 -04:00
Nicolas Dufresne
b77a4b4a97 test: virtme: Disable one of the VP9 SVC test
The virtual driver VISL does not support dynamic resolution changes. Before the
vp9parser fix, the first frame would be decoded and display and the rest
dropped. Though, since we fixed the handling of super frame, that frame is now
dropped, since it is marked DECODE_ONLY. All other frames in that stream can't
be decoded. So no frame gets decoded which leads to an error.

Simply skip this test until visl can handle this type of stream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8944>
2025-07-03 20:55:52 -04:00
Nicolas Dufresne
cf1aa3ecc6 vp9parse: Only show the last frame of a super frame
Only the last frame of a super frame should be displayed by default. When
converting from super frame to frame, mark all frames as decode only except the
last one. This fixes vp90-2-22-svc_1280x720_3.ivf conformance test with
stateless decoders such as VA.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8944>
2025-07-03 20:48:12 -04:00
Nicolas Dufresne
d5d47d211e vp9parse: Always default to super-frame
Sort the list of structure before truncating so that we don't prefer
"frame"" alignment over "super-frame" in some cases.

Fixes vp90-2-22-svc_1280x720_3.ivf conformance test when using libvpx based
decoder.

Fixes #4371

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8944>
2025-07-03 20:48:12 -04:00
Nicolas Dufresne
a8f5618d1a vp9parse: Fix typo Aligment vs Alignment
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8944>
2025-07-03 20:48:12 -04:00
Julian Bouzas
3e4c17633e h264parse: Forward LCEVC caps
This makes sure the parser exposes lcevc=true output caps if the demuxer
attached LCEVC data to video frames.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9321>
2025-07-03 13:54:39 +00:00
Víctor Manuel Jáquez Leal
e8ebd6398f examples: vulkan encoder test
Similar as d3d11 and va.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:32 +02:00
Víctor Manuel Jáquez Leal
9ae93f1a71 gst-docs: update symbols_index.json
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:32 +02:00
Víctor Manuel Jáquez Leal
41ff02c349 vulkanh264enc: add Vulkan H264 encoder
Add an element to encode h264 content using the vulkan API.

Co-authored-by: Stéphane Cerveau <scerveau@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:32 +02:00
Víctor Manuel Jáquez Leal
d81726f8d2 vulkan: h264encoder: introduce base class
H.264 base class oriented for hardware accelerated encoders, such as Vulkan, VA
and others.

1. It can be parametrized for hardware limits, such as lists size, b-frames
   supports, etc.
2. It produces a GOP structure map [IDR, R/I/B, ...)
3. It proposes parameters set and other strucures such as bitrate limites.
   Subclases can modify those structures.
4. It calls the subclass encode virtual method implementation.

It doesn't handle rate control algorithms or other encoding quality mechanisms.

For a deeper introduction to the class there was a lighting talk in the GstConf
2024: <https://www.youtube.com/watch?v=-fQY54KHH38>

Co-authored-by: He Junyan <junyan.he@intel.com>
Co-authored-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
Co-authored-by: Stéphane Cerveau <scerveau@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:32 +02:00
Víctor Manuel Jáquez Leal
c09cc64a5e vkencoder-private: free data on error
Co-authored-by: Stéphane Cerveau <scerveau@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:19 +02:00
Víctor Manuel Jáquez Leal
678affaa2f vkencoder-private: add gst_vulkan_encoder_rc_mode()
To get the updated rate control mode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:19 +02:00
Víctor Manuel Jáquez Leal
0af329d505 vkencoder-private: fix array layer for layered DPB
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:19 +02:00
Víctor Manuel Jáquez Leal
88a302a3c9 vkencoder-private: free err when bailing
And log out the error message from the Vulkan call.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 13:41:15 +02:00
Víctor Manuel Jáquez Leal
7001d48483 vulkan: ycbcr conversion extension got promoted in 1.1.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7197>
2025-07-03 10:29:41 +02:00
Sebastian Dröge
7c1381cfd6 ssdobjectdetector: Use correct tensor data index for the scores
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9322>
2025-07-02 21:56:58 +00:00
Jordan Petridis
18684c6d04 ci: Replace custom toolbox image with FDO_DISTRIBUTION_POST_EXEC
We were building a different image cause we needed to do
a couple things that are not possible yet through
cbuild/ci-templates.

Now that we have FDO_DISTRIBUTION_POST_EXEC we can
do it on the same job and use the same image tag to
extend the image.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9277>
2025-07-02 19:34:17 +00:00
Seungha Yang
7c4b87cc33 wasapi2: Fix various MinGW build warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9307>
2025-07-02 18:18:18 +00:00
Seungha Yang
df45c088ad waapi2: Remove unused WinRT deps and implementations
Removing unused WinRT API based implementations

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9307>
2025-07-02 18:18:18 +00:00
Seungha Yang
0b3108cb3c wasapi2: Port to IMMDevice based device selection
Because of a couple of issues reported related to WinRT device
enumeration, porting to IMMDevice device id based device selection.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4311
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3936
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9307>
2025-07-02 18:18:18 +00:00
Seungha Yang
ba41200c96 wasapi2: Implement IMMDeviceEnumerator based enumerator
... and merge wasapi2{capture,render}deviceprovider into single
wasapi2deviceprovider since we can enumerate input/output audio
devices at once using IMMDeviceEnumerator

This is a preparation for complete porting to Win32 API

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9307>
2025-07-02 18:18:18 +00:00
James Cowgill
ea08b70946 v4l2codecs: Use prop_offset in gst_v4l2_decoder_install_properties
Install properties at the given offset as intended instead of at 0.

Currently there are no elements with any properties, so this has no
effect. This change is needed if any element adds properties in the
future.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9179>
2025-07-02 15:24:45 +00:00
Edward Hervey
efb22b550c mpegtsdemux: Add property to disable skew corrections
This is for cases where:
* We *do* want to refer to the PCR stream to figure out global positioning, gap
  detection, wrapover correction.
* But we do not want to apply any skew correction to the output

This is useful for cases where:
* the input stream has already been clock-corrected (for example with
mpegtslivesrc)
* or where the output doesn't require synchronization against a clock (ex: for
  storage)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9301>
2025-07-02 14:10:55 +00:00
Jordan Petridis
d4b7066060 ci: Run the jobs as an unprivileged non-root user
Docker/oci and thus gitlab-runner, default to a root
user inside the namespace, even if its an unprivileged
one.

This can cause issues and let permission bugs sneak in,
as we are functionally root when running the build.

Switch the build jobs to run with our new "containeruser"
so we avoid much of it.

Our user is still in the wheel/sudo group but that's fine
as long we don't elevate the privileges unintentionally.

Noticeably for the time being, we will need to chown the
CI_PROJECT_DIR checkout as the gitlab runner might try
to reuse pre-existing and cached volumes of the project
checkout.

Additionally we need to change the ccache path, so we
will avoid the existing cache owned by "root".

Close https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2433

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8763>
2025-07-02 12:18:01 +00:00
Jordan Petridis
fafd2bc844 ci: override python user-base location
We are currently running pip as root which will cause it
to install into /root/.local cause it wants to do a user install
Set the user-base in the gloabl config, /etc/pip.conf, so pip will
both install there and subsequently look there if we invoke it
from any other user.

This makes pip install ofc require elevated permissions, as it
will be writting into /usr/local from now on

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8763>
2025-07-02 12:18:01 +00:00
Jordan Petridis
59faed542e ci: Move subprojects cache into /var/cache
Functionally identical, but a better location to
place them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8763>
2025-07-02 12:18:00 +00:00
Jordan Petridis
936a3cefcd ci: Add a metadata file into the images we build
Create a file we can check at runtime, and identify if the
environment we run against is one of our CI build images.
Useful mostly for our internal scritps so we can  match against
metadata rather than heuristics, ex. if /subprojects exists

Conceptually similar to /.flatpak-info

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8763>
2025-07-02 12:17:59 +00:00
Daniel Morin
d5e9779e55 gstvalue: update gir file
- update gir file

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9220>
2025-07-02 06:47:00 +00:00
Daniel Morin
d760457bd7 gstcaps: add test for caps
- if a subset contain identical element in superset it is still a subset it they
  are note equal. e.g is_subset (<1, 1000>, <1, [1, 1000])

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9220>
2025-07-02 06:46:59 +00:00
Daniel Morin
71bd3cbcd6 gstvalue: increase test coverage for _is_subset()
- Identify _is_subset () general/specials cases.
- Add multiple test cases for general cases.
- Add multiple test cases for unfixed value.
- Add mutliple test cases for fixed array value.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9220>
2025-07-02 06:46:59 +00:00
Daniel Morin
93241e4203 gstvalue: generalize gst_value_is_subset()
- Add case where we have element in subset that are equal to element in
  superset. In this case subset is still a subset if at least one element is a
  subset of the corresponding element in superset.
- clarify gst_value_is_subset inline documentation
- Add helper VALUE_TYPE_SINGLETON (type) to identify GType that represent a
  value that is not a collection.
- Fixed issue in gst_value_is_subset_array_array (<1, 2, 3>, <0, 1, 4, 2, 3>)
  would have returned TRUE because because the alignment of the subset could be
  done multiple times. Now once alignment of set as been done once, everything
  else in the superset need to be a subset of corresponding element without
  interuption. is_subset (<1, 2, 3>, <0, 1, 2, 3>) => TRUE, but is_subset (<1,
  2, 3>, <0, 1, 4, 2, 3>) => FALSE.
- If both array are fixed value and we perform a is_subset on them, both value
  can't be equal to be considered subset. (For consistency with other fixed
  values)
- Define gst_value_subtract (singleton, array) and
  gst_value_subtract (array, singleton), to allow a gst_value_is_subset
  (singleton, array) and gst_value_is_subset (array, singleton). General
  case of gst_value_is_subset (v1, v2) use gst_value_subtract (v1, v2) and
  gst_value_subtract (v2, v1) to evaluate _is_subset(), therefore we need these
  for is_subset() operation that involve singleton and array.

  Note gst_value_subtract (array, array) is not implemented but this case is not
  require by gst_value_is_subset () and as it has a direct handling. Warned if
  the case is used.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9220>
2025-07-02 06:46:59 +00:00
Mathieu Duponchelle
39a7e0066c aggregator: add sub_latency_min to pad queue size
It should be possible for a subclass to let data accumulate on any of its input
pads for as long as it has introduced latency.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9320>
2025-07-02 06:11:27 +00:00
Thibault Saunier
c604196306 gl: cocoa: Add navigation event support
Implement keyboard, mouse, and scroll wheel event handling for the
OpenGL Cocoa backend.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9276>
2025-07-02 01:31:16 +00:00
Enock Gomes Neto
cade54e2af qtdemux: Fix incorrect FourCC used when iterating over sbgp atoms
In qtdemux_parse_traf(), the loop over sbgp atoms used FOURCC_sgpd instead
of FOURCC_sbgp when retrieving the next sibling node. This caused the loop
to either terminate early or attempt to parse sgpd atoms as sbgp, leading
to incorrect or incomplete seig group associations.

This fix ensures that all sbgp atoms are properly parsed in sequence.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4511
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9318>
2025-07-01 12:40:33 -03:00
Sebastian Dröge
da2da7711d ci: Update to Rust 1.88 and cargo-c 0.10.14
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9310>
2025-06-30 22:56:04 +00:00
Nicolas Dufresne
b6b6bf9370 opengl: Rename to _private EGL and GLX context header
Both only contains private symbols, clarify this by using a very explicit
name.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9306>
2025-06-30 21:53:55 +00:00
Nicolas Dufresne
7f18dc5411 gl: upload: Fix direct dmabuf transform function
When doing direct dmabuf upload, we rely on the GL stack for doing the color
transformation. The caps we transform from GL to DMABuf are always with a format
of RGBA. Instead of listing all GstVideoFormat and translating them back into
DRM formats, simply list all supported DRM format for the context.

This enable rendering DRM formats that don't have an shader based emulation
implemented such as NV15.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9306>
2025-06-30 21:53:55 +00:00
Nicolas Dufresne
c475088501 gl: context_egl: Add a helper to list all supported fourcc/modifiers
This helper creates a GST_TYPE_LIST of all possible DRM formats that the context
can support. This will be needed to fix support for formats that aren't emulated
using GStreamer shaders.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9306>
2025-06-30 21:53:55 +00:00
Nicolas Dufresne
ef98722709 gl: context_egl: Show all possible translation to GstVideoFormat
The code would simply trace one random format using the DRM fourcc. Instead,
trace the result of translating the pair and skip if there is not match.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9306>
2025-06-30 21:53:55 +00:00
Nicolas Dufresne
475083200d gl: utils: Correct gst/dma caps transformation
The transformation was fuzzy, adding random modifiers to the list. Use the newly
introduce helpers from 1.26 to precisely convert GStreamer formats to a DRM
fourcc and modifier pair and vice-versa.

This fixes support for formats that have a GstVideoFormat value and requires a
modifier.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9306>
2025-06-30 21:53:55 +00:00
Nicolas Dufresne
5e2a4a6d13 v4l2codecs: h265dec: Fail when frame cropping is needed while using DMABuf
It is not possible to do frame cropping when DMABuf caps feature is negotiated.
The VideoInfo size is zero, resulting in empty destination buffers, and video
convert library may not understand what the format actually is.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9305>
2025-06-30 21:17:16 +00:00
Nicolas Dufresne
e7be87b3de v4l2codecs: h265dec: Avoid cropping for zero top/left alignments
If the conformance window does not requires cropping the top or left of the
window, we can use GstVideoMeta to crop in a zero-copy fashion. If a copy
is needed, the frame copy can also handle it, and is a lot faster.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9305>
2025-06-30 21:17:16 +00:00
Nicolas Dufresne
0fbd76dd50 v4l2codecs: dec: Remove has_videometa member
Now that the code is properly located, this member is not needed
anymore.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9305>
2025-06-30 21:17:16 +00:00
Nicolas Dufresne
c7b0b9a816 v4l2codecs: dec: Move copy_frames logic inside decide_allocation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9305>
2025-06-30 21:17:15 +00:00
Seungha Yang
de1166338c webrtcdsp: Respect disabled feature option
Don't try to build this plugin if it's explicitly disabled

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8424>
2025-06-30 17:18:18 +00:00
Vineet Suryan
13fc7ef932 onnx: Use system installed Eigen to avoid hash mismatch failure
Eigen’s download for the commit referenced by ONNX Runtime v1.16.3 was
updated upstream, so the SHA-256 embedded in ORT’s CMake scripts no
longer matches and the build aborts with a hash-mismatch error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9229>
2025-06-30 13:13:38 +00:00
Doug Nazar
55bd9434f3 ges: Fix using freed memory to print prop name
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
6be8b2974e avtp: Fix memory leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
3c69e6ddd2 srt: Fix warning about uninitialized memory
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
c37a694b1b vc1parser: Fix warning about printing uninitialized variables
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
27a55d9346 proxysrc: Fix order freeing pads
Free pads from bottom of parent tree first else with GST_DEBUG
enabled it would access freed memory printing object info.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
d7e90e5a15 avtpcvfpay: tests: Initialize codec memory
If GST_DEBUG was enabled we would print unintialized memory

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
7bf94c4c46 videodecoder: Print correct frame variable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
b490629528 rtph265pay: Fix valgrind warning about uninitialized usage
Skip NALs less than minimum size of 2.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
6ddb5b4ad9 selector: tests: Fix initialization of segment
If GST_DEBUG is enabled and it dumps the segment, valgrind will warn about
uninitialized memory.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
b06c9090a7 gstinfo: tests: Ensure that the target msg is one of the ones seen
If GST_DEBUG is enabled we will get multiple log messages. Signal
success if one of messages is correct.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
4c7b2fe4cc memory: tests: Fix test to ensure all logs are less severe than WARN
If GST_DEBUG is enabled the existing test will fail as it gets INFO
log messages.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Doug Nazar
aa71fbd4ae transform: test: TestTransData is not an object
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9273>
2025-06-30 12:19:19 +00:00
Sebastian Dröge
8711294ea0 analytics: Fix docs of gst_tensor_check_type()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9311>
2025-06-30 11:13:24 +00:00
Robert Mader
7e2b383553 matroskademux: Send tags after seeking
Similar to what qtdemux does in `gst_qtdemux_stream_update_segment()`,
in which case we want to resend tags according to our position.
By setting the changed flag for all stream tags we ensure they will all
be (re-)send as we progrees.

This notably ensures that rotation tags are not lost when video players
finish playback and jump back to the beginning of a video.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8429>
2025-06-30 08:49:21 +00:00
Sebastian Dröge
bebec6d965 analytics: Fix transfer annotations of gst_tensor_check_type()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9293>
2025-06-30 08:00:17 +00:00
Sebastian Dröge
46df60ed1d Revert "streamsynchronizer: Consider streams having received stream-start as waiting"
This reverts commit a1a189c07cb66af06d7047c74f6421bd36e3d66c.

It breaks the uriplaylistbin tests and needs further investigation.

See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4506

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9309>
2025-06-30 09:26:29 +03:00
Tim-Philipp Müller
b0d952ef53 contributing: add section about deletion of merged branches
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9292>
2025-06-28 11:21:44 +00:00
David Maseda Neira
188a9fa7a2 adaptivedemux2: Fixed reverse playback
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9298>
2025-06-27 12:21:51 +00:00
David Monge
d22be5d383 mpegtsmux: fix double free caused by shared PMT descriptor
The PMT descriptor was owned by the stream object but also added to
the descriptors array without copying, leading to a double free and
core dump during cleanup

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9285>
2025-06-27 09:55:33 +00:00
Thibault Saunier
51cbcfbc57 cuda: Lower debug log level on nvrtc compilation failure
We have a fallback to compile with cubin and that compilation failure
might very well not be fatal.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9232>
2025-06-27 09:10:25 +00:00
Matthew Waters
87666a2d3b rtph265pay: add profile-id, tier-flag, and level-id to output rtp caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9300>
2025-06-27 07:36:47 +00:00
David Maseda Neira
73d57329e8 gst-inspect-1.0: Added type info for caps fields
gst-inspect-1.0 now shows the expected GType for each field of the
capabilities on a pad.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9270>
2025-06-27 07:00:22 +00:00
He Junyan
eedd01ac3d h266parser: Fix overflow when parsing subpic_level_info
1. non_subpic_layers_fraction, ref_level_idc and ref_level_fraction_minus1
   fields should not have the GST_H266_MAX_SUBLAYERS limitation.
2. Should check max_sublayers_minus1, no more than GST_H266_MAX_SUBLAYERS-1

Fixes ZDI-CAN-27381, CVE-2025-6663

Closes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4503
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9294>
2025-06-26 19:45:05 +01:00
Johan Sternerup
af63e991ec hip: Add missing #ifdef
So that it compiles without gstreamer-gl.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9289>
2025-06-26 11:37:30 +00:00
Sebastian Dröge
d236538d28 gstutils: Mark times array as static to avoid symbol conflict with the POSIX function
It works fine but there can be linker warnings, e.g. with mold.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9288>
2025-06-26 09:22:14 +00:00
Xavier Claessens
472d528ffe audioconvert: Fix setting mix-matrix when input caps changes
When the number of input channels changes, application might have to set
a new mix-matrix. Application must set the new matrix before
audioconvert receives updated caps, otherwise negotiation would fail.
That means it should be allowed to set an invalid mix-matrix until we
receive new caps or next buffer.

This fixes a regression in GStreamer >=1.24.9 caused by:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7363

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9215>
2025-06-26 00:58:05 +00:00
Xavier Claessens
73d5b5b3db audioconvert: Replace g_warning with GST_WARNING_OBJECT
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9215>
2025-06-26 00:58:05 +00:00
Michael Olbrich
31f3e73066 waylandsink: Add force-aspect-ratio property
Similar to and inspired by glimagesink, xvimagesink and others.

The waylandsink never transform the buffer in any way but delegates this to the
Wayland compositor with the Wayland buffer transform API.
Rotation and window size are already supported, so this just changes the video
surface geometry that is communicated to the Wayland compositor.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9210>
2025-06-25 18:38:54 +00:00
Jan Alexander Steffens (heftig)
9363054e63 srtsink: Fix header buffer filtering
Cleans up the code and fixes two issues:

- If there are no streamheaders in the caps but we have `HEADER`
  buffers, it would run `gst_buffer_list_foreach` with `self->headers`
  being `NULL`.
- The code forgot to unmap the buffer if it decided to ignore it.

Fixes: 0a562a92d7ee38d8919d1b802add84d3c93b59eb
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9284>
2025-06-25 15:44:54 +00:00
Seungha Yang
e3d0a8d83e d3d12screencapturesrc: Fix OS handle leaks/random crash in WGC mode
Multiple DispatcherQueues per thread seems to be causing OS handle leak
and random crashes were observed. Instead of creating
thread/DispatcherQueue per GstD3D12GraphicsCapture object,
reuse only single thread and DispatcherQueue

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4351
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9153>
2025-06-25 14:30:56 +00:00
Doug Nazar
c15a898742 vkvideoencodeh26x: ensure we call teardown() for each test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9062>
2025-06-25 10:43:51 +00:00
Doug Nazar
35bceff695 gstrtspsrc: Don't emit error during close if server is EOF
During a graceful close we try to notify the server that we're
finished. There is no reason to consider it an error if the
server has already closed the connection.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9278>
2025-06-25 00:00:57 -04:00
Seungha Yang
67031a508c hip: Add plugin docs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 01:17:27 +09:00
Seungha Yang
1d6ae8791d hip: Add hipcompositor element
Feature-wise it's the same as cudacompositor

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
2b0f4705a5 hip: Load memset symbols
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
be3d7b6f13 hipmemorycopy: Add support for GL interop
Enable memory copy between HIP and GL

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
baa9bc9d95 hip: Add GstHipGraphicsResource object
hipGraphicsResource_t wrapper object for graphics api interop

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
04fb36b2f9 hip: Load GL interop related symbols
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
ecaab82f11 hip: Pass GPU arch to kernel compile option args
Pass current GPU arch to compile option instead of relying on auto
detection

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
fc8f7c349b hip: Add support for NVIDIA kernel precompile
... with "hip-nvidia-precompile" and "hip-nvcc-arch" build options

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
eb925e4212 hip: Add support for AMD kerenl precompile
Adding "hip-amd-precompile" build option. If enabled, AMD kernels
will be precompiled at build time. Also "hip-hipcc-arch" build option
(corresponding to --offload-arch hipcc option) is added
so that user can specify target GPU arch instead of auto-detection by hipcc

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
d26755f4d4 hip: Add support for memory copy between GstCuda and GstHip
Handle CUDA <-> HIP memory copy in hipupload and hipdownload elements

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
7254e812ac hip: Add support for NVIDIA
Adding HIP <-> CUDA translation layer like the HIP SDK does
but uses dlopen() for CUDA as well

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
24b93f2c41 hip: Remove build-time SDK dependency
Use dlopen at runtime

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Seungha Yang
0f9ce9de90 hip: Add AMD HIP plugin
Adding hipupload, hipdownload, and hipconvert family elements

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8923>
2025-06-25 00:15:55 +09:00
Sebastian Dröge
79677043dd ci: Update ABI tag
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9245>
2025-06-24 08:00:14 +00:00
Sebastian Dröge
4bd4c4d4f7 buffer: Add optional info structure to GstReferenceTimestampMeta
This allows carrying additional per-timestamp information if needed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9245>
2025-06-24 08:00:14 +00:00
Sebastian Dröge
f40726597e pad: Only remove TAG events on STREAM_START if the stream-id actually changes
Missing part from 88a36b53c5064d186acb317b0b72633ef5d886e3

See also https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4097

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9268>
2025-06-23 13:11:18 +00:00
Doug Nazar
a8e3dc337b analyticsoverlay: Fix memory leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9266>
2025-06-23 12:29:06 +00:00
Doug Nazar
e8fda4b6b7 dashsink: test: Minor cleanups
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9266>
2025-06-23 12:29:06 +00:00
Doug Nazar
794cae4b03 dashsink: Fix memory leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9266>
2025-06-23 12:29:06 +00:00
Doug Nazar
805d532280 splitmuxsink: Only send closed message once per open fragment
We send a closed message on EOS. It's possible to receive multiple EOS
messages before opening the next fragment (from an element change state
for example).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9266>
2025-06-23 12:29:06 +00:00
Qian Hu (胡骞)
bbae7dba0a imagefreeze: fix not negotiate error when stop
when the chain is called between reset and pad deactive in base
change state, a "not negotiation" error is produced.
so, we add a judge for flushing and reset

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8916>
2025-06-23 10:28:06 +00:00
Matthew Waters
f7ad5cb570 decklink/clock: remove clock_offset
It is completely unused and only ever initialized to 0.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9267>
2025-06-23 08:25:57 +00:00
Matthew Waters
cae2b38614 decklink: calculate internal using values closer to the current clock times
In a previous version of the clock time conversion code, scheduled playback used
to be started (from 0) when transitioning to PLAYING and stopped when
transitioning PLAYING->PAUSED. This worked fine when converting running times
using the internal clock.  However, now the decklink clock will produce values
that are monotonically increasing and do not reset to 0 at the same moments as
running time anymore. This means that the clock adjustments could attempt to
convert a small running time based on a large clock time e.g. after pausing
for many hours. As the adjustment code is a simple linear interpolation based on
the current clock times (large) using the provided value (small), the small
differences in the rate could result in very large differences in the
output time.

Fix by instead using both internal and external clock times based on the values
that gst_clock_get_calibration() will return. By doing so, small changes in the
rate calculations between the internal and external clock times will not result
in potentially large differences in the output internal time from
gst_clock_unadjust_with_calibration().

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9267>
2025-06-23 08:25:57 +00:00
Nirbheek Chauhan
d432dbd106 docs: Document that unnecessary rebases make reviewing harder
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9255>
2025-06-20 13:36:35 +00:00
Thibault Saunier
e799d79025 playsink: Fix race condition in stream synchronizer pad cleanup during state changes
Prevent race condition where gst_play_sink_do_reconfigure() could be called
from a pad probe while stream synchronizer pads are being released during
GST_STATE_CHANGE_PAUSED_TO_READY transition.

The race occurred when:
1. State change starts releasing stream synchronizer pads
2. Pads are unblocked earlier in the state change, allowing events to flow
3. A streaming thread triggers sinkpad_blocked_cb -> gst_play_sink_do_reconfigure
4. Reconfiguration tries to use already-released pad pointers
5. New pad creation fails with assertion in gst_pad_iterate_internal_links

The fix adds GST_PLAY_SINK_LOCK around the pad cleanup to ensure atomic
cleanup and prevent concurrent access during state transitions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9233>
2025-06-20 11:53:50 +00:00
Víctor Manuel Jáquez Leal
743c425f64 vulkanupload: refactor frame copy in a single function
Avoiding code duplication

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9222>
2025-06-20 11:08:17 +00:00
Víctor Manuel Jáquez Leal
bcf97b088f vulkanupload: use gst_video_frame_copy() for VulkanBuffer
There's no need of a custom copy.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9222>
2025-06-20 11:08:17 +00:00
Doug Nazar
c0a86ebb30 adaptivedemux2: Fix race for expected error in test
After gst-validate-1.0 notices the first expected error on the bus, it will
queue the completion of that action while the pipeline is still processing the
error and getting to the basesrc for the second error.

Mark the second error as 'sometimes=true', as it's not critical to the test.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9118>
2025-06-20 00:27:57 +00:00
Doug Nazar
49a81965fc validate: Ignore error msgs when executing next action
When processing an expected error msg, the test for if the next action
was a message would trigger and we'd never execute the next action
causing a timeout.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9118>
2025-06-20 00:27:57 +00:00
Doug Nazar
1fb195e08e validate: Fix memory leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9118>
2025-06-20 00:27:57 +00:00
Doug Nazar
198498d3d2 validate: Pass correct argument size to va_arg function
sizeof(int) != sizeof (GType) and can cause an invalid access.
Also one function call was missing the terminator altogether.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9118>
2025-06-20 00:27:57 +00:00
Doug Nazar
0f32647aae validate: Fix a memory leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9118>
2025-06-20 00:27:57 +00:00
Doug Nazar
83be566ca7 validate: Reset mutex to NUL to allow re-init
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9118>
2025-06-20 00:27:57 +00:00
Doug Nazar
76fc1d0acf validate: tests: use fixtures to init/deinit and fix leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9118>
2025-06-20 00:27:57 +00:00
Doug Nazar
79321deb27 validate: cleanup several items on shutdown
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9118>
2025-06-20 00:27:57 +00:00
Doug Nazar
b0885d2fc3 validate: Fix various memory leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9118>
2025-06-20 00:27:57 +00:00
Doug Nazar
2f5ecdc911 validate: ensure we shutdown execute_actions source
Actions are no longer always called directly from the main loop
so we can't depend on G_SOURCE_REMOVE to remove it. It's also
possible while returning up the call chain after running stop
to try to re-add it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9118>
2025-06-20 00:27:57 +00:00
Doug Nazar
86795f6414 baseparse: test: Fix race on test start
It's possible that the sink pad is still flushing when the first buffer
is processed causing the test to timeout when we activate the sink after
starting the pipeline.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9256>
2025-06-19 16:26:30 +00:00
Loïc Le Page
f47b0c0293 GstAudioAggregator: fix structure unref in peek_next_sample
The GstStructure attached to the audio sample in peek_next_sample() was
freed prematurely before usage as gst_sample_new() is taking full
ownership on it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9248>
2025-06-19 15:25:11 +00:00
Pratik Pachange
1f5dbbbd0b v4l2object: Add support for colorimetry bt2100-pq and 1:4:5:3
Colorimetry bt2100-pq is a variant of colorspace V4L2_COLORSPACE_BT2020
where the transfer function is SMPTE 2084 which is used by HDR content.

Colorimetry 1:4:5:3 is a full-range variant of colorspace
V4L2_COLORSPACE_470_SYSTEM_BG

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9166>
2025-06-19 14:29:54 +00:00
Edward Hervey
bc0324f862 tsdemux: Allow access unit parsing failures
* Refactor the various Access Unit extraction calls into a single function
* Allow the access unit parsing to fail, but emit a warning

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9246>
2025-06-19 13:03:16 +00:00
Nirbheek Chauhan
a8d9bfdcf2 amc: Overhaul hw-accelerated video codecs detection
Android 10 (API 29) added support for isHardwareAccelerated() to
MediaCodecInfo to detect whether a particular MediaCodec is backed by
hardware or not. We can now use that to ensure that the video hw-codec
is PRIMARY+1 on Android, since using a software codec for video is
simply not feasible most of the time.

If we're not able to detect isHardwareAccelerated(), perhaps because
the Android API version is too old, we try to use the codec name as
a fallback.

Also rank PRIMARY+1 the c2.android c2.exynos and c2.amlogic audio
codecs alongside OMX.google, because they are known-good.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9225>
2025-06-19 11:36:40 +00:00
Nirbheek Chauhan
fb04ef5be3 amc: Log under GST_FIXME for audio encoders
We don't support audio encoders yet, so log that correctly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9225>
2025-06-19 11:36:40 +00:00
Nirbheek Chauhan
966d8ec279 amc: Improve codec registration logging
Most of the messages can be printed with INFO threshold since they are
only printed on plugin registration.

Fix printing of codec caps, since GST_PTR_FORMAT truncates the output
in almost every case that I saw.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9225>
2025-06-19 11:36:40 +00:00
Nirbheek Chauhan
b8c9884674 amc: Print error messages when registering plugins
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9225>
2025-06-19 11:36:40 +00:00
Alicia Boya García
371100c743 tracers: Fix deadlock in latency tracer
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4317

This patch fixes a regression in
a35bf1e3847351703542869755b6b9e536b9d2fd.

The new calls to tracers in the affected change were being done while
holding the pad object lock, which wasn't the case in the old ones,
leading to the latency tracer deadlocking in gst_object_get_parent().

The dependency on the pad lock for those calls was accidental. This
patch removes it by temporarily unlocking during the affected calls,
not unlike how it's done when calling a probe callback or the
send_event() function of the downstream element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8925>
2025-06-19 09:12:14 +00:00
Jakub Adam
ddd6a708cb dashdemux2: Fix seeking in a stream with gaps
When there are gaps between segments in the DASH manifest (e.g. it's a
recording of a live stream during which the camera was turned on and off
a couple times), seeking to a timestamp that belongs into a gap leads to
repeat_index calculation yielding a nonsensical negative number (because
ts < segment->start).

In such event set the playback to continue at the first repetition of
the segment that follows after the gap.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8620>
2025-06-19 07:26:49 +00:00
Nicolas Dufresne
491b72aca3 v4l2: transform: Fix pool leak on error
Also remove un-needed nul checks.

Suggested-by: Elham nikooie
Fixes: #3097
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9221>
2025-06-19 05:21:05 +00:00
Nicolas Dufresne
3c06444a90 v4l2: encoder: Fix possible internal pool leak
Also remove the unneeded null checks that have spread around.

Suggested-by: Elham nikooie
Fixes: #3097
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9221>
2025-06-19 05:21:05 +00:00
F. Duncanh
5268156447 glwindow_cocoa: fix window not closing (w/o user window handle)
A user-supplied window handle (external_view) becomes the superView
of internal_view, which is closed with [view removeFromSuperview].
This fails silently if external_view = NULL (no handle supplied).
Call [win_internal_id close] in this case. Fixes #4432.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9049>
2025-06-19 03:34:09 +00:00
Ben Butterworth
224da2b947 mpegts: handle MPEG2-TS with KLV metadata safely by preventing out of bounds
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3896

@slomo, as requested on https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3896#note_2780065

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8529>
2025-06-19 00:41:09 +00:00
Théo Maillart
b13fd1db7b urisourcebin: never manually store stream-start
The copy of the exact same stream-start event prevents the multiqueue's sink
event function from being called because it is already stored on both pads at
link time
The text streams are no longer considered sparse by the multiqueue, so
interleave calculation is broken and makes us consume a lot of ram and we can
end up killed by the kernel because of this

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8412>
2025-06-18 12:43:18 +00:00
Johan Sternerup
c530453413 twcc: Fix reference timestamp wrapping (again)
With
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7527
an attempt was made to fix the wrapping of the TWCC 24-bit reference
time. Unfortunately this fix was not correct due to a late change and
the lack of unit tests to catch it. This time unit tests are provided to
make sure we have a correct fix for all the edge cases.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9051>
2025-06-18 10:43:34 +00:00
Víctor Manuel Jáquez Leal
76f52e5f98 vkupload: use gst_buffer_find_memory() to select memory
We never implemented correctly the selection of memories in a buffer given the
plane.

This patch uses gst_buffer_find_memory() for that. The offset is checked via the
video meta either in the input and output buffers, or the default offset given
the format and size.

This patch also requests the video meta option for the output buffers.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9219>
2025-06-18 09:06:55 +00:00
Víctor Manuel Jáquez Leal
44acc0bfb1 vkimagebufferpool: set video meta to buffers if requested
This patch adds the possibility to attach video metas to allocated buffers if
API users request that option.

The main reason to add this meta is for the future usage of
gst_buffer_find_memory(), where the requested offset determines the memory
index.

In the case of multi-memory Vulkan images the offset of every component is
larger than the default offset determined by the format and frame size, because
of the buffer minimum size and memory alignment determined by the used driver.
Then, the offset is set in the buffer video meta.

In the case of single memory Vulkan images, the default offset is set in the
video meta.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9219>
2025-06-18 09:06:55 +00:00
Víctor Manuel Jáquez Leal
bbd8fbb023 vkimagebufferpool: remove unused variable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9219>
2025-06-18 09:06:55 +00:00
Matthew Waters
f51d9fc128 rtph265depay: output profile, tier, level in output caps
These values are very easy to provide and some cases in rtph265pay require
these values to be set.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9223>
2025-06-18 07:35:52 +00:00
Sebastian Dröge
b003b2b023 wavparse: Don't error out always when parsing acid chunks
Remove stray goto introduced in ba8fd35e72b645c5048813d1bcc58271fb72ab6c

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9230>
2025-06-18 05:51:31 +00:00
Matthew Waters
7bbff29763 rtph265depay: CRA_NUT can also start an (open) GOP
https://datatracker.ietf.org/doc/html/rfc7798#section-3.1.1 says that a CRA_NUT
can start a GOP so add that to the list of nal types where VPS/SPS/PPS can be
inserted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9217>
2025-06-18 01:29:10 +00:00
Matthew Waters
d59cc622f2 webrtcbin: disconnect signal ICE handlers on dispose
It is entirely possible that the in progress may still provide some state
updates until the ICE object is destroyed, these state updates should
not really be done when webrtcbin is in the process of destroying itself
and access freed data.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9216>
2025-06-18 00:41:38 +00:00
Stéphane Cerveau
e82b80a74a vkerror: add invalid_video_std_parameters message
Add string to handle error related to the
codec standard parameters.

<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9212>

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9212>
2025-06-17 23:44:18 +00:00
Seungha Yang
26227042c3 examples: d3d12swapchainsink: Add uv-remap/redraw example
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9209>
2025-06-17 22:18:32 +00:00
Seungha Yang
c5fd61c908 d3d12swapchainsink: Add uv-remap and redraw action signal
New uv-remap signal can be used for UV coordinate remap operation
in videosink, and redraw signal can allow updating view even in paused
state

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9209>
2025-06-17 22:18:32 +00:00
Seungha Yang
ad6ce32a74 d3d12converter: Add support multiple UV remap in a single path
Add private methods for multiple UV remap operation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9209>
2025-06-17 22:18:32 +00:00
Stéphane Cerveau
59eaf4cc39 parser: fix spelling of GstAV1SegmentationParams
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8795>
2025-06-17 21:07:13 +00:00
Arnout Engelen
b3099f7877 devtools: dots-viewer: sort static files
The fact that static-files followed the (nondeterministic) file system
order is likely what caused the dots-viewer executable not to be binary
reproducible. Enabling this feature that was added upstream should fix
it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9208>
2025-06-17 18:51:54 +00:00
Xavier Claessens
961e7753b9 wraps: Add svtjpegxs from wrapdb
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9214>
2025-06-17 17:57:23 +00:00
L. E. Segovia
230fe47b59 curl: Recover missing comment
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8974#note_2955585

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9213>
2025-06-17 17:11:03 +00:00
Philippe Normand
189d33015d webrtcbin: Include all accepted media formats in SDP answers
Until this patch only the first format was added.

Fixes #4458

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9117>
2025-06-17 14:53:32 +00:00
Philippe Normand
fb43941e92 sdp: Add media_add_media_from_structure API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9117>
2025-06-17 14:53:32 +00:00
Robert Mader
d2cd810b07 formats: Add DRM equivalents for 10/12/16 bit SW-decoders formats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8965>
2025-06-17 13:54:57 +00:00
Robert Mader
c10aa337b2 video: Update drm_fourcc.h
To drm-misc-next at commit e252e3f3488a492, in order to include
new FOURCCs for SW-decoders.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8965>
2025-06-17 13:54:57 +00:00
Matthew Waters
9f4f426a89 rtph265depay: fix codec_data generation
When producing the profile_teir_level() struct, account for emulation
prevention bytes (0x0, 0x0, 0x3) in the source SPS.  Also copy from the correct
starting point in the source SPS and don't put the NAL header into codec_data.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9205>
2025-06-17 11:40:23 +00:00
Matthew Waters
01d41b5d59 decklinkvideosink: show preroll frame correctly
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4254

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9199>
2025-06-17 10:50:54 +00:00
Robert Mader
aee3fae721 wayland: Add support for local protocols
This proved to be helpful for previous protocol experiments, so let's
upstream it. Inspired by the corresponding code in Weston.

Protocols need to be placed in a `protocols` subdirectory and can be
declared in the following way in `meson.build`:
```
['color-management-v1', 'internal' ],
```

Note the `v1` being part of the name.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9186>
2025-06-17 09:59:10 +00:00
César Alejandro Torrealba Vázquez
49e53cb09e qtmux: Update chunk offsets when converting stco to co64 with faststart
When creating a faststart file, qtmux has to take into account that
any 32 bit stco atom may need to be converted into its 64 bit version
due to the offset that is added before the mdat data by the moov atom,
the extra atoms and the mdat header. If a stco atom is converted into
co64, the chunk offset of all stco and co64 atoms has to be increased,
which in turn may also cause that other stco atoms need to be converted
into co64, modifying the chunk offsets again.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9102>
2025-06-17 07:02:47 +00:00
Robert Mader
abe186e466 wayland: Add basic colorimetrie support
Using the Wayland color-management and color-representation protocols.

The implementation queries supported values from the compositors and tries
to convert them into GstVideoColorimetry values. It currently *does not*
pass these upstream to decoders etc. as GstCaps for negotiation.

On the Wayland side it uses named transfer functions, named primaries,
matrices and ranges. The straight alpha mode is also set if supported
by the compositor.

On setting caps it translates the GstVideoColorimetry from the GstVideoInfo
back to into a Wayland parametric image description and color representation
for the video surface if possible. If a colorimetry is not fully
support, we bail out and if wayland objects already exist they get reset or
deleted.

Note that not all GstVideoColorimetry values are implemented yet.

Useful debug options: GST_DEBUG=wlwindow:4,wldisplay:4

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6830>
2025-06-17 05:41:40 +00:00
Robert Mader
bd70a242ec wayland: wlwindow: Use GstWlWindow debug category
As probably intended - and Demote frame_redraw_cb log to debug
to make it less noisy.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6830>
2025-06-17 05:41:40 +00:00
Robert Mader
61f03a0ec1 wayland: Turn wl objects into GstObjects
For better logging and locking support.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6830>
2025-06-17 05:41:40 +00:00
Robert Mader
0ed3a83ee7 wayland: Add color protocols
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6830>
2025-06-17 05:41:40 +00:00
Sebastian Dröge
48cfd3a6e4 aacparse: Add test for correctly parsing the number of channels from codec_data
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9074>
2025-06-17 04:12:15 +00:00
changyong.ahn
163e9e8df4 aacparse: Fix counting audio channels in program_config_element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9074>
2025-06-17 04:12:15 +00:00
changyong.ahn
300ff38178 gstaacparse: Fix counting audio channels in program_config_element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9074>
2025-06-17 04:12:15 +00:00
Jan Schmidt
ffba5837ac tsdemux: Send new-segment before GAP
If adding a sparse stream and sending a gap event to bring it
up to speed, make sure to send the new segment event first

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8143>
2025-06-17 03:01:39 +00:00
Víctor Manuel Jáquez Leal
74b741e535 test: vulkanupload unit test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9218>
2025-06-16 23:23:44 +00:00
Víctor Manuel Jáquez Leal
717198b38b vulkanupload: fix regression for uploading VulkanBuffer
Merge request !5651 introduced a regression for uploading VulkanBuffer. It can
be verified by

gst-launch-1.0 videotestsrc ! video/x-raw, format=NV12 ! vulkanupload ! \
  video/x-raw\(memory:VulkanBuffer\) ! fakesink

Nobody has complained about this regression, so we assume it's a very niche
use-case.

This patch solve the regression by instantiating a different buffer pool
depending on the output cap features, and configuring it accordingly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9218>
2025-06-16 23:23:44 +00:00
Nicolas Dufresne
43d67a6557 ci: Move to trigger jobs instead of REST calls
The REST calls no longer work, returning error 422. Move to trigger
jobs which seems to have been fixed. The down side is that we looses
the ability to run against user matching cerbero branch.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9224>
2025-06-16 15:12:03 -04:00
Thibault Saunier
97fec43422 discoverer: Make gst_discoverer_info_from_variant nullable
There is no guarantee that the passed in data is valid and we should return
NULL in that case.

Also add API safeguards

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8953>
2025-06-11 10:18:23 -04:00
Piotr Brzeziński
fa44cfdaaa imagefreeze: Handle EOS from send_event()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9191>
2025-06-11 13:13:18 +02:00
Matthew Waters
9f055e1eeb qml6gloverlay: support directly passing a QQuickItem for QML the render tree
This is provided in addition to the text description in the qml-scene.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9180>
2025-06-11 11:55:51 +10:00
Daniel Morin
97a193c3d8 gststructure: update gir file
- gir file update with API change

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9184>
2025-06-10 19:22:34 +00:00
Daniel Morin
b44f19ccbc value: fix subset between arrays
- Adding gst_value_is_subset_array_array to test if an array is a subset of
  another array.
- Check gst_caps_is_subset() between containing arrays work.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9184>
2025-06-10 19:22:34 +00:00
Daniel Morin
848d55b96a gststructure: add gst_structure_get_caps
- Get field of type #GstCaps from #GstStructure

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9184>
2025-06-10 19:22:34 +00:00
Olivier Crête
1fa4d154d8 onnx: Also implement stop to clean up session
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9176>
2025-06-10 18:15:11 +00:00
Olivier Crête
f48ad0fde6 onnxinference: Clean up session creation logic
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9176>
2025-06-10 18:15:11 +00:00
Víctor Manuel Jáquez Leal
82a71a7739 gstreamer-vaapi: remove subproject
It's almost superseded by va plugin in gst-plugins-bad.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9200>
2025-06-10 17:32:46 +00:00
Philippe Normand
2a1890c03c transcoder: Fix uritranscodebin reference handling
Make sure the reference is not floating, because the get_pipeline function
returns a transfer-full reference.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9198>
2025-06-10 16:45:20 +00:00
L. E. Segovia
ebee431dac curl: Fix wrong format specifier for macOS
> ../ext/curl/gstcurlhttpsrc.c:1331:11: error: format specifies type
> unsigned long long' but the argument has type 'curl_off_t' (aka 'long') [-Werror,-Wformat]

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8974>
2025-06-10 14:58:26 +00:00
Edward Hervey
435b0799fc gst-python/tests: don't depend on webrtc and rtsp-server
They might not be built, nor are they needed for the tests

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8292>
2025-06-10 13:47:25 +00:00
Stefan Andersson
38f5ab75fd h26xparse: Drop NAL units that can't be parsed using AU alignment
Change so that the handling of NAL unit that can't be parsed when using
AU alignment is the same as when using NAL alignment, ie drop the data
if it can't be parsed.

If the AU contains more than one NAL unit any correctly parsed NAL unit
in the AU is kept.

Fixes #4436

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8976>
2025-06-10 13:00:20 +00:00
Stefan Andersson
a58fd15c91 h26xparse: Bail out if ...finish_frame returns an error
For NAL alignment bail out if gst_base_parse_finish_frame returns a flow
error.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8976>
2025-06-10 13:00:20 +00:00
Stefan Andersson
9aa1b969cd h26xparse: Prevent assert hitting when discarding NAL unit
If using NAL aligment and only dropping part of the AU, the size
argument given to gst_base_parse_finish_frame was wrong and this assert
in gst_base_parse_finish_frame hit
'gst_adapter_available (parse->priv->adapter) >= size' failed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8976>
2025-06-10 13:00:20 +00:00
Daniel Morin
28fafc5488 onnx: produce tensor caps
- Add tensor description to srcpads caps

onnx: formatting

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9172>
2025-06-10 09:04:48 +00:00
Daniel Morin
9bd3a3be74 gsttensor: adding new datatypes
- Adding datatype for string, boolean, complex numbers and special floating
  point numbers.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9172>
2025-06-10 09:04:48 +00:00
Doug Nazar
09a0a6a9d5 rtpjpeg: fix copying of quant data if it spans memory segments
rtpjpeg no longer joins all memory segments before encoding. Ensure
we copy the data from the correct segments.

Re-arrange test data so it's not correctly ordered and add test.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5533>
2025-06-09 10:36:07 +00:00
raghu447
4b6c732fdd analytics: add a convenient API to retrieve tensor
use the API in facedetector tensor decoding

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9162>
2025-06-09 10:06:43 +05:30
raghu447
a5586a50c2 tfliteinference: initialize means and stddevs arrays appropriately
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9189>
2025-06-08 17:07:47 +00:00
Elliot Chen
0f7ee14a1d adaptivedemux2: free cancellable when freeing transfer task
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8610>
2025-06-07 12:17:27 +00:00
L. E. Segovia
df69437ee5 android: vulkan: Update Gradle to 8.10.1
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9104>
2025-06-06 22:27:47 +00:00
L. E. Segovia
b1888da507 android: vulkan: Update Gradle to 7.5
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9104>
2025-06-06 22:27:47 +00:00
L. E. Segovia
1dd93518fd android: Re-enable bigger gradle memory parameter and add it to player
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9104>
2025-06-06 22:27:47 +00:00
L. E. Segovia
2549f63b3c android: tutorial-5: Fix crash when trying to skip video
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9104>
2025-06-06 22:27:47 +00:00
L. E. Segovia
0c5ea7f857 android: Update provided projects to API level 24
In preparation for https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/802

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9104>
2025-06-06 22:27:47 +00:00
L. E. Segovia
278ba6f6a3 android: tutorials: Update Gradle to 8.11
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9104>
2025-06-06 22:27:47 +00:00
L. E. Segovia
035bd5d37e android: tutorials: Update Gradle to 7.5
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9104>
2025-06-06 22:27:47 +00:00
L. E. Segovia
3591d81f06 android: player: Update Gradle to 8.11
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9104>
2025-06-06 22:27:46 +00:00
L. E. Segovia
b77c6e2a16 android: player: Update Gradle to 7.5
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9104>
2025-06-06 22:27:46 +00:00
L. E. Segovia
b6ceb8de2a android: webrtc: Update Gradle to 8.11
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9104>
2025-06-06 22:27:46 +00:00
L. E. Segovia
866769b765 android: webrtc: Update Gradle to 7.5
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9104>
2025-06-06 16:42:39 +00:00
Jakub Adam
12607d67b1 meson: fix building -bad tests with disabled soundtouch
Fixes an error from Meson:

../subprojects/gst-plugins-bad/tests/validate/meson.build:16:93: ERROR:
Unknown variable "soundtouch_dep"

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9190>
2025-06-06 17:43:53 +02:00
Pratik Pachange
0e78a6c5aa v4l2object: Make extra-controls property mutable in playing state
Certain encoder user controls as well as codec controls can be
changed while the pipeline is in playing state.
e.g. Codec controls like video_bitrate, frame_ltr_index,
use_ltr_frames, etc. and user controls like horizontal_flip,
vertical_flip can be changed while the pipeline is running.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9168>
2025-06-06 14:06:50 +00:00
Glyn Davies
607d24dfc6 mpegtsmux: Corrections around Teletext handling
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8966>
2025-06-05 13:43:23 +00:00
James Cowgill
39a6ecf56a vecdeque: Use correct index type in gst_vec_deque_drop_struct
Fixes some `-Wsign-compare` warnings. These two indices should be
`gsize` like the other variables in this function.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9171>
2025-06-05 11:53:16 +00:00
Xavier Claessens
06851d2e4c python: Fix pulling events from appsink
appsink.pull_object() is introspectable, but it needs a way to convert
the GstMiniObject to its GstEvent/GstSample subclass.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9148>
2025-06-04 20:49:53 +00:00
Xavier Claessens
a1187bfcbf python: Inherit MiniObject first
This ensures methods it overrides takes precedence over
gi's Gst.MiniObject. Python's MRO resolves in leftmost class first.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9148>
2025-06-04 20:49:53 +00:00
Xavier Claessens
bbf60305ed python: Fix API break by not forcing usage of context manager
caps.get_structure(0).get_name() used to work, but the usage of
StructureWrapper broke it but forcing to wrap it in a "with" statement.

We already have a Structure subclass, simply make it reference its
parent Gst.Caps object.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9148>
2025-06-04 20:49:52 +00:00
Xavier Claessens
f7c52a22a0 python: Fix unit tests running against system libgstreamer
Unit tests for which `i.get(2, [])` is empty were not adding
testsenv_ld_library_path to LD_LIBRARY_PATH.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9148>
2025-06-04 20:49:52 +00:00
Julian Bouzas
841448cd94 lcevcdec: Check for errors after receiving all enhanced and base pictures
The LCEVC_ReceiveDecoderBase() and LCEVC_ReceiveDecoderPicture() APIs from the
LCEVCdec SDK can return LCEVC_Error if the enhancement data is wrong. This
change improves the lcevcdec element to check for those errors and stop the
pipeline when that happens.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9057>
2025-06-04 15:53:03 -04:00
Seungha Yang
4d2869d4a3 d3d11decoder: Use interlace info in input caps
... instead of relying on only parsed values from bitstream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9170>
2025-06-04 16:07:24 +00:00
Seungha Yang
4735e765a3 d3d12decoder: Use interlace info in input caps
... instead of relying on only parsed values from bitstream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9170>
2025-06-04 16:07:24 +00:00
Seungha Yang
712203163e nvdec: Use interlace info in input caps
... instead of relying on only parsed values from bitstream.
Also parses HEVC specific interlace information

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9170>
2025-06-04 16:07:24 +00:00
Philippe Normand
3b896cd4ea encodebasebin: GstPad and GstStructure leak fixes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9167>
2025-06-04 13:39:06 +00:00
Philippe Normand
1d20fd15b0 encodebasebin: Make profile ownership explicit in StreamGroup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9167>
2025-06-04 13:39:06 +00:00
Philippe Normand
3719b5b616 encodebasebin: Encoding profile ownership fixes
The profile argument passed to gst_encode_base_bin_set_profile is now
transfer-full. This issue was noticed after commit
6beb709d43d2023e7e5dc8f1ee1323bc28c9d1d8 which fixed profile refcount handling
in transcodebin.

Driving-by, an encoding profile leak was also fixed in _set_profile, in case
it's called for an already active element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9167>
2025-06-04 13:39:06 +00:00
Thibault Saunier
0b12b883c9 gstinfo: Add missing log context stub functions when debugging disabled
When GST_DISABLE_GST_DEBUG is defined, the log context functions were
missing their stub implementations, causing link errors. Add the missing
stub functions to the disabled debug section.

Also add (nullable) annotation to gst_log_context_get_category since
it can return NULL when debugging is disabled.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9122>
2025-06-04 13:47:04 +02:00
Thibault Saunier
a0ec9a4eea dots: Do not WARN when a file can't be removed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9122>
2025-06-04 10:42:55 +02:00
Thibault Saunier
c4e9fc288a pad: Change incompatible caps warning to GST_INFO
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9122>
2025-06-04 10:42:55 +02:00
Thibault Saunier
6d1027f4ce audioencoder: Throttle metadata copy warning to prevent log spam
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9122>
2025-06-04 10:42:54 +02:00
raghu447
251d74ca69 tensordecoder: add facedetector tensor decoding support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8600>
2025-06-03 18:48:36 -04:00
Thibault Saunier
6c5ab780d5 pre-commit: Use default plugins rank when checking the doc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9130>
2025-06-03 15:59:12 +00:00
Thibault Saunier
450f2343cf doc: Add some explanation about the logic of when to post navigation message in code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9130>
2025-06-03 15:59:12 +00:00
Thibault Saunier
dab38ddaac osxvideosink: Use gst_pad_push_event() and post navigation messages
Use gst_pad_push_event() instead of manually getting peer pad and calling
gst_pad_send_event() otherwise the pad probe on the sinkpad wouldn't get the
events.

Also ensure navigation events are posted to the bus even when gst_pad_push_event()
fails in the render function, so navigation remains functional regardless
of rendering issues.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9130>
2025-06-03 15:59:12 +00:00
Thibault Saunier
41f7d94e8d tests: glvideomixer: Actually test glvideomixer and not compositor
And move it to the element/glmixer.c testsuite where it belongs.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9139>
2025-06-03 15:15:29 +00:00
Thibault Saunier
ad7c9ce478 glvideomixer, compositor: fix mouse event handling to properly return success
Fix mouse event handling in both glvideomixer and compositor to
check if upstream handled navigation events themselves.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9139>
2025-06-03 15:15:29 +00:00
Thibault Saunier
c0d8d1b942 validate: launcher: Downgrade non-critical log messages from ERROR to INFO
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9165>
2025-06-03 10:31:39 +02:00
Seungha Yang
6efe987d5c d3d11compositor: Fix negative position handling
Negative positions should be cropped out

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9158>
2025-06-01 18:21:28 +00:00
Seungha Yang
aa0c257d4c d3d12compositor: Fix negative position handling
Negative positions should be cropped out

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4249
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9158>
2025-06-01 18:21:28 +00:00
Seungha Yang
343cde7f87 d3d12compositor: Fix critical warnings
compositor will record rendering commands using multiple threads
(i.e., blending commands are recoded using thread pool, and
background one is recorded on aggregate thread).
And there can be temporary refcount increase (so not writable).
Updates fence once all rendering commands have been submitted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9157>
2025-06-01 23:02:33 +09:00
Seungha Yang
b6628e5b92 d3d12converter: Fix fallback upload process
Fixing typo

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9157>
2025-06-01 23:00:50 +09:00
Thibault Saunier
07bac2b40a validate: launcher: Remove log files for passing tests by default
Adding an option to keep them no matter what.
Log files are often pretty large and keeping them around can be annoying,
usually people won't look at logs files for passing tests, and we do not
even print them out.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9127>
2025-05-31 07:48:46 +00:00
Thibault Saunier
b51dadf6f1 validate: launcher: Allow using debug log colors when those are being redirected
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9127>
2025-05-31 07:48:46 +00:00
Thibault Saunier
ca36315dab validate: Do not check that timestamp are in input range for encoders
As some encoder offset the segment range to handle bframes, that check doesn't make sense.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9127>
2025-05-31 07:48:46 +00:00
Thibault Saunier
07e6d5a881 aggregator: Do not set event seqnum to INVALID
This might happen when we get EOS without any data flow

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9128>
2025-05-30 23:16:07 +00:00
Sebastian Dröge
0855e4b948 rgb2bayer: Use gst_structure_has_name() instead of g_str_equal() for simplicity
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9146>
2025-05-30 20:06:30 +00:00
Sebastian Dröge
77a486191c bayer2rgb: Use gst_structure_has_name() instead of strcmp() for clarity
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9146>
2025-05-30 20:06:30 +00:00
Sebastian Dröge
da892230d8 bayer2rgb: Fix RGB stride calculation
This fixes a regression introduced in 4c92d4096e9.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9146>
2025-05-30 20:06:30 +00:00
Nirbheek Chauhan
2a0c77fb78 gst-env: Emit a warning about DYLD_LIBRARY_PATH on macOS
Include a hint on working around it, which we cannot do automatically.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9107>
2025-05-30 17:04:04 +00:00
Nirbheek Chauhan
1ecfc008fc gst-env: Fix python linter and indent errors
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9107>
2025-05-30 17:04:04 +00:00
Thibault Saunier
313435f6cb general: Stop checking G_HAVE_GNUC_VARARGS now that we depend on c99
Cleaning up a bit the code now that we can rely on C99 which specifies
varargs for macros.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8990>
2025-05-30 15:30:36 +00:00
Pratik Pachange
8b12aea4c7 v4l2object: Provide padding requirements during propose allocation
If the driver has size alignment requirement, suggest the
difference between aligned size required by diver and the actual
size of the frame as padding requirement to the upstream element.

This will ensure that the buffer size allocation is as per the
driver requirement.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8971>
2025-05-30 13:02:58 +00:00
Enrique Ocaña González
a1a189c07c streamsynchronizer: Consider streams having received stream-start as waiting
When using the custom WebKitMediaSrc element (used by WebKit and able to
perform an initial seek in playbin), a stall caused by streamsynchronizer
was detected during an initial seek. The flow of events revealed that the
intertwining of the initial configuration of the streams with the reset
caused by the flush events from the seek left streamsynchronizer in an
inconsistent state:

streamsynchronizer0:sink_0 (video) events, starting before the seek:
 stream-start --> Sets the stream to wait
 flush-stop --> Clears the stream wait flag
 caps
 tag
 segment
 stream-collection
 (buffers start to come and flow properly)

streamsynchronizer0:sink_1 (audio) events, happening after seek:
 (no flush events, because the stream hadn't been initialized when the seek happened)
 stream-start --> Sets the stream to wait
 caps
 segment
 (stalled because the stream is in wait mode!)

The code in streamsynchronizer expects that all the streams are in wait
state before releasing all of them at once. The flush on the video stream
broke that assumption and that's why the audio stream is never released in
that scenario.

Avoiding the clearing of the wait flag on flush-stop isn't an actual solution
to the problem, as it creates other side effects and at least makes the
gst-editing-services/seek_with_stop test to timeout. The alternate solution
implemented in this patch consists on analyzing if the other streams different
from the one newly added (after the flush) aren't waiting (which would mean
that they've all been unlocked after all of them were waiting before), and,
in that case, mark the new stream as also not waiting.

A new test_stream_start_wait test case has been added to demonstrate this
problem. The test case creates a video stream, pushes a buffer, then
simulates a seek by pushing flush-start, flush-stop, stream-start and segment
events. Note that the flush-stop clears the video stream waiting flag.
After that, a new audio stream is created and stream-start and new segment
events are sent. Note that stream-start will set the audio stream to wait.
Then a buffer is pushed on each stream. In the failing case, the test hangs.
In the working case (after this fix), the test runs properly because the
fact of having seen a stream-start also helps to clear the wait flag.

A second new test_stream_start_wait_sparse test has also been added to prove
that this mechanism can also work with sparse streams (a special case of the
current stream-start handling code). This test behaves like the previous one,
but there's no video buffer after the seek (it'll come in the future, as the
stream is sparse, but actually never comes). The buffer after the seek in the
audio stream starts at its due time. Streamsynchronizer is able to ignore
the wait for the video stream and produce audio buffers on time.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4544>
2025-05-30 09:37:45 +00:00
Sebastian Dröge
86bb1cf907 webrtc-audio-processing: Add patches to fix compilation with gcc 15
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9038>
2025-05-30 10:24:07 +03:00
Sebastian Dröge
056c6967b2 ci: Update to Rust 1.87 / cargo-c 0.10.13
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9038>
2025-05-30 09:48:34 +03:00
Thibault Saunier
d83ad4379e asset: Do not warn on ges_asset_request for UriClipAsset
It is a common pattern to request UriClip asset sync to check if
it is in the cache and it is not a problem.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9126>
2025-05-30 01:46:23 +00:00
Thibault Saunier
bb2ce4e904 ges: Handle add_control_binding failures
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9126>
2025-05-30 01:46:23 +00:00
Víctor Manuel Jáquez Leal
72b7410511 vulkan: add best practices validation feature
It can be disabled in run-time via the environment variable
VK_KHRONOS_VALIDATION_VALIDATE_BEST_PRACTICES=false

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9119>
2025-05-30 00:36:40 +00:00
Víctor Manuel Jáquez Leal
b463d2b1da vulkan: remove vkDebugReportMessage() loading
Since it's not used.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9119>
2025-05-30 00:36:40 +00:00
Víctor Manuel Jáquez Leal
8eae5e95b7 vulkan: use VK_EXT_debug_utils if available
Nowadays VK_EXT_debug_report is considered deprecated and it's recommended to
replace it it VK_EXT_debug_utils, which offer a way to ignore messages
considered false positives.

The approach is to try the extension first, if available at compilation time, if
not or if it fails to load, VK_EXT_debug_report fallbacks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9119>
2025-05-30 00:36:40 +00:00
Tim-Philipp Müller
111c859d58 security-advisories: sync with www module
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9143>
2025-05-30 00:46:52 +01:00
Seungha Yang
d5dfa3ef5e d3d12screencapturesrc: Fix desktop handle leak
Calling CloseDesktop() on a handle that is currently in use will fail.
Close the handle after current desktop handle change

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9136>
2025-05-29 17:19:33 +00:00
Thibault Saunier
e2f54cc405 python: Convert buffer metadata API to use @property decorators
Convert buffer metadata getter/setter methods to Python properties for
more intuitive access. This makes the API more Pythonic by allowing
direct property assignment (buf.pts = 42) instead of method calls
(buf.set_pts(42)).

Updated properties: flags, pts, dts, duration, offset, offset_end

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9134>
2025-05-29 16:18:11 +00:00
Sebastian Dröge
edca7f83d1 subparse: Make sure that subrip time string is not too long before zero-padding
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4419
Fixes CVE-2025-47806

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9132>
2025-05-29 15:14:19 +00:00
Sebastian Dröge
9e2238adc1 subparse: Check for valid UTF-8 before cleaning up lines and check for regex replace errors
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4418
Fixes CVE-2025-47807

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9132>
2025-05-29 15:14:19 +00:00
Sebastian Dröge
6b19f11751 tmplayer: Don't append NULL + 1 to the string buffer when parsing lines without text
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4417
Fixes CVE-2025-47808

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9132>
2025-05-29 15:14:19 +00:00
Sebastian Dröge
48bf6a92d7 qtdemux: Use byte reader to parse mvhd box
This avoids OOB reads.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4394
Fixes CVE-2025-47183

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9131>
2025-05-29 15:01:20 +01:00
Sebastian Dröge
65f9e0e985 dvbsuboverlay: Actually make use of subtitle running time instead of using PTS
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4446

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9123>
2025-05-29 12:32:15 +00:00
Vasiliy Doylov
008e795a41 glshader: recompile shader on pipeline restart
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9120>
2025-05-29 10:15:40 +00:00
Wim Taymans
4417183bae riff-media: fix MS and DVI ADPCM av_bps calculations
Align the calculations for the number of samples per block with the
calculations in adpcmdec.

For MS ADPCM we have in adpcmdec:

       samples = (blocksize - 7 * dec->channels) * 2 + 2 * dec->channels;
       outsize = 2 * samples;
       outbuf = gst_buffer_new_and_alloc (outsize);

This gives us the total output byte size in 16 bits samples. To get back
to the samples, dividing by the channels and 2, we get the right samples per
block as:

       int spb = ((strf->blockalign / strf->channels) - 7) * 2 + 2;

Which we can then use to calculate the bitrate in riff-media.

A similar calculation for DVI ADPCM is needed to get the right bitrate
in all cases.

Tested with the sample in https://bugzilla.gnome.org/show_bug.cgi?id=636245
and another (failing before this patch) sample.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9082>
2025-05-29 10:09:51 +02:00
Doug Nazar
581e72a23e rtsp-server: tests: Fix a few memory leaks
Also use any port to run server to avoid conflicts.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9116>
2025-05-28 23:41:49 +00:00
Doug Nazar
feb6e1602a validate: Escape '%' in Valgrind log filenames
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9042>
2025-05-28 16:01:44 +00:00
Doug Nazar
822bef51f0 validate: Fix marking actions done
Don't take extra ref during calling done() from 'stream-selection'
Mark as done actions that are completed immediately

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9042>
2025-05-28 16:01:44 +00:00
Doug Nazar
5c4bf60c94 validate: Free log files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9042>
2025-05-28 16:01:44 +00:00
Doug Nazar
09cf44aa13 validate: Various minor cleanups for lost memory or use after free
Includes several missing unref(), clear() or free() calls.
Reset current_seek since we just cleared all the seeks.
Reset all_configs to NULL to prevent double clearing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9042>
2025-05-28 16:01:44 +00:00
Tim-Philipp Müller
d273b790e1 textoverlay: fix shading for RGBx/RGBA pixel format variants
... for cases where there's padding at the end of each row.

Fixes #4414.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9106>
2025-05-28 08:45:03 +00:00
Daniel Morin
e72e9a95d8 rtpsender: fix 'priority' GValue get/set
- 'priority' is declared as enum, we need to use g_value_[get|set]_enum()

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9105>
2025-05-28 07:28:16 +00:00
Aleix Pol
e627d02171 qml6glitem,qtitem: Allow configuring if the item will consume input events
At the moment we are always accepting the input events to forward into
GStreamer infrastructure. This works but we might have other uses for
such events elsewhere in the QtQuick scene so allow opting out to this
behaviour.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9085>
2025-05-28 01:13:21 +00:00
Doug Nazar
c5f9d4073f adaptivedemux2: Fix race for expected error in test
After gst-validate-1.0 notices the first expected error on the bus, it will
queue the completion of that action while the pipeline is still processing the
error and getting to the basesrc for the second error.

Mark the second error as 'sometimes=true', as it's not critical to the test.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9060>
2025-05-27 20:35:41 +00:00
Doug Nazar
c14b135861 adaptivedemux2: Ensure all download tasks call g_task_return_*()
There is a small window during stopping when tasks have been add
to the transfer_requests queue, but never transfered to the
active_transfers array and causes the fallowing error:

GTask 0x7f2c4400e930 (source object: (nil), source tag: (nil)) finalized
without ever returning (using g_task_return_*()).
This potentially indicates a bug in the program.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9060>
2025-05-27 20:35:41 +00:00
Xavier Claessens
cedeef3cb1 pre-commit: Workaround broken shebang on Windows
Using "python" in the shebang breaks those scripts when ran outside of
pre-commit venv.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9080>
2025-05-27 12:00:28 +00:00
Doug Nazar
7fe08e057c tsdemux: Ensure AC3 descriptor is long enough before accessing
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9044>
2025-05-27 10:44:37 +00:00
Doug Nazar
3df63a079c glcontext/egl: Free dma_formats if someone else already initialized
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9044>
2025-05-27 10:44:37 +00:00
Doug Nazar
99aba78c88 gstreamer: Ensure we free the template
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9044>
2025-05-27 10:44:37 +00:00
Doug Nazar
75cf21d834 gstreamer: A few small memory cleanups
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9044>
2025-05-27 10:44:37 +00:00
Sebastian Dröge
68815a3a15 play: Improve stream selection
- Unset stream ids if a collection does not contain them
  - Automatically select a default stream of a type if the stream type is
    enabled but no stream is selected yet when receiving the stream collection
  - Warn if there's a collection update via streams-selected and if there are
    unexpected streams being selected, or actually selected streams not being
    found
  - Improve debug output a bit

Among other things this also makes sure that we don't forget a selected stream
id when disabling a track so that when enabling it again later the same one can
be enabled again.

See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4344

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9081>
2025-05-27 09:31:52 +00:00
Doug Nazar
50cad4a7fa libav: Only allocate extradata while decoding
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9056>
2025-05-27 08:28:11 +00:00
Thibault Saunier
d0b2e6cb68 validate: scenario: Fix race condition when ignoring EOS
The part of the code that is commented with:

```
  /* gst_validate_action_set_done() does not finish the action
    * immediately. Instead, it posts a task to the main thread to do most
    * of the work in _action_set_done().
    *
    * While the EOS handling lock guarantees that if an action had to call
    * gst_validate_action_set_done() it has done so, it does not guarantee
    * that _action_set_done() has been called.
    *
    * Is it possible that this handler is run before _action_set_done(), so
    * we check at this point for actions that have a pending_set_done and
    * call it before continuing. */
```

was not being executed in the case where the scenario was 'ignoring EOS'
while it was also required.

Also fix potential use after free in that specific code path.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9014>
2025-05-27 06:59:36 +00:00
Seungha Yang
8ff0a1c132 nvencoder: Fix GstNvEncTask leak on non-flow-ok return
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9078>
2025-05-27 00:05:37 +09:00
Seungha Yang
1fb633368e nvencoder: Fix GstVideoCodecFrame leak on non-flow-ok return
... and use gst_video_encoder_release_frame() to drop frame
instead of gst_video_encoder_finish_frame()

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9078>
2025-05-26 23:39:21 +09:00
Nicolas Dufresne
500f9b60af alphacombine: Fix seeking after EOS
The alpha_eos state was not being reset on flush-stop, as a side effect
flushing seek after EOS did not work.

Fixes #4442

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9069>
2025-05-26 12:13:40 +00:00
Seungha Yang
5521af04f8 d3d12memory: Allow set_fence() only against writable memory
Setting a fence to memory should only be allowed on the side
that modified that memory or has the right to modify it

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9075>
2025-05-26 11:34:29 +00:00
Seungha Yang
2a44248bcd d3d12: Enable GIR for MSVC build as well
cerbero issue should be fixed by
https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1824

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9076>
2025-05-26 18:29:53 +09:00
Seungha Yang
66b35a984d d3d12memory: Make D3D12 map flags inspectable
GIR scanner does not seem to be able to infer integer value

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9076>
2025-05-26 18:29:47 +09:00
L. E. Segovia
7b8d4c0974 orc: Update pregenerated files
Fixes -Wtype-limits on gstbayer.orc when emulating convuuslw.

Regenerated Orc files use OrcOnce, which increases the minimum version to 0.4.34.

See https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/212 (ORC_MIN)

See https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/238 (AVX2 convussql)

See 8a86d51753 (OrcOnce)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9067>
2025-05-25 14:36:17 +00:00
L. E. Segovia
00dfff821a orc: Remove references to gst-indent-1.0
These are automatically handled by pre-commit now.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9067>
2025-05-25 14:36:17 +00:00
Thibault Saunier
515bf888a9 python: Make use of the new structure.is_writable method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9027>
2025-05-25 15:16:37 +02:00
Thibault Saunier
78a44afc22 gst: Add a gst_structure_is_writable method
There are cases (in the gst-python bindings for example) where
it is interesting to know that the structure is not writable

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9027>
2025-05-25 15:16:37 +02:00
Thibault Saunier
f0e1591111 python: Add overrides for Buffer/Query/Event/Context to handle writability
And make them look more like proper MiniObject

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9027>
2025-05-25 15:16:37 +02:00
Thibault Saunier
0201423142 python: Factor out a MiniObject class that all mini object will be based on
Making the API closer to what it should be as Caps are MiniObject

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9027>
2025-05-25 15:16:37 +02:00
Thibault Saunier
da9365176b python: Add a Caps.get_value variant that does not copy the structures
Keeping the __getitem__ implementation the same way

This also now make structure.set_value() raise an exception if the structure
was not writable

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9027>
2025-05-25 15:16:37 +02:00
Thibault Saunier
c3d2209c1f python: Add overrides to be able to write into the GstStructure inside GstCaps
Add Python bindings for allowing to modify GstCaps structures with proper
writability checks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9027>
2025-05-25 15:16:37 +02:00
Thibault Saunier
9754f31fdb meson: Do no run python-full test when GStreamer-full is not built
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9027>
2025-05-25 15:16:36 +02:00
Seungha Yang
e10b460ed4 rtputils: Add debug category
Use rtputils specific debug category instead of "default"

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9070>
2025-05-25 19:32:34 +09:00
Sebastian Dröge
60d9ad038c meta: Add g_return_val_if_fail() for NULL valid_tags in gst_meta_api_type_tags_contain_only()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9054>
2025-05-25 06:45:27 +00:00
Robert Mader
31660c3ad2 glupload: Promote fixate caps results print to info
And include the input caps. The idea is that this info is
often among the most relevant and having it on INFO level
thus allows to avoid the more noisy DEBUG one.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8981>
2025-05-25 00:23:44 +00:00
Doug Nazar
635e0ad5c1 dash: mpdclient: Re-enable test now that mpdclient is fixed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8734>
2025-05-24 12:10:59 +00:00
Doug Nazar
9a04896293 dash: mpdclient: Don't pass terminating NUL to adapter
libxml2 will complain if it detects any characters after the valid
XML, including a NUL byte.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8734>
2025-05-24 12:10:59 +00:00
Jan Schmidt
8eb5e3771b vtenc: Use strlcpy instead of strncpy
Silences a compiler warning, and there's no cross-platform
consideration as this plugin is apple-only

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9058>
2025-05-23 19:00:32 +00:00
Jordan Petridis
a61ce97e48 ci: Use the existing checkout to create the subproject cache
Now that we have the monorepo, we always have a checkout
of gstreamer and we don't need to explicitly clone it again.

cbuild in ci-templates will always clone the repository in
/tmp/clone and we can use that to initialize the cache.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8994>
2025-05-23 14:29:52 +00:00
Jordan Petridis
a74bda813b ci: Always create the subproject cache from the upstream repo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8994>
2025-05-23 14:29:52 +00:00
Branko Subasic
73ef16864e matroskamux: Write stream headers before finishing file
In the rare case when we get EOS on all pads before we get any buffer we
would finish the file without writing headers, i.e. the file would be
corrupt. This patch makes sure that a header is always written.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9061>
2025-05-23 13:37:17 +00:00
Jordan Petridis
98e8d3a127 gsttracerutils: Fix leak in gst_tracer_utils_create_tracer()
Co-authored-by: Alicia Boya García <aboya@igalia.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9028>
2025-05-23 12:37:15 +00:00
Jan Schmidt
4c6a0b655d meson: Add build_rpath for qt6 plugin on macOS
This is the same fix for qt6 that was done for the qt5 plugin
in gstreamer/gstreamer!3708

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9059>
2025-05-23 11:16:18 +00:00
Nirbheek Chauhan
e4d5cece28 meson: Add a monorepo-wide qt-method option and yield to it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9046>
2025-05-23 09:43:17 +00:00
Nirbheek Chauhan
32eaa0ae35 meson: Rework build files for qt examples in -base
The build files had quite a few things wrong:

* Not using the method: kwarg, which can cause the wrong Qt to be
  used for building
* There was no way to enable the build for them
* Qt was being detected multiple times, differently
* Unnecessary check for libGL
* have_cxx was being used incorrectly
* Qt tool detection was outdated

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9046>
2025-05-23 09:43:17 +00:00
Nirbheek Chauhan
0ba85c84a1 meson: Make qml/qml6 plugins use the right qt detection method
Otherwise they can pick up the wrong qt and cause two different Qt
instances to be used in the same program.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9046>
2025-05-23 09:43:17 +00:00
Nirbheek Chauhan
331a381c66 meson: Fix qt detection for qt6d3d11 plugin
This now matches the code for the qml6gl plugin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9046>
2025-05-23 09:43:17 +00:00
Seungha Yang
099b8825a7 d3d12: Generate gir file
Prerequisite for rust binding

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9053>
2025-05-23 06:45:37 +00:00
Seungha Yang
ac49baabb6 d3d12: Fix docs annotations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9053>
2025-05-23 06:45:37 +00:00
Doug Nazar
2dc485823c rtsp-server: A few small memory cleanups
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9052>
2025-05-22 10:53:33 +00:00
Thibault Saunier
feb3df61a7 debug: Use log contexts in some places
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6855>
2025-05-22 09:53:35 +00:00
Thibault Saunier
c796abbf0a gst: info: Add a GstLogContext API
Add a new API to control logging behavior, particularly for implementing
"log once" functionality and periodic logging. This helps avoid spamming
logs with repetitive messages.

The API provides:
- Static and dynamic context creation
- Configurable message identity calculation
- Periodic reset capability
- Context-aware logging macros
- Element message variants with context support

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6855>
2025-05-22 09:53:35 +00:00
Doug Nazar
707024f940 ges: Free path and uri
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9043>
2025-05-21 20:12:31 +00:00
Doug Nazar
1383140c5c ges: Ensure we free the pad and the pad template
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9043>
2025-05-21 20:12:31 +00:00
Doug Nazar
938a7a0de0 ges: Silence warning about invalid escape sequence
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9043>
2025-05-21 20:12:31 +00:00
Robert Mader
47308092dd wayland: Remove custom format mapping
As of Gst >= 1.24 we can just use GstVideoInfoDmaDrm APIs. Note
that SHM formats match DRM ones with only two exceptions.

No functional changes intended (for backporting) apart from
supporting a few more formats - those present in video-info-dma.c
but missing in the removed mapping.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8983>
2025-05-21 18:11:12 +00:00
Sebastian Dröge
571f32eec0 qtdemux: cmpd box is only mandatory for uncompressed video with uncC version 0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9039>
2025-05-21 17:04:26 +00:00
Guillaume Desmottes
328b6bc55d core: gstvalue: fix ANY/EMPTY caps (features) hash
They should be special cases as both do not have any actual caps/features.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9037>
2025-05-21 16:03:15 +00:00
Guillaume Desmottes
8f627b1f9c uridecodebin3: Don't hold play items lock while releasing pads
Releasing the pad can cause messages that call back into the message
handler of uridecodebin3 and take exactly the same lock again.

Fix #4443

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9032>
2025-05-21 14:43:08 +00:00
Sebastian Dröge
7ffbb1ce34 subtitleoverlay: Remove 0.10 hardware caps handling
This also reverts c02d41c2. videoconvert and videoscale are supposed to support
raw video with any caps features as long as no conversion is actually necessary,
and assuming they don't breaks usage of GstVideoOverlayCompositionMeta with e.g.
dmabuf or GL memory caps.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9020>
2025-05-21 13:07:51 +00:00
Sebastian Dröge
34efd430e4 videobalance: Implement basetransform meta transform function
This makes sure we can pass through more metas correctly, e.g.
GstVideoOverlayComposition meta.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9004>
2025-05-21 12:13:56 +00:00
Sebastian Dröge
6072e54666 gl: Implement basetransform meta transform function
This makes sure we can pass through more metas correctly, e.g.
GstVideoOverlayComposition meta.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9004>
2025-05-21 12:13:56 +00:00
Sebastian Dröge
1c3bc57d00 videoconvertscale: Use new gst_meta_api_type_tags_contain_only() API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9004>
2025-05-21 12:13:56 +00:00
Sebastian Dröge
bd3c267adb meta: Add gst_meta_api_type_tags_contain_only()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9004>
2025-05-21 12:13:56 +00:00
Sebastian Dröge
8099c7e186 validate: Add a set of tests for checking if videooverlaycomposition reaches the sink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9024>
2025-05-21 11:42:52 +00:00
Matthew Waters
daae2c18a4 gl/window: add support for configuring whether a backing surface is needed
Fixes videotestsrc ! glimagesink videotestsrc ! glimagesink under Wayland (at
least).

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9007>
2025-05-21 08:30:47 +00:00
Thibault Saunier
6fc32cbe0e validate: Do not list test files that are not autogenerated in .testlist
It was useless, adding the .validatetest to the git repo should be enough

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9035>
2025-05-20 21:43:14 +00:00
Hou Qi
749987be2b v4l2: pool: Send drop frame signal after dqbuf success
This is a regression introduced by https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5479

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8969>
2025-05-20 19:20:17 +00:00
Thibault Saunier
5658683881 imagefreeze: Reset 'flushing' state when receiving FLUSH_STOP
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9015>
2025-05-20 16:47:09 +00:00
Thibault Saunier
5fc7340a70 imagefreeze: Set seqnum from segment too
This is the right behavior, setting from seeks is also OK but we should take the seqnums from segment into account too

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9015>
2025-05-20 16:47:09 +00:00
Olivier Crête
9e3d251c23 tflite: Also look for C symbols in libtensorflow-lite
For some builds, there isn't a separate C library such as
some Yocto builds of tflite.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8523>
2025-05-20 16:05:51 +00:00
Olivier Crête
25cf5262dd tflite: Make VSI header build in C code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8523>
2025-05-20 16:05:51 +00:00
Olivier Crête
c941ded4ba tflite: Add Coral EdgeTPU inference element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8523>
2025-05-20 16:05:51 +00:00
Denis Shimizu
05782229ee tflite: Add TensorFlow Lite element
A new element wrapping the LiteRT (aka TensorFlow Lite) inference engine.
It currently supports only CPU.

Co-authored-by: Daniel Morin <daniel.morin@collabora.com>
Co-authored-by: Denis Shimizu <denis.shimizu@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8523>
2025-05-20 16:05:51 +00:00
Olivier Crête
5c188d90c0 tensor: Add helper function to stringify a tensor data type
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8523>
2025-05-20 16:05:51 +00:00
Seungha Yang
ba05421ab2 baseparse: Add disable-clip property
Adding a property to allow pushing buffers that are out of segment,
and do not drop out of segment buffers by default

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8773>
2025-05-20 12:17:22 +00:00
Seungha Yang
1688d2c410 d3d12: Fix gstreamer-full subproject build with gcc
Since default option "cpp_std=c++14" is not applied automatically
in case that gstreamer is used as a meson subproject, specify
cpp_std option explicitly

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9030>
2025-05-20 11:12:20 +00:00
Nirbheek Chauhan
ceb1e6cd33 webrtc examples: Fix building with make
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9023>
2025-05-19 19:42:23 +00:00
Nirbheek Chauhan
6c9f9761ad webrtc examples: Fix running against self-signed certs
This broke with the initial port to libsoup 3.0

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9023>
2025-05-19 19:42:23 +00:00
Doug Nazar
08143e9967 validate: baseclasses: Reset Test timeouts between iterations
Several options (valgrind, gdb, rr) increase the timeout each time
the tests start. Eventually reaching inf and causing a conversion
to integer to throw an exception.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9019>
2025-05-19 17:09:43 +00:00
Adrian Perez de Castro
3968dd92a5 alsa: Support enumerating virtual PCM sinks
Add support to the ALSA device provider to enumerate PCM outputs that do
not correspond to a physical sound device i.e. they are "virtual" sinks,
like the plug, dmix, or softvol PCM outputs that can be setup in the ALSA
configuration files.

The main use-case for this is allowing usage of GstDeviceMonitor in setups
where there is no audio server and have custom ALSA audio configurations.
As those are likely to be uncommon, the feature is opt-in: a list of device
names and wildcard patterns separated by semicolons must be assigned to the
GST_ALSA_PCM_ALLOW environment variable before such PCM outputs will be
enumerated by the ALSA device provider. This allows either scanning all
PCM outputs, listing individual outputs, providing simple patterns with
'*' wildcards (which match only at the start or end of the name), or
a combination of them:

  GST_ALSA_PCM_ALLOW=1                         # Enable listing PCM outputs.
  GST_ALSA_PCM_ALLOW='*'                       # Same, using a wildcard.
  GST_ALSA_PCM_ALLOW='out_1;out_1'             # Exact listing.
  GST_ALSA_PCM_ALLOW='out_*'                   # Using a wildcard.
  GST_ALSA_PCM_ALLOW='out_*;other_*;line_out'  # Multiple items.

The main motivation for this patch is supporting enumeration of PCM outputs
in the WebKit GTK and WPE ports, which use GstDeviceMonitor to determine
which devices may be chosen for sound output. While on desktops typically
PulseAudio or PipeWire are used nowadays, on embedded devices it is often
desirable to avoid them and use custom configurations that perform audio
routing and processing using only ALSA.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8831>
2025-05-17 00:47:36 +03:00
Doug Nazar
d33107226c audiovisualizer: Change test to use native endian audio format
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8975>
2025-05-18 11:03:59 +00:00
Doug Nazar
19a330dba0 audiomixer: Change test to use native endian audio format
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8975>
2025-05-18 11:03:59 +00:00
Doug Nazar
74f84484a2 videoconvertscale: Use correct variable size for gst_structure_get()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8975>
2025-05-18 11:03:59 +00:00
Doug Nazar
46e13bca06 tests: opus: Update channel support and add to meson
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8982>
2025-05-17 16:51:28 +00:00
Jan Schmidt
6ecf12f019 adaptivedemux: Answer element-level SELECTABLE query
Add handling for the selectable query as an element query,
on top of the existing pad query handling. This is useful
for uridecodebin when handling stream collection messages
before any adaptivedemux source pads have been exposed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9002>
2025-05-17 11:13:12 +00:00
Jan Schmidt
f6efbbfa2f adaptivedemux: Copy collection inside lock
When posting the collection message, don't access the shared
collection after releasing the manifest and track locks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9002>
2025-05-17 11:13:12 +00:00
Sebastian Dröge
6877ca4d62 pipeline: Store the actual latency even if no static latency was configured
Previously the latency was only stored if a static latency was configured on the
pipeline, which caused gst_pipeline_get_configured_latency() to always return
GST_CLOCK_TIME_NONE in that case.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8972>
2025-05-17 08:58:58 +00:00
Sebastian Dröge
f3b077ff9a validate: Update h265parse expected file for container-provided bitrates
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
c6fb458a3e gst-integration-testsuites: Update medias submodule
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
c5520a7cae qtdemux: Add support for DNxHR
Apart from the fourcc it works the same as DNxHD and can be distinguished from
the beginning of each frame header.

ffmpeg uses the same codec ID for DNxHD and DNxHR so we use the same caps with
just an additional, optional profile field for the DNxHR profile.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
9fa7f8b001 qtdemux: Parse content light level and mastering display info if available
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
8a30c6b13b qtdemux: Use already parsed codec data boxes instead of parsing a second time
And parse common boxes in a central place.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
cba7ce1228 qtdemux: Add missing codec sample entry fourccs to qtdemux_parse_node()
This allows parsing the various common sample entry boxes like btrt, colr, pasp,
chan, chnl, etc. for extending the caps with additional information.

Also unify some cases, which as a side effect makes them more correct because
many were not checking for different versions of the boxes and the corresponding
different offsets.

See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4403

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
118e66f59d qtdemux: Take Theora headers directly out of the already parsed nodes
Instead of parsing them yet another time.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
137044195d qtdemux: Don't parse fiel box a second time for JPEG-2000
It was already parsed above in general for all video codecs. Just put the number
of fields into the JPEG-2000 in the specific field.

As a side effect this also actually checks if enough data is available.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
45443603f8 qtdemux: Remove second parsing of fiel box for JPEG
Exactly the same is already done some hundred lines above for all video codecs.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
8687ef453c qtdemux: Simplify parsing of SVQ3/VP31 boxes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
98d8bb9a12 qtdemux: Parse codec data for QDM2/QDMC correctly
First find the wave box then include its whole content instead of just including
everything from a random offset onwards.

Also actually do that for QDMC instead of leaving commented code.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
cd6d2f16a6 qtdemux: Use already parsed damr box for AMR NB/WB streams
Instead of parsing it again and possibly getting the offset for reading
it wrong.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
18db5538a0 qtdemux: Don't parse audio sample entry a second time in mp4a fallback case
These values were all passed a few hundred lines above already and can directly
be re-used here. The offset for the sample rate was also wrong.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
d98df47e53 qtdemux: Add qtdemux_tree_get_child_by_index_full() helper function
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
2b18846e39 qtdemux: Fix endianness/alignment problems with parsing omwa sample description entries
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
f575fe763c qtdemux: Handle stsd entry offset correctly for audio in qtdemux_parse_node()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
ae4d505fe0 qtdemux: Pass stsd entry node to caps creation functions
Also fix lpcm to only read its additional fields from sound sample description v2.
Previously it would read random data if a different stsd entry was used.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
3ecb07c674 qtdemux: Don't parse invalid data from ISOBMFF AudioSampleEntryV1
The additional fields only exist in sound sample description v1, which
is only defined for MOV.

ISOBMFF has AudioSampleEntryV1 but it has the exact same layout as
AudioSampleEntry.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
fec61cc546 qtdemux: Don't retrieve video stsd entry multiple times
And remove various duplicated checks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
af5cce9968 qtdemux: Parse uncompressed video uncC / cmpd boxes from already parsed stsd entry
Also simplifies code and error checking considerably.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
a6e58f7331 qtdemux: Don't retrieve enca/encv boxes a second time, wrongly
They need to be retrieved by index and they were already correctly retrieved
just above so let's just use that.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
bb50741b73 qtdemux: Use already parsed stsd entries instead of parsing them again
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Sebastian Dröge
cf2b1909ec qtdemux: Fix typo in debug message
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929>
2025-05-17 07:59:46 +00:00
Matthew Waters
ea577da12e examples/webrtc/signalling: fix compatibility with python 3.13
Fixes:

Traceback (most recent call last):
  File "/usr/lib64/python3.13/site-packages/websockets/asyncio/server.py", line 373, in conn_handler
    await self.handler(connection)
          ~~~~~~~~~~~~^^^^^^^^^^^^

TypeError: WebRTCSimpleServer.run.<locals>.handler() missing 1 required positional argument: 'path'
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8992>
2025-05-16 18:33:09 +00:00
Sebastian Dröge
08c56f3e2d element: ref-sink the correct pad template when replacing an existing one
templ is the new one that is being stored and that needs to be ref-sinked,
padtempl is the old one that just needs to be unreffed.

Fixes leaking the old template, and also makes sure that the new template is not
floating which can cause use-after-frees with bindings as they might wrongly
take ownership of a still floating template.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8988>
2025-05-16 17:47:47 +00:00
Adrian Perez de Castro
6432f6a1f2 alsa: Avoid infinite loop in DSD rate detection
Stop testing DSD rates in gst_alsa_detect_dsd_rates() if the rate becomes zero
or negative. This avoids an infinite loop if gst_alsa_probe_supported_formats()
is used on a PCM sink defined like the following in the ALSA configuration file:

  pcm.buggy {
    type plug
    slave.pcm "buggy_volume"
    hint.description "Causes an infinite loop in GStreamer"
  }
  pcm.buggy_volume {
    type softvol
    slave.pcm "buggy_dmix"
    control.name "buggy_volume"
  }
  pcm.buggy_dmix {
    type dmix
    ipc_key 12345
    slave {
      pcm "hw:0,0"
      period_size 1024
      buffer_size 4096
    }
  }

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8985>
2025-05-16 17:09:05 +00:00
Robert Mader
c03a5b0c1b glupload: Only add texture-target field to GL caps
So far we simply ignored it for MEMORY_DMABUF passthrough caps
without known negative cosequences, but with upcoming more complicated
caps negotiations it's becoming an issue, thus fix it.

Fixes: 7e71d4f753 ("gl: upload: Add DMA_DRM passthrough upload")
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8964>
2025-05-16 13:40:43 +00:00
Jordan Petridis
818feea0b5 bad: Add more variants for an srt suppression
Followup to 087cb87d27e268d55a8d152690870ac4a2b3e166

These are some more variants of the same issue we
already suppressed in the commit above.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8979>
2025-05-15 15:21:20 +00:00
Jordan Petridis
17d271057a core: suppress glib_init_ctor as well
We already suppress gobject_init_ctor and this
is the same.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8979>
2025-05-15 15:21:20 +00:00
Jordan Petridis
9dc21492a3 opencv: import as system dep
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8979>
2025-05-15 15:21:20 +00:00
Jordan Petridis
d68f472683 bad: Avoid gcc false positive about variable initialization
In gstbayer2rgb the dtmp always gets initialized when
we check for bayersrc16.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8979>
2025-05-15 15:21:20 +00:00
Sebastian Dröge
faa912a31d wavparse: Error out correctly if no data tag is found until EOS in pull mode
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8956>
2025-05-15 10:24:37 +00:00
Sebastian Dröge
ba8fd35e72 wavparse: Ignore EOS when parsing the headers
The file might be truncated or contain < 8 bytes of remaining data after the
last chunk.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8956>
2025-05-15 10:24:37 +00:00
Doug Nazar
a332a411b7 tests: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8984>
2025-05-14 14:45:55 -04:00
Doug Nazar
a8e11cec9a spectrum: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8984>
2025-05-14 14:45:55 -04:00
Doug Nazar
ebaf87cd17 law: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8984>
2025-05-14 14:45:55 -04:00
Doug Nazar
39cb7b38e7 flac: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8984>
2025-05-14 14:45:55 -04:00
Doug Nazar
11dccf43e0 volume: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8984>
2025-05-14 14:45:55 -04:00
Doug Nazar
bf05a050e9 audiomixer: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8984>
2025-05-14 14:45:55 -04:00
Doug Nazar
af2b6b4c38 adder: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8984>
2025-05-14 14:45:55 -04:00
Doug Nazar
17474ebbb2 videoframe-audiolevel: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8984>
2025-05-14 14:45:55 -04:00
Doug Nazar
a9f5362ff7 musepack: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8984>
2025-05-14 14:45:55 -04:00
Doug Nazar
19e35473f0 ges-audio-track: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8984>
2025-05-14 14:45:55 -04:00
Doug Nazar
d3658eef72 controller: Free various props before being set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
2025-05-13 19:47:37 -04:00
Doug Nazar
80072383c5 directcontrolbinding: Free various props before being set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
2025-05-13 19:46:34 -04:00
Doug Nazar
42741ce897 rtspclientsink: Free various props before being set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
2025-05-13 19:45:12 -04:00
Doug Nazar
0c0b4ad6d0 gstrtspsrc: Free various props before being set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
2025-05-13 19:44:21 -04:00
Doug Nazar
e4f60e44ee gstglfiltershader: Free various props before set & during cleanup
gst_object_replace() takes a reference so no need to dup object.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
2025-05-13 19:42:37 -04:00
Doug Nazar
4fb0a06271 uritranscodebin: Free various props before being set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
2025-05-13 19:37:59 -04:00
Doug Nazar
38ca8ae156 transcodebin: Free various props before being set
Also disable setting filters more than once.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
2025-05-13 19:35:58 -04:00
Doug Nazar
9d91e4cfc2 vulkan: Free various props before being set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
2025-05-13 19:34:59 -04:00
Doug Nazar
e81d0124da transcoder: Free various props before during cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
2025-05-13 19:23:53 -04:00
Doug Nazar
5867c7900a all: Annotate *_set_property() contructor only props without free
Properties that are marked constructor only aren't required to be freed
before g_value_dup_*() as they can only be called once during construction.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
2025-05-13 19:15:21 -04:00
Seungha Yang
4d87ffb8f3 d3d12decoder: Workaround for NVIDIA crash on resolution change
Recent NVIDIA driver seems to crash on resolution change
if ID3D12VideoDecoder and ID3D12VideoDecodeCommandList are reused.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4415
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8968>
2025-05-12 23:40:13 +00:00
Olivier Crête
111c0a4186 h264parse test: Ensure avc3 caps include a codec_data
The avc3 caps without a codec_data are just totally invalid

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8955>
2025-05-12 18:31:46 -04:00
Olivier Crête
f13c757696 h264parse: Require codec_data when receiving stream-format=avc or avc3
It's not really possible to safely interpret the content afterwards if
it's missing.

Even for AVC3, the codec_data doesn't need to contain a SPS/PPS, but
it still needs to be present to tell downstream elements about the size
of the nal unit length field.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8955>
2025-05-12 18:31:46 -04:00
Olivier Crête
ffed473992 h264parse: Never output stream-format=avc/avc3 caps without codec_data
It's not possible to interpret further buffers without knowing the nal_length_size
field, so avc1/avc3 caps without the codec_data aren't valid, don't push them out.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8955>
2025-05-12 18:31:46 -04:00
Olivier Crête
38499c949d h264parse test: Send PPS in SPS parsing test
Without the PPS, the codec_data can not be created

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8955>
2025-05-12 18:31:46 -04:00
Seungha Yang
bef18d47cf nvjpegenc: Add autogpu mode element
Similar to nvautogpu{h264,h265,av1}enc, adding auto gpu select mode
element

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8555>
2025-05-11 00:01:28 +00:00
Seungha Yang
7d45eca2ce nvjpegenc: Use stream-ordered alloc if requested
If user requested stream-ordered allocation, use async alloc/free
methods

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8555>
2025-05-11 00:01:28 +00:00
Xavier Claessens
0172e47a79 python: Add Gst.Float wrapper
When the float python type is used inside a GstValueArray, it is
converted to a G_TYPE_DOUBLE GValue. Sometimes it is important to be
able to force G_TYPE_FLOAT GValue, for instance to set the the
"mix-matrix" property on audioconvert.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8957>
2025-05-10 23:23:14 +00:00
Xavier Claessens
cff1d1962b gstmessage: Debug error message is nullable
When debug is NULL, gst-launch-1.0 won't print
"Additional debug info:" line.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8943>
2025-05-10 22:13:22 +00:00
Xavier Claessens
d5995b9302 python: Fix usage of our overrides from devenv
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8952>
2025-05-10 21:38:06 +00:00
Xavier Claessens
6833932e92 python: Optimize ValueArray.get_size()
There is no need to call into C layer as we have the python list
already.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8952>
2025-05-10 21:38:06 +00:00
Xavier Claessens
c2a4c3a53a python: override Gst.ValueArray.append_value()
This ensures that self.array is kept up to date.

Add append() method that is more natural than the static method.

Allow creating empty ValueArray by omitting the constructor parameter.

Fixes: #3114
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8952>
2025-05-10 21:38:05 +00:00
Xavier Claessens
20904a1b92 python: Fix coding style errors in unit tests
Otherwise pre-commit does not pass.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8952>
2025-05-10 21:38:05 +00:00
Santosh Mahto
700b665bf7 gstanalytics: Add transform function to copy the tensor meta
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8825>
2025-05-10 20:58:52 +00:00
Daniel Morin
57e8dbfeb4 analytics: change tensor-id and use new API
- tensor-id changed to match tensor-id-registry at https://github.com/collabora/tensor-id-registry
- Use new GstTensorMeta API to get tensor.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8548>
2025-05-10 19:18:41 +00:00
Daniel Morin
ec60daa66d tensordecoder: add general classifier tensor-decoder
- Classification output is more standard compare to other tensor-decoder.
- This tensor-decoder implement a standard classification tensor-decoder.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8548>
2025-05-10 19:18:40 +00:00
Alexander Slobodeniuk
7f4282481e removesilence: canonicalize property names
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8915>
2025-05-10 12:09:38 +00:00
Alexander Slobodeniuk
da2e67d5d8 handdetect: canonicalize property names
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8915>
2025-05-10 12:09:38 +00:00
Alexander Slobodeniuk
d437e92049 properties: add G_PARAM_STATIC_STRINGS where missing
"Hold on, I know you need to generate the registry, but let me just
create copies of all those strings first", Framework whispered

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8915>
2025-05-10 12:09:38 +00:00
Seungha Yang
ee59564d5c examples: cuda: Fix build with old CUDA SDK
Some symbols are not available in old cuda headers.
Use our stub headers instead

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8950>
2025-05-10 11:06:16 +00:00
Seungha Yang
864068c045 cuda: Fix runtime PTX compile
Handle extra option args

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8950>
2025-05-10 11:06:16 +00:00
Olivier Crête
14f833fdcf rtph264pay: Reject stream-format=avc without codec_data
Without the codec_data, it's impossible to know the size of the field
for the number of NALu in a buffer. And since nal_length_size is unkown
the stream can't be parsed and payloaded and we risk an infinite loop.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8954>
2025-05-10 10:23:30 +00:00
Pablo García
380a947155 curl: use CURL_SOCKET_BAD to ensure cross-platform
Solves this error in Windows build:
        ../ext/curl/gstcurlbasesink.c:1154:14: error: comparison of unsigned
        expression in '< 0' is always false [-Werror=type-limits]
        1154 |   if (curlfd < 0) {

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8615>
2025-05-09 00:16:11 +00:00
Tim-Philipp Müller
ee0f2a0bb2 ci: check-diff: fix curl command line to handle redirects
Seems to be needed now with the new caching/bot-protection layers.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8949>
2025-05-08 11:14:40 +01:00
Tim-Philipp Müller
4f43ecc7c0 meson: fix check for .git directory
Use right variable for fs module.

Fixes regression introduced by commit d40619d, see
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8764/

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8942>
2025-05-07 09:04:44 +00:00
Sebastian Dröge
999c43ada1 mikey: Avoid infinite loop while parsing MIKEY payload with unhandled payload types
Skip over the unhandled payload types for now, and error out if an unknown
payload type is found.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8917>
2025-05-07 05:56:53 +00:00
L. E. Segovia
86ef06ddff curl: Fix build with MSVC
See https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1740#note_2895537

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8932>
2025-05-07 00:52:16 +00:00
Jakub Adam
ba87e0112f qt6glwindow: add log message when a buffer pool gets set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8938>
2025-05-06 19:50:43 +00:00
Jakub Adam
9f4f543bf7 gldownload: improve logging of gl-dmabuf pool usage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8938>
2025-05-06 19:50:43 +00:00
Jakub Adam
f9941b135f gldmabufferpool: disable "free cache" workaround in GstGLBufferPool
This pool isn't reusing its buffers, which makes it pointless to enable
the cache

Holding an extra  buffer in free queue can also lead to a deadlock when
the pool's max buffer count is configured low (commonly 2).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8939>
2025-05-06 18:22:19 +00:00
L. E. Segovia
d40619ddbe ci: Do swallow gitlint warning, when not found or unexpectedly failed
Gitlint returns error code 253 for a "wrong invocation" i.e. missing filename
for the commit message. That one signals a successful existing install.

Return a warning when either Git is not found (so no hooks will run) or Gitlint
failed its hook installation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8764>
2025-05-06 14:08:52 +00:00
Sebastian Dröge
fff260f1aa qtdemux: Don't configure any channel-mask in fallback case with 1 channel
For mono we don't set any channel mask. Setting 0 would mean an unpositioned
layout with a single channel.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8928>
2025-05-06 13:20:29 +00:00
Sebastian Dröge
7f8b27837c qtdemux: Add channel layouts to three more raw audio fourccs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8928>
2025-05-06 13:20:29 +00:00
Sebastian Dröge
737f653e7c qtdemux: Parse chan box
This is another variant of providing channel positions.

Also if neither chan nor chnl boxes are found, configure a default channel
layout for raw audio tracks.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8928>
2025-05-06 13:20:29 +00:00
Sebastian Dröge
5c16c8f0c1 qtdemux: Check length of JPEG2000 colr box before parsing it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8930>
2025-05-06 11:09:55 +00:00
Sebastian Dröge
f18123ea15 qtdemux: Remove obsolete TODO comment
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8930>
2025-05-06 11:09:55 +00:00
Sebastian Dröge
b461115699 interleave: Don't hold object lock while querying caps downstream
This can easily lead to deadlocks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8933>
2025-05-06 09:44:03 +00:00
Xavier Claessens
352a8a8b12 unifxfdsink: Add an property to allow copying
By design, unixfd is meant to be used for zero-copy and failing when the data is
not FD based memory is wanted to help debug pipelines. Though, there exists
cases, notably with RTP payloader and demuxers, where its not possible
to get all the data into FD memory through allocation queries.

To allow using unixfd for these cases, introduce a property on the unixfdsink
that enable copying the non FD data into freshly allocated memfd.

Co-authored-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8861>
2025-05-05 19:15:56 +00:00
Nirbheek Chauhan
d71d26d901 ci: Stop assuming that MR CI runs in a user namespace
This should un-break cerbero trigger pipelines.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8719>
2025-05-05 11:53:47 +00:00
Víctor Manuel Jáquez Leal
7a14b9020c y4m: support more color formats
These are unofficial yuv4mpegpipe formats, but used for 10bit streams.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8719>
2025-05-05 11:53:47 +00:00
Víctor Manuel Jáquez Leal
1b023dee2e y4m: add color mappings
Now the chroma subsampling tag will include the chroma site. Tests
where updated accordingly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8719>
2025-05-05 11:53:47 +00:00
Víctor Manuel Jáquez Leal
7c8a5cd28d y4mdec: descend from GstBaseParse
This is an overhaul/simplification of the element.

Now it supports seek, while the performance remains more or less the same.

Fixes: #4373
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8719>
2025-05-05 11:53:47 +00:00
Víctor Manuel Jáquez Leal
ef7829b6ad tests: add y4mdec unit test
simple decoding of a i420 15x15 red square, shared with the y4menc unit test.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8719>
2025-05-05 11:53:47 +00:00
Víctor Manuel Jáquez Leal
8d4a6a7d64 y4mdec: handle time segments
so chaining y4menc ! y4mdec is possible.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8719>
2025-05-05 11:53:47 +00:00
Víctor Manuel Jáquez Leal
82e6c1c640 y4mdec: instead of memcmp, use gst_video_info_is_equal()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8719>
2025-05-05 11:53:47 +00:00
Víctor Manuel Jáquez Leal
4cf598bcf3 y4m: share common code among encoder and decoder
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8719>
2025-05-05 11:53:47 +00:00
Víctor Manuel Jáquez Leal
6bcf0e3276 docs: update iOS player and tutorials, Android docs and symbols
docs: update symbols

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8719>
2025-05-05 11:53:46 +00:00
Víctor Manuel Jáquez Leal
16d34468fb y4m: move y4mdec to good to have a single y4m plugin
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8719>
2025-05-05 11:53:46 +00:00
Alexander Slobodeniuk
b9a5efbe07 webrtc: fix build with -DGST_REMOVE_DEPRECATED
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8901>
2025-05-04 22:19:55 +00:00
Alexander Slobodeniuk
14d4c249ad qtmux: fix building with -DGST_REMOVE_DEPRECATED
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8901>
2025-05-04 22:19:55 +00:00
Tim-Philipp Müller
128710caab meson: rename meson_options.txt to meson.options
Which is supported since Meson 1.1:
https://mesonbuild.com/Release-notes-for-1-1-0.html#support-for-reading-options-from-mesonoptions

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8651>
2025-05-03 10:38:25 +01:00
Olivier Crête
fcf9f9ea06 lcevcdec: Use portable printf formatting macros
This should fix 32bit builds

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8926>
2025-05-02 20:12:10 +00:00
Olivier Crête
2a26b0e75c lcevcenc: Use portable printf formatting macros
This should fix 32bit builds

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8926>
2025-05-02 20:12:10 +00:00
Seungha Yang
80d9214747 examples: Add d3d12remap example
Adding a fisheye image transform example using d3d12remap element

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8887>
2025-05-02 22:11:04 +09:00
Seungha Yang
5db574fc35 d3d12: Add d3d12remap element
Adding new element to support pixel remapping operation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8887>
2025-05-02 22:10:58 +09:00
Seungha Yang
9b295cf7a2 d3d12converter: Add support UV remap
Adding OpenCV's cv::remap() like feature

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8887>
2025-05-02 20:56:45 +09:00
Guillaume Desmottes
f600959f3b subprojects: add librsvg.wrap
Allow to build librsvg as a subproject.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6917>
2025-05-02 05:54:56 +00:00
Elliot Chen
c3d8347c81 gl/x11: check whether the display is x11 before using it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8808>
2025-05-02 01:39:33 +00:00
Seungha Yang
834b702e66 subprojects: pango: Fix source url
Regression introduced by 39a39f0077ef41738345c1072b4569bd76480f8f

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8921>
2025-05-01 23:16:25 +09:00
Jakub Adam
e8e1430a5b v4l2: pool: fix assert when mapping video frame with DMA_DRM caps
Make sure the pool recognizes DMA_DRM caps and parses them into
GstVideoInfo that has GstVideoFormat corresponding to "drm-format"
in the caps.

Fixes
  gst_video_frame_map_id: assertion 'info->finfo->format ==
meta->format' failed

Where the left side of the assertion was GST_VIDEO_FORMAT_DMA_DRM and
the right side was some GstVideoFormat converted from DRM fourcc.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8913>
2025-05-01 11:48:26 +00:00
Zhao, Gang
4fa01d5e4c midiparse: Quit parsing if error occurred
Invalid midi files will crash gstreamer or let it enter infinite
loop. Fixed it by quit parsing if error is encountered.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8396>
2025-05-01 07:42:39 +00:00
Zhao, Gang
43e3796d7d midiparse: Consider tempo change when calculating duration
Midi meta event set tempo would change tempo. Should consider tempo
change when calculating buffer PTS / duration.

Save tempo change to a list and calculate duration according to the
list.

Fixed #4158

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8396>
2025-05-01 07:42:39 +00:00
Nirbheek Chauhan
a7c92cbcab gst-examples: Port all webrtc examples to libsoup-3.0
Also do some indent changes, and add `static` while we're at it.

And move the libsoup wrap to 3.6.5, add nghttp2 wrap

We need to disable libsoup 3.0 tests because they fail to build on
Windows.

Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1115

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8753>
2025-04-30 10:18:57 +00:00
Nirbheek Chauhan
b8f8e4391c wraps: Move some fallback URLs from http to https
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8753>
2025-04-30 10:18:57 +00:00
Nirbheek Chauhan
b416aa9b8f gst-python: Fix warning about not specifying gst_plugins in the
../meson.build:231: WARNING: DEPRECATED use of the `plugins` variable in gst-python.
../meson.build:232: WARNING: The variable should now be called `gst_plugins` and use:
../meson.build:233: WARNING: `declare_dependency( link_with: <plugin_target>,
                             variable: {'full_path': <plugin_target>.full_path()})` instead

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8753>
2025-04-30 10:18:57 +00:00
Nirbheek Chauhan
92e91c25b5 gst-examples: Stop using deprecated python3 module
Also specify a minimum meson version, and remove the license entry.
It's incorrect, since there are various licenses for the examples.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8753>
2025-04-30 10:18:57 +00:00
Nirbheek Chauhan
48cbdf73a5 devtools: Fix meson warning when calling add_languages()
WARNING: add_languages is missing native:, assuming languages are wanted for both host and build.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8753>
2025-04-30 10:18:57 +00:00
Nirbheek Chauhan
2c39756b24 gst-ptp-helper: Fix meson warning about rust_crate_type
WARNING: Project targets '>= 1.4' but uses feature deprecated since
'1.3.0': rust_crate_type arg in static_library. Use rust_abi or
rust.proc_macro() instead.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8753>
2025-04-30 10:18:57 +00:00
Nirbheek Chauhan
39a39f0077 wraps: Update fallback URLs
ftp.acc.umu.se no longer hosts GNOME packages, so switch to Debian for
these URLs. This required bumping some of these wraps, including
harfbuzz for the pango bump.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8753>
2025-04-30 10:18:57 +00:00
Nirbheek Chauhan
c4d2f6e87a gst-python: Use allow_fallback instead of fallback
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8753>
2025-04-30 10:18:56 +00:00
Nirbheek Chauhan
1fdfab27a3 meson: Add include_type: 'system' everywhere to squelch wrap warnings
Wrap dependencies add a ton of warnings with the latest GCC in Fedora
42. Squelch them by specifying that these dependencies are not
a part of the gstreamer project, and should be treated as system deps.

libsoup needs some porting work for the bump, and vorbis/lame are
already at their latest releases.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8753>
2025-04-30 10:18:56 +00:00
Nirbheek Chauhan
10ae8136be meson: Bump wrap files, and add non-gitlab fallback mirrors
When fdo infra has downtime, gstreamer checkouts become unbuildable.
Try to alleviate that.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8753>
2025-04-30 10:18:56 +00:00
Philippe Normand
28d97212c5 wpe2: New WPE plugin making use of the "WPE Platform API"
Currently only a wpevideosrc2 element is exposed. GL and SHM buffer rendering
are supported, navigation events too (touch is un-tested). Audio pads handling
is not supported yet (that requires new WPE API).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8789>
2025-04-29 08:10:01 +01:00
Hou Qi
7288b034ac v4l2videoenc: report error only when buffer pool parameters are invalid
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8908>
2025-04-28 13:20:00 +00:00
Olivier Crête
1ae7ab03d9 nice: Add function to fill in ufrag/pwd of remote candidates
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8900>
2025-04-28 11:43:40 +00:00
Olivier Crête
e2f07cf314 nice: Rename local candidate filling function
Rename it, and avoid using it on remote candidates, as it will put
the wrong value.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8900>
2025-04-28 11:43:40 +00:00
Olivier Crête
50c5191179 nice: Don't modify struct borrowed by signal
The struct is owned by libnice, you can't safely modify it

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8900>
2025-04-28 11:43:40 +00:00
Biswapriyo Nath
eeb27f1c71 gstaudioutilsprivate: Fix gcc 15 compiler error with function pointer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8904>
2025-04-28 06:45:16 +00:00
Alexander Slobodeniuk
a03c4de48f elements: use set_static_metadata when it's allowed
Those strings are nice but CPU doesn't want to copy them

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8905>
2025-04-26 19:30:15 +02:00
Sebastian Dröge
df46cfcb28 aggregator: Don't produce buffers when live but not in PLAYING yet
Especially in force-live=true mode it was possible to produce buffers before the
element was set to PLAYING as long as a clock was available already.

This could easily lead to outputting buffers too early, and e.g. before the
correct base time is set and available.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8897>
2025-04-26 11:08:12 +03:00
Sebastian Dröge
b05a498187 aggregator: Check after waiting if we're still running and otherwise stop
Previously we might've produced a buffer needlessly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8897>
2025-04-26 11:07:27 +03:00
Daniel Morin
036801222f test:analytics: add more test on tracking mtd
- Verify we can retrive tracking-mtd and its data

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8868>
2025-04-24 18:58:22 +00:00
Andoni Morales Alastruey
37a57b57e6 ges: fix frame position for sources with par < 1
In #8693 the issue was fixed for par > 1 without noticing that
it was also broken for par > 1.
Given that the natural width and height only changes when par != 1,
the logic is simplified to do:
 * par_n < par_d -> the height is corrected
 * par_n > par_d -> the width is corrected

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8828>
2025-04-24 17:01:51 +00:00
Seungha Yang
d0e18d6353 h265parser: Fix num_long_term_pics bound check
As defined in the spec 7.4.7.1, calculates allowed maximum
value of num_long_term_pics

Fixes ZDI-CAN-26596

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4285
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8884>
2025-04-24 14:59:15 +00:00
Seungha Yang
b33ba2f264 h265parser: Fix max_dec_pic_buffering_minus1 bound check
Allowed max value is MaxDpbSize - 1

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8884>
2025-04-24 14:59:15 +00:00
Daniel Morin
bdf22740fe doc: fix formatting
Add spaces after sections otherwise bullet are not rendered properly

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8883>
2025-04-24 14:05:04 +00:00
Thibault Saunier
33f58f9da7 gst: debug: Add information about active tracers in dot files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8820>
2025-04-24 13:06:55 +00:00
Jochen Henneberg
67cafe5999 va: Fix H264 profile decision logic
The current logic would choose 'baseline' profiles only in case that
these profiles appear in the list first.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8882>
2025-04-24 08:43:01 +02:00
Eli Mallon
068385e83f qtdemux: unref simple caps after use
Otherwise we leak a GSTCaps object every time we
use qtdemux on a file with Opus audio

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8879>
2025-04-23 12:06:48 -07:00
Stéphane Cerveau
e3ae573651 vaav1enc: fix mem leaks in _av1_decide_profile
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8845>
2025-04-23 10:11:16 +00:00
Stéphane Cerveau
c3f4b6bdaf vavp9enc: fix mem leaks in _vp9_decide_profile
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8845>
2025-04-23 10:11:16 +00:00
Sebastian Dröge
df662b5904 aja: Use the correct location of the AJA NTV2 SDK in the docs
Also there is no longer a proprietary version of it.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8874>
2025-04-23 09:28:16 +03:00
Santosh Mahto
7c7832fee1 python analytics: Add api iter_on_type to iterate over specific Mtd types
This adds new Python api `iter_on_type()` to GstAnalyticsRelationMeta
to iterate over mtd type specified by argument.
usage:
```
for i in rmeta.iter_on_type(GstAnalytics.ODMtd):
```

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8459>
2025-04-22 18:54:08 -04:00
Santosh Mahto
e68eb7bb23 analytics: Add python api to get relation path
A new api `Mtd.relation_path()` is added to get relation chain
between two Mtd in RelationMeta.

Usage:
```
for i in mtd1.relation_path(mtd2, max_span=4, relation_type=...):
  pass
```

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8556>
2025-04-22 20:41:19 +00:00
Thibault Saunier
476bd6109e macos: Move macos function documentation to the .h so the introspection has the information
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8854>
2025-04-22 19:25:30 +00:00
Jakub Adam
c8a802772c vapostproc: fix wrong video orientation after restarting the element
After READY -> NULL -> READY state change, the configured video
orientation didn't get applied on the new GstVaFilter instance.

Resettig prev_direction to default value in update_properties ensures
gst_va_filter_set_orientation() isn't inadvertently skipped.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8871>
2025-04-22 12:44:37 +02:00
Sebastian Dröge
fe7cb2e5b1 appsrc: Only notify drop property and not in/out
This mirrors the behaviour of audiorate / videorate better and observing in/out
buffers can be achieved more cheaply via other means.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8866>
2025-04-22 09:02:53 +03:00
Sebastian Dröge
9920897c4a appsink: Only notify drop property and not in/out
This mirrors the behaviour of audiorate / videorate better and observing in/out
buffers can be achieved more cheaply via other means.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8866>
2025-04-22 09:02:53 +03:00
Sebastian Dröge
953bc7cd0e x265enc: Add bitrate tags to the output
Based on the same code in x264enc.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8838>
2025-04-19 15:30:51 +00:00
Hou Qi
bf87ad72e4 v4l2: drop frames for those dequeued buffer with error flag
Some frames are dequeued with error flag, which may cause AV unsync if decoder
does not drop them as soon as possible. So add "output-error-dequeued" and
"capture-error-dequeued" signal for v4l2 to drop such frames.

Fixes #3031

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5479>
2025-04-18 14:14:54 +00:00
jan vermaete
3f0808a910 motioncells: fix typo in header comment
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8867>
2025-04-18 10:52:23 +01:00
Jordan Yelloz
55bf8d3903 Revert "gir: Updated introspection for MSE library"
This reverts commit 2134247a9c88e5f01999bf18d06fbc4ea6f687b3.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8857>
2025-04-18 06:16:00 +00:00
Jordan Yelloz
c3f4bb532c gstsourcebuffer: Reverted ownership change for append method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8857>
2025-04-18 06:16:00 +00:00
Seungha Yang
420b32b953 wasapi2: Log buffer QPC position and status flags
Log all infos of IAudioCaptureClient::GetBuffer

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8859>
2025-04-17 22:44:19 +00:00
Philippe Normand
2df08440fe ci: Update the ABI tag
Needed for new ICECandidateStats ABI

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8792>
2025-04-17 21:13:36 +00:00
Philippe Normand
72433cb942 webrtc: stats: Improve spec compliance for ICE candidate stats
We now fill the foundation, related-address, related-port, username-fragment and
tcp-type fields.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8792>
2025-04-17 21:13:36 +00:00
Thibault Saunier
d1f43f781a tracerutils: Do not warn on empty string as tracername
It doesn't matter if there is an "empty tracer" specified.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8860>
2025-04-17 18:40:05 +00:00
Nicolas Dufresne
8c7ad20e4e doc: Update cache for plugins automatically picks NV16_10LE40
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5612>
2025-04-17 15:36:06 +00:00
Nicolas Dufresne
cb67f760f0 v4l2codecs: Add Rockchip 8bit/10bit 422 formats
This enable NV16 and NV16_10LE40 formats. These formats are
produced by notably rkvdec driver.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5612>
2025-04-17 15:36:06 +00:00
Nicolas Dufresne
239c0eb5f8 video: Add 10bit 422 NV16_10LE40 format
Similar to NV12_10LE40, this is a 422 variant. This format is also named
NV20 (20bit per pixels) in other stack and is produced by rkvdec
decoder.

Co-authored-by: Sebastian Fricke <sebastian.fricke@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5612>
2025-04-17 15:36:06 +00:00
Stefan Andersson
1c8b01ccbc matroska-demux: Prevent corrupt cluster duplication
Make sure to always update next_cluster_offset, if next cluster offset
isn't known set it to zero. If next_cluster_offfset isn't updated it will
be the same as current and if the cluster parsing fails the same cluster
will be parsed again leading to duplication of the data in the cluster.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8855>
2025-04-16 20:37:08 +02:00
Jan Alexander Steffens (heftig)
24bcff5650 mpegtsmux: Read prog-map[PMT_ORDER_<PID>] for PMT order key
Right now the prog-map's meaning of `PMT_%d` is overloaded:
- PMT_<PGM> is used to look up the PID for the PMT.
- PMT_<PID> is used to look up ordering keys for streams in the PMT.

This is not a problem in practice because program numbers and PES PIDs
shouldn't overlap. Still, it's quite the wart in the API.

Provide "PMT_ORDER_%d" as an unambiguous way of specifying ordering
keys.

See: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1510#note_2790022
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8584>
2025-04-16 13:39:15 +00:00
Seungha Yang
ece3a0c976 d3d12converter: Fix cropping when automatic mipmap is enabled
Update vertex buffer and viewport of extra shader pipeline as well

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8851>
2025-04-16 21:20:02 +09:00
Tim-Philipp Müller
90902d36dd ci: work around Meson issues on Windows with author names in non-Western scripts
Work around Meson issues if this env var contains characters that
cannot be represented in the active code page (e.g. CP1252).

UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 865: character maps to <undefined>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8747>
2025-04-16 12:02:54 +01:00
Shengqi Yu (喻盛琪)
b144375974 pluginloader: fix pending_plugins Glist use-after-free issue
When plugin_loader_load_and_sync returns false in plugin_loader_replay_pending,
the cur Glist l->pending_plugins will be added to the blacklist.
However, the l->pending_plugins might have already been loaded and freed in handle_rx_packet,
so causing a use-after-free issue.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8747>
2025-04-16 05:06:40 +00:00
Tim-Philipp Müller
80a23d7132 ci: update Meson version used from 1.5.2 to 1.7.2
Should hopefully get rid of some issues on Windows
related to environment variables gitlab sets
(e.g. author names or MR descriptions).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8840>
2025-04-15 23:51:39 +00:00
Daniel Morin
185e96aeec test: add test for tensor-meta
- Verify we can add a tensor-meta to a buffer
- Verify we can get a tensor from a tensor-meta

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8848>
2025-04-15 16:54:37 -04:00
Daniel Morin
93af941ce7 analytics: add more convenient API to retrieve tensor
`gst_tensor_meta_get_by_id (meta,id)' is more convenient then
retrieving the tensor index using `gst_tensor_meta_get_index_from_id()` followed
by `gst_tensor_meta_get ()`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8848>
2025-04-15 16:17:47 -04:00
Sebastian Dröge
37629385d0 videoencoder: Use the correct segment and buffer timestamp in the chain function
The only thing that can be used in the chain function is the input segment. The
output segment might not be available at all yet or out of sync with the current
input segment.

Also because of that, the unadjusted timestamp has to be used for the
calculations as the adjustment is only part of the output segment.

This fixes the deadline calculation and the handling of force-keyunit events for
encoders using frame reordering (i.e. setting a minimum PTS).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8842>
2025-04-15 14:26:08 +03:00
Sebastian Dröge
9adf26cfd1 base: Update plugins docs cache
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8824>
2025-04-15 09:28:27 +03:00
Sebastian Dröge
20739fa673 appsrc: Allow changin leaky-type in PLAYING state
No reason not to.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8824>
2025-04-15 01:18:33 +00:00
Sebastian Dröge
295c409115 appsrc: Add in/out/dropped and silent properties
This allows tracking how many buffers the appsrc has processed so far, similar
to the same properties on videorate / audiorate.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8824>
2025-04-15 01:18:33 +00:00
Sebastian Dröge
68cf7a0df1 appsink: Add in/out/dropped and silent properties
This allows tracking how many buffers the appsink has processed so far, similar
to the same properties on videorate / audiorate.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8824>
2025-04-15 01:18:32 +00:00
Sebastian Dröge
bdf39c3270 appsrc: Correctly protect leaky-type property by mutex and signal on change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8824>
2025-04-15 01:18:32 +00:00
Sebastian Dröge
3450050b1a appsink: Add new leaky-type property
For symmetry with appsrc. As part of this, also deprecated the drop property.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8824>
2025-04-15 01:18:32 +00:00
Sebastian Dröge
ed75968ff5 appsink: Add current-level-buffers, bytes and time properties
appsrc (and queue and others) already have the same properties so let's
add them here for consistency too.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8824>
2025-04-15 01:18:32 +00:00
Daniel Morin
55e9e3cb13 tensordecoders: updating element classification
- `TensorDecoder` is clashing with media decoder which cause decodebin use it.
  Replacing with `Tensordecoder` to avoid clash

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8819>
2025-04-15 00:30:06 +00:00
Daniel Morin
42e31ee5ef test: add test for gstanalytics utility
- IoU test

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8805>
2025-04-14 23:15:11 +00:00
Daniel Morin
e887b2e20e analytics: Move IoU calculation to gstanalytics lib
Calculating intersection-of-union (IoU) is a very common operation used by
tensor-decoder handling tensors from vision models. Having this in a library
will improve maintainability and ease of writing tensor-decoder.

- Post-fix _uint: We might eventually want to handle different datatype that we
woule post-fix with _type

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8805>
2025-04-14 23:15:11 +00:00
Santosh Mahto
4c4e80d286 gstanalytics: Add api iter_direct_related python to GstAnalyticsMeta
The API `iter_direct_related` allows to iterate over directly related
Mtd objects.
Usage:
```
for i in mtd.iter_direct_related(GstAnalytics.RELATE_TO,
                      GstAnalytics.ODMtd)
```

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8461>
2025-04-14 19:11:29 +00:00
Gustav Fahlen
e649072584 gstrtspsrc: Do not emit signal 'no-more-pads' too early
Due to race condition it was previously possible that
gst_element_add_pad was not completed for each RTSP stream before
signal 'no-more-pads' was emitted.

Race condition explained:
Lets say two RTSP streams are created: Video and Audio.
1. Callback new_manager_pad is called for the Video stream =>
   stream->added=TRUE.
   all_added=FALSE because both streams are not yet added.
   Call gst_element_add_pad and emit signal 'pad-added' for Video stream.
2. Callback new_manager_pad is called for Audio stream =>
   stream->added=TRUE.
   all_added=TRUE because both streams are added.
   Call gst_element_add_pad and emit signal 'pad-added' for Audio stream.
3. Lets say gst_element_add_pad for the audio stream completes before
   the video stream. Since the audio stream already has all_added==TRUE
   this will result in the signal 'no-more-pads' to be emitted before
   gst_element_add_pad for the video stream is completed.

Solution is to move the logic that sets added=True and checks if all
streams are added to after gst_element_add_pad. This will make sure
signal 'no-more-pads' is not emitted until all code in
gst_element_add_pad is completed for all streams.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8832>
2025-04-14 12:35:06 +00:00
Philippe Normand
c4bfa73391 oggdemux: Don't push new packets if there is a pending seek
There was a race condition where the demuxer would seek back to beginning after
determining the duration and while that seek was in progress one pad would
attempt to push a new buffer downstream, leading to a critical warning in
gst_pad_push().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8785>
2025-04-14 10:15:05 +01:00
Jordan Petridis
db17f54253 build: Add devcontainer manifest for our CI image
Devcontainer [1] is a popular container schema that makes
IDEs and tooling aware about the container image you want
to use and develop against.

The most popular implementation of devcontainer are Visual
Studio and VSCode and this allows us to have a out of the
box pre-defined and working build environment that is very
close to the environment CI runs against.

This also allows VSCode on Windows and Mac to setup a
Linux docker container (vm) to develop against if so
desired.

[1] https://containers.dev/

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7816>
2025-04-12 10:11:29 +00:00
Jordan Petridis
2aa7dcd715 install-rust.sh: Remove rust-docs from the install
We don't make use use of the html documentation in
the ci image, so it only takes space.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7816>
2025-04-12 10:11:29 +00:00
Jordan Petridis
f9cd0f0d9b ci: Remove some leftover caches in the linux images
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7816>
2025-04-12 10:11:29 +00:00
Jordan Petridis
5ce342f8fd ci: Move containeruser creation into the main image
Doesn't need to be done only for toolbox and we will
need this when we switch the user gitlab-ci runs as.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7816>
2025-04-12 10:11:28 +00:00
Jordan Petridis
ca44d76c4f ci: Print some metadata at the start of the build
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7816>
2025-04-12 10:11:28 +00:00
Jordan Petridis
b9c3e7c162 build-toolbox-image.sh: Install rust-analyzer into the image
If you develop against the image, then you can configure
your IDE to spawn rust-analyzer inside the container as well.

This works with devcontainer and vscode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7816>
2025-04-12 10:11:28 +00:00
Jordan Petridis
17cf7226f4 build-toolbox-image.sh: Hardcode the RUSTUP/CARGO_HOME env vars
We install the rust toolchain, but then we have to manually
source it in CI since the headless containers skip over
the shell profiles that rustup typically uses.

Ideally we'd set these as variables in the main image, but
we don't have access to the buildah instance used in
ci-templates/cbuild.

However adding them to the toolbox image is good enough to
have the toolbox setup work ootb even if it doesn't call the
ci/scripts/source_image_env.sh script like the gitlab-ci jobs
will do.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7816>
2025-04-12 10:11:28 +00:00
Jordan Petridis
2ce8a1aea9 build-toolbox-image.sh: Only publish the latest tag on the appropriate branch
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7816>
2025-04-12 10:11:28 +00:00
Jordan Petridis
22a83c8db6 build-toolbox-image.sh: Change the suggested name for the toolbox
Previously the script will give you a command like:

```
toolbox create gst-toolbox ..
```

Which is a bit redundant since we are already creating
toolbox, we don't need to label it as such.

Now instead use gst-$GST_UPSTREAM_BRANCH for the name,
so we will suggest gst-main and gst-1.24 instead

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7816>
2025-04-12 10:11:28 +00:00
Andrew Yooeun Chun
1d014e6146 v4l2codecs: fix typos in the documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8829>
2025-04-12 15:02:38 +09:00
Jordan Petridis
741d1e5039 ci: Set CARGO_NET_GIT_FETCH_WITH_CLI
Recent infrastructure migration are causing issues
with the cargo fetch for our gitlab instance.

Use git itself to do the fetching

Similar to [1]

[1]: https://gitlab.freedesktop.org/gstreamer/gst-ci/-/issues/71

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8801>
2025-04-11 11:38:08 +03:00
Stéphane Cerveau
a2793a4663 vkh265dec: add main-10 support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8282>
2025-04-10 19:58:47 +00:00
Stéphane Cerveau
ba44f0c9e0 vkformat: add NV12 10 bits support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8282>
2025-04-10 19:58:47 +00:00
Thibault Saunier
f110f9c290 devtools: dots-viewer: Bundle js dependncies using webpack
And avoid relying on cdn's and require access to the network to use `dots-viewer`

And git ignore `node_modules`

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8754>
2025-04-10 18:48:49 +00:00
Carlos Bentzen
ffaa4bbb38 h266decoder: fix leak parsing SEI messages
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8814>
2025-04-10 14:06:16 +00:00
Jan Schmidt
7212848e41 rtspsrc: Don't error out on not-linked too early
Wait until all pads have been exposed before accepting a not-linked,
as pads are added one-by-one and downstream might not be interested
in the first ones to appear.

Follow up to
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7946

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8798>
2025-04-10 11:50:33 +00:00
Hou Qi
bf24ca6d29 gldownload: unref glcontext after usage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8807>
2025-04-10 09:27:04 +00:00
Carlos Rafael Giani
9ffab2199d audiobasesink: Fix custom slaving driftsamples calculation
driftsamples currently uses the requested skew directly, even if it
exceeds cexternal.

Use the approach that skew_slaving uses to fix this. As a side benefit,
this makes the custom_slaving and skew_slaving code easier to compare.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8605>
2025-04-10 06:41:13 +00:00
Carlos Rafael Giani
a59810ef97 examples: Add custom audio clock slaving callback example
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8605>
2025-04-10 06:41:13 +00:00
Thibault Saunier
c48ba1ae10 discoverer: Enhance debug logging
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8803>
2025-04-09 17:19:01 +00:00
Thibault Saunier
4066b145b6 ges: Enhance debug logging
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8803>
2025-04-09 17:19:01 +00:00
Detlev Casanova
28fdf598e4 v4l2codecs: Unref the frame before leaving on error
In h264, h265 and mpeg2, make sure that dec_submit_bitstream() doesn't leak
a frame when dec_ensure_output_buffer() fails.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8794>
2025-04-09 15:43:03 +00:00
Detlev Casanova
880053c52c v4l2codecs: av1,vp9: Use temporary variable for buffer
This makes the end_picture() function handle the frame in the same way
as in vp8, which also fixes a frame leak when
gst_buffer_pool_acquire_buffer() fails.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8794>
2025-04-09 15:43:03 +00:00
Xavier Claessens
f6115efe8d Revert "va: h266 requires libva 2.22.0"
This reverts commit 8c017c79c5736c9e45e635df210e08550287646d.

1.22 was the correct pkg-config version. It's only the subproject
version that was wrong. Since we bumped libva.wrap to 2.22 version, h266
is now always available when using the subproject.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8800>
2025-04-09 09:01:22 -04:00
Mathieu Duponchelle
d1b4104cbc aggregator: expose current-level-* properties on sink pads
As aggregator internally queues data (up to latency), those properties
are helpful to monitor queue levels in the complete pipeline.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8731>
2025-04-08 17:26:34 +00:00
Víctor Manuel Jáquez Leal
4fc8773371 y4menc: fix Y41B format
This a regression of commit fb0bea8f where output info variable was swapped with
input info variable by mistake.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8786>
2025-04-08 13:10:19 +00:00
Xavier Claessens
a591dec87c libva: Update wrap to 2.22.0
It is required for h266 support.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8788>
2025-04-08 11:45:11 +00:00
Xavier Claessens
8c017c79c5 va: h266 requires libva 2.22.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8788>
2025-04-08 11:45:11 +00:00
Philippe Normand
4e0a184c2a ci: Update the ABI tag
The previous tag included the WebRTC ABI that is being reverted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8787>
2025-04-08 09:36:31 +01:00
Philippe Normand
1a55ae2c51 Revert "webrtc: stats: Increase spec compliance for ICE candidate stats"
This reverts commit 4718fc9be72ccbbb9278c9abe7d72106e161aebf.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8787>
2025-04-08 09:35:49 +01:00
Philippe Normand
70af47ee17 Revert "webrtc: Add missing Since markers to new ICE API"
This reverts commit 601c772447b0bada8e54d097088b8ea51ecba09a.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8787>
2025-04-08 09:35:49 +01:00
Guillaume Desmottes
9b19c10f39 alphacombine: unblock when alpha sink is eos
If the alpha sink receives EOS while the other thread was waiting for a
alpha buffer it was stuck waiting forever.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8775>
2025-04-07 23:45:33 +00:00
Guillaume Desmottes
d2086675a4 alphadecodebin: use a multiqueue instead of a couple of queues
Fix gapless playback as queues are no longer stopped after the first
eos.

Co-authored-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Fix #4165

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8775>
2025-04-07 23:45:33 +00:00
Nicolas Dufresne
be63900324 ci: Update the ABI tag
This is to include the new gst_fd_allocator_alloc_full() function in
the check.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8025>
2025-04-07 16:20:36 -04:00
Jakub Adam
75517d0faf unixfdsrc: fix allocating FD memory with nonzero offsets
The element should allocate GstFdMemory large enough to fit incoming
memory's size plus its potential offset.

Fixes "gst_memory_resize: assertion 'size + mem->offset + offset <=
mem->maxsize' failed".

Fixes an issue reproducible on Raspberry Pi 4 that results in a garbled
image on the receiver's end:

  gst-launch-1.0 libcamerasrc ! unixfdsink socket-path=/tmp/socket
  gst-launch-1.0 unixfdsrc socket-path=/tmp/socket ! autovideosink

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8025>
2025-04-07 14:51:47 +00:00
Jakub Adam
98bcd041d1 fdmemory: add gst_fd_allocator_alloc_full()
Allows allocating FD memory with offset != 0 and size != maxsize.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8025>
2025-04-07 14:51:47 +00:00
Matthew Waters
601c772447 webrtc: Add missing Since markers to new ICE API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8698>
2025-04-07 12:07:16 +00:00
Philippe Normand
4718fc9be7 webrtc: stats: Increase spec compliance for ICE candidate stats
We now fill the foundation, related-address, related-port, username-fragment and
tcp-type fields.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8698>
2025-04-07 12:07:16 +00:00
Philippe Normand
ac465ebfe1 webrtc: stats: Fill data-channel transport stats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8698>
2025-04-07 12:07:16 +00:00
Philippe Normand
b088d53970 webrtc: nice: Add niceutils
The gst_webrtc_nice_get_candidate_server_url() function is going to be used for
stats generation purposes and also from the upcoming get_selected_candidate_pair
implementation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8698>
2025-04-07 12:07:16 +00:00
Philippe Normand
19dea1507e webrtc: nice: Make use of nice_candidate_type_to_string
This API was added in libnice 0.1.19 and we currently require 0.1.20.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8698>
2025-04-07 12:07:16 +00:00
Philippe Normand
aa15eb30ff webrtc: nice: Remove unused libnice utilities
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8698>
2025-04-07 12:07:16 +00:00
Razvan Grigore
0017384ae2 webrtcbin: add missing warning for caps missmatch
This helps debug cases when the remote is offerer and m-line does not match with already existing transceivers.
In this case, it will create new ones with sendrecv direction without any warning.
Similar with code from _create_answer_task

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8735>
2025-04-07 01:26:25 +00:00
Sebastian Dröge
883ff6caaa ci: Update to Rust 1.86 and cargo-c 0.10.12
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8783>
2025-04-05 19:56:17 +03:00
Seungha Yang
d9bbfc27fd ci: Update ABI_CHECK_TAG for h264/h265parser change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8679>
2025-04-05 09:48:41 +00:00
Seungha Yang
740b7564ee h265parser: Make gst_h265_parser_link_slice_hdr public
... and updating h265decoder/h265ccinserter to match
the changed gst_h265_parser_link_slice_hdr method

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8679>
2025-04-05 09:48:41 +00:00
Seungha Yang
deee13a6c3 h264parser: Store associated parameter set id
Make h264parser and h265parser consistent

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8679>
2025-04-05 09:48:41 +00:00
Seungha Yang
1bd5afa460 h265parser: Store PPS id in slice header
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8679>
2025-04-05 09:48:41 +00:00
1612 changed files with 111087 additions and 164145 deletions

View File

@ -0,0 +1,4 @@
{
"name": "FT-Driverless Dev",
"image": "git.fasttube.de/ft-driverless/ft_as:gstreamer-plugin-bad"
}

1
.gitattributes vendored
View File

@ -1 +1,2 @@
subprojects/packagefiles/*/*.patch text eol=lf
subprojects/gst-devtools/dots-viewer/static/dist/** binary

8
.gitignore vendored
View File

@ -22,7 +22,6 @@ prefix/
/gst-devtools
/gst-integration-testsuites
/gst-editing-services
/gstreamer-vaapi
/gstreamer-sharp
/pygobject
/gst-python
@ -41,6 +40,7 @@ subprojects/abseil-cpp.wrap
subprojects/sysprof.wrap
subprojects/*/
subprojects/.wraplock
!subprojects/gst-devtools
!subprojects/gst-docs
!subprojects/gst-editing-services
@ -54,12 +54,16 @@ subprojects/*/
!subprojects/gst-python
!subprojects/gstreamer
!subprojects/gstreamer-sharp
!subprojects/gstreamer-vaapi
!subprojects/gst-rtsp-server
!subprojects/macos-bison-binary
!subprojects/win-flex-bison-binaries
!subprojects/win-nasm
!subprojects/win-pkgconfig
!subprojects/packagefiles
subprojects/*/*.zip
subprojects/*/*.exe
subprojects/*/*.tar.*
subprojects/macos-bison-binary/bison*/
# VSCode integration
# launch.json will be modified by users depending on the pipeline to test

View File

@ -1,10 +1,9 @@
include:
- project: 'freedesktop/ci-templates'
ref: "3826695f80807d8a4d999f6b6efb3d405d708db9"
file: '/templates/fedora.yml'
- project: 'freedesktop/ci-templates'
ref: "3826695f80807d8a4d999f6b6efb3d405d708db9"
file: '/templates/debian.yml'
ref: "e0b27048d7ba881e3bfec48f4f7cba6504a7472e"
file:
- '/templates/fedora.yml'
- '/templates/debian.yml'
###
# IMPORTANT
# These are the version tags for the docker images the CI runs against.
@ -59,7 +58,6 @@ variables:
-Ddevtools=enabled
-Dges=enabled
-Drtsp_server=enabled
-Dvaapi=enabled
-Dsharp=disabled
-Drs=disabled
-Dgpl=enabled
@ -72,6 +70,13 @@ variables:
-Dgstreamer-sharp:werror=false
-Ddoc=disabled
# Our gitlab instance and runner are using a proxy and have
# trouble with the normal fetch. git itself handles the proxy
# more reliably.
#
# https://doc.rust-lang.org/cargo/reference/config.html#netgit-fetch-with-cli
CARGO_NET_GIT_FETCH_WITH_CLI: true
FF_TIMESTAMPS: true
# Can set this as part of a schedule pipeline to test the gtk4 build if desired
@ -134,14 +139,16 @@ trigger:
.fedora image:
variables:
CCACHE_DIR: '/cache/gstreamer/gstreamer/ccache/'
FDO_USER: 'containeruser'
CCACHE_DIR: '/cache/gstreamer/gstreamer/ccache_fedora_containeruser/'
FDO_DISTRIBUTION_VERSION: '40'
FDO_REPO_SUFFIX: "$FEDORA_AMD64_SUFFIX"
FDO_DISTRIBUTION_TAG: "$FEDORA_TAG-$GST_UPSTREAM_BRANCH"
FDO_DISTRIBUTION_EXEC: 'GIT_BRANCH=$CI_COMMIT_REF_NAME GIT_URL=$CI_REPOSITORY_URL bash ci/docker/fedora/prepare.sh'
FDO_DISTRIBUTION_EXEC: 'bash ci/docker/fedora/prepare.sh'
.fedora fluster image:
variables:
FDO_USER: 'containeruser'
CCACHE_DIR: !reference [".fedora image", "variables", CCACHE_DIR]
FDO_DISTRIBUTION_VERSION: !reference [".fedora image", "variables", FDO_DISTRIBUTION_VERSION]
FDO_REPO_SUFFIX: !reference [".fedora image", "variables", FDO_REPO_SUFFIX]
@ -156,6 +163,8 @@ fedora amd64 docker:
- '.fdo.container-build@fedora'
stage: 'preparation'
needs: []
variables:
FDO_DISTRIBUTION_POST_EXEC: 'bash ci/scripts/build-toolbox-image.sh'
# Note: assumption is that placeholder jobs run on a packet runner
# (which has faster network connectivity to the registry).
tags: [ 'kvm' ]
@ -170,29 +179,15 @@ fedora amd64 docker fluster:
# (which has faster network connectivity to the registry).
tags: [ 'kvm' ]
# Build a toolbox specific image to workaround ci-templates
fedora amd64 toolbox:
image: quay.io/freedesktop.org/ci-templates:container-build-base-2024-01-31.0
stage: 'preparation'
needs: ["fedora amd64 docker"]
# Note: assumption is that placeholder jobs run on a packet runner
# (which has faster network connectivity to the registry).
tags: [ 'kvm' ]
variables:
GST_CI_IMAGE: !reference [".build fedora x86_64", "variables", FDO_DISTRIBUTION_IMAGE]
FDO_DISTRIBUTION_TAG: !reference [".fedora image", "variables", FDO_DISTRIBUTION_TAG]
FDO_REPO_SUFFIX: !reference [".fedora image", "variables", FDO_REPO_SUFFIX]
script:
- bash ci/scripts/build-toolbox-image.sh $GST_CI_IMAGE $FDO_DISTRIBUTION_TAG $GST_UPSTREAM_BRANCH
.debian image:
variables:
CCACHE_DIR: '/cache/gstreamer/gstreamer/ccache_debian/'
CCACHE_DIR: '/cache/gstreamer/gstreamer/ccache_debian_containeruser/'
FDO_USER: 'containeruser'
FDO_BASE_IMAGE: "quay.io/toolbx-images/debian-toolbox:12"
FDO_DISTRIBUTION_VERSION: '12'
FDO_REPO_SUFFIX: "$DEBIAN_AMD64_SUFFIX"
FDO_DISTRIBUTION_TAG: "$DEBIAN_TAG-$GST_UPSTREAM_BRANCH"
FDO_DISTRIBUTION_EXEC: 'GIT_BRANCH=$CI_COMMIT_REF_NAME GIT_URL=$CI_REPOSITORY_URL bash ci/docker/debian/prepare.sh'
FDO_DISTRIBUTION_EXEC: 'bash ci/docker/debian/prepare.sh'
debian amd64 docker:
extends:
@ -253,12 +248,13 @@ windows amd64 docker:
.abi-check image:
variables:
CCACHE_DIR: !reference [".fedora image", "variables", CCACHE_DIR]
SUBPROJECTS_CACHE_DIR: !reference [".build", "variables", SUBPROJECTS_CACHE_DIR]
FDO_DISTRIBUTION_VERSION: !reference [".fedora image", "variables", FDO_DISTRIBUTION_VERSION]
FDO_REPO_SUFFIX: !reference [".fedora image", "variables", FDO_REPO_SUFFIX]
FDO_BASE_IMAGE: '$CI_REGISTRY_IMAGE/$FDO_REPO_SUFFIX:$FEDORA_TAG-$GST_UPSTREAM_BRANCH'
FDO_DISTRIBUTION_TAG: "abi-check-$ABI_CHECK_TAG-$GST_UPSTREAM_BRANCH"
FDO_DISTRIBUTION_PACKAGES: 'libabigail'
FDO_DISTRIBUTION_EXEC: 'GIT_BRANCH=$CI_COMMIT_REF_NAME GIT_URL=$CI_REPOSITORY_URL bash ci/docker/abi-check/prepare.sh'
FDO_DISTRIBUTION_EXEC: 'bash ci/docker/abi-check/prepare.sh'
ABI_CHECK_CACHE: '/abi-check-cache'
abi-check docker:
@ -288,8 +284,8 @@ pre-commit checks:
GIT_DEPTH: 100
PRE_COMMIT_HOME: '/cache/${CI_PROJECT_NAMESPACE}/pre-commit'
RUSTUP_HOME: '/usr/local/rustup'
before_script:
git config --global --add safe.directory $CI_PROJECT_DIR
before_script:
- git config --global --add safe.directory $CI_PROJECT_DIR
script:
- export PATH="/usr/local/cargo/bin:$PATH"
- echo $CI_MERGE_REQUEST_DIFF_BASE_SHA
@ -347,7 +343,7 @@ pre-commit checks:
BUILD_GST_DEBUG: "-Dgstreamer:gst_debug=true"
GST_WERROR: "true"
MESON_ARGS: "${DEFAULT_MESON_ARGS}"
SUBPROJECTS_CACHE_DIR: "/subprojects"
SUBPROJECTS_CACHE_DIR: "/var/cache/subprojects"
# Avoid weird issue about cross-device links
# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3197
GI_SCANNER_DISABLE_CACHE: "1"
@ -367,9 +363,6 @@ pre-commit checks:
- changes:
paths:
*modules_changes
- changes:
paths:
- "subprojects/gstreamer-vaapi/**/*"
.build simple:
extends:
@ -378,7 +371,6 @@ pre-commit checks:
variables:
GST_WERROR: "true"
MESON_ARGS: "${SIMPLE_BUILD}"
SUBPROJECTS_CACHE_DIR: "/subprojects"
script:
- $CI_PROJECT_DIR/ci/scripts/build.sh build/
- ./gst-env.py gst-inspect-1.0 --version
@ -424,9 +416,6 @@ build fedora gcc:
# https://github.com/mesonbuild/meson/issues/5214
# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4281?commit_id=d1a687b61d8fbc5ae35b4bb62aa7fd1d091818f2#note_1875699
#
# VAAPI can't be build statically yet
# subprojects/gstreamer-vaapi/meson.build:8:2: ERROR: Problem encountered: GStreamer-VAAPI plugin not supported with `static` builds yet.
#
# Disabling gstreamer-sharp tests because they download things as part of configure with
# nuget which frequently fails on the CI (possibly because we're hammering the site)
#
@ -434,7 +423,6 @@ build fedora gcc:
MESON_ARGS: >-
${DEFAULT_MESON_ARGS}
-Dgst-devtools:dots_viewer=enabled
-Dvaapi=disabled
-Dpython=auto
-Dgst-editing-services:python=disabled
-Dintrospection=disabled
@ -456,16 +444,12 @@ build fedora clang:
- BUILD_TYPE: ["--default-library=static"]
BUILD_GST_DEBUG: ["-Dgstreamer:gst_debug=true", "-Dgstreamer:gst_debug=false"]
# VAAPI can't be build statically yet
# subprojects/gstreamer-vaapi/meson.build:8:2: ERROR: Problem encountered: GStreamer-VAAPI plugin not supported with `static` builds yet.
#
# Disabling gstreamer-sharp tests because they download things as part of configure with
# nuget which frequently fails on the CI (possibly because we're hammering the site)
#
# Disabling building both qt5 and qt6 when doing static builds since we can only link against one
MESON_ARGS: >-
${DEFAULT_MESON_ARGS}
-Dvaapi=disabled
-Dintrospection=disabled
-Dpython=disabled
-Ddoc=disabled
@ -499,7 +483,6 @@ build debian x86_64:
MESON_ARGS: >-
${DEFAULT_MESON_ARGS}
-Dlibav=disabled
-Dvaapi=disabled
-Dgst-plugins-base:pango=enabled
-Dgst-plugins-good:cairo=enabled
-Dgst-plugins-good:soup=enabled
@ -532,12 +515,17 @@ build debian x86_64:
when: "always"
paths:
- 'build/meson-logs/'
- 'args.txt'
build vs2022 amd64:
extends: '.build windows'
script:
- !reference [".build windows", "script"]
- .\ci\run_retry.ps1 meson setup --vsenv build $env:MESON_ARGS $env:GTK_ARGS
# https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_character_encoding?view=powershell-7.5
# Meson's response files must be in UTF-8
# After updating to powershell >7.1, the shell in Dockerfile must be updated from Windows PS to PWSH
- echo "$env:MESON_ARGS $env:GTK_ARGS" | Out-File -File args.txt -Encoding ASCII
- .\ci\run_retry.ps1 meson setup --vsenv build '@args.txt'
- .\ci\run_retry.ps1 meson compile -C build --jobs $env:FDO_CI_CONCURRENT
- .\gst-env.py gst-inspect-1.0.exe --version
- .\gst-env.py gst-inspect-1.0.exe
@ -547,6 +535,9 @@ build vs2022 amd64:
variables:
# FIXME: https://github.com/mesonbuild/meson/pull/11007
PKG_CONFIG: ${CI_PROJECT_DIR}/subprojects/win-pkgconfig/pkg-config.exe
# Work around Meson issues if this env var contains characters that
# cannot be represented in the active code page (e.g. CP1252)
CI_COMMIT_AUTHOR: null
build vs2022 amd64 full-static:
extends: ".build windows"
@ -563,6 +554,9 @@ build vs2022 amd64 full-static:
-Dlibav=disabled
-Ddoc=disabled
-Dgst-full-target-type=static_library
# Work around Meson issues if this env var contains characters that
# cannot be represented in the active code page (e.g. CP1252)
CI_COMMIT_AUTHOR: null
.build windows cross:
extends: '.build windows'
@ -642,11 +636,9 @@ build macos:
- BUILD_TYPE: ["--default-library=both"]
BUILD_GST_DEBUG: ["-Dgstreamer:gst_debug=true"]
# FIXME: We currently don't have pkg-config required by gobject-introspection/pygobject/sharp
# macos doesn't support vaapi
MESON_ARGS: >-
${SIMPLE_BUILD}
-Dintrospection=disabled
-Dvaapi=disabled
-Dsharp=disabled
-Dpython=disabled
-Ddoc=disabled
@ -685,7 +677,7 @@ abi-check:
variables:
GST_WERROR: "true"
MESON_ARGS: "${SIMPLE_BUILD}"
SUBPROJECTS_CACHE_DIR: "/subprojects"
SUBPROJECTS_CACHE_DIR: !reference [".build", "variables", SUBPROJECTS_CACHE_DIR]
# Avoid weird issue about cross-device links
# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3197
@ -741,9 +733,6 @@ check fedora:
- changes:
paths:
*modules_changes
- changes:
paths:
- "subprojects/gstreamer-vaapi/**/*"
integration testsuites fedora:
extends: '.test fedora x86_64'
@ -752,7 +741,6 @@ integration testsuites fedora:
MESON_ARGS: >-
${SIMPLE_BUILD}
-Dsharp=disabled
-Dvaapi=disabled
-Dexamples=disabled
-Dgst-examples=disabled
-Dtests=disabled
@ -781,7 +769,7 @@ check video formats:
MESON_ARGS: "${SIMPLE_BUILD}"
BUILD_GST_DEBUG: "-Dgstreamer:gst_debug=true"
GST_WERROR: "true"
SUBPROJECTS_CACHE_DIR: "/subprojects"
SUBPROJECTS_CACHE_DIR: !reference [".build", "variables", SUBPROJECTS_CACHE_DIR]
VIDEO_TOKEN: "GST_VIDEO_FORMATS_ALL_STR"
VIDEO_HEADER: "subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h"
WL_TOKEN: "GST_WL_VIDEO_FORMATS"
@ -812,11 +800,17 @@ gstreamer-full static build:
MESON_ARGS: >-
-Ddoc=disabled
-Dqt5=disabled -Dqt6=enabled
SUBPROJECTS_CACHE_DIR: "/subprojects"
script:
- $CI_PROJECT_DIR/ci/scripts/build.sh build/
- meson test -C build -v test-gst-full
rules:
- !reference [.upstream-branch-rules, rules]
- changes:
paths:
*modules_changes
- changes:
paths:
- "scripts/generate_init_static_plugins.py"
gstreamer-full-minimal static build:
extends: 'gstreamer-full static build'
@ -838,7 +832,6 @@ gstreamer-full-minimal static build:
-Dgst-full-typefind-functions=typefindfunctions:wav,flv
-Dgst-full-device-providers=alsa:alsadeviceprovider
-Dgst-full-dynamic-types=pbtypes:video_multiview_flagset
SUBPROJECTS_CACHE_DIR: "/subprojects"
script:
- $CI_PROJECT_DIR/ci/scripts/build.sh build/
@ -880,7 +873,6 @@ fluster v4l2-stateless on visl:
-Dgst-plugins-base:typefind=enabled
-Dgst-plugins-base:playback=enabled
-Dgst-plugins-good:matroska=enabled
SUBPROJECTS_CACHE_DIR: "/subprojects"
script:
- $CI_PROJECT_DIR/ci/scripts/build.sh build/
- meson test -C build -v --suite v4l2-stateless-decoders
@ -911,9 +903,6 @@ fluster v4l2-stateless on visl:
- changes:
paths:
*modules_changes
- changes:
paths:
- "subprojects/gstreamer-vaapi/**/*"
valgrind core:
extends: '.valgrind fedora x86_64'
@ -1013,6 +1002,23 @@ valgrind ges:
# as flaky. Until then, just ignore failures.
allow_failure: true
valgrind rtsp-server:
extends: '.valgrind fedora x86_64'
variables:
TEST_SUITE: "check.gst-rtsp-server\\..*"
rules:
- changes:
paths:
- "*"
- "scripts/*"
- "ci/**/*"
- "subprojects/gst-devtools/**/*"
- "subprojects/gstreamer/**/*"
- "subprojects/gst-plugins-base/**/*"
- "subprojects/gst-plugins-good/**/*"
- "subprojects/gst-plugins-bad/**/*"
- "subprojects/gst-rtsp-server/**/*"
# ---- Integration ----- #
.documentation:
@ -1028,7 +1034,6 @@ valgrind ges:
-Dgst-plugins-bad:svthevcenc=disabled
# Disable werror for the docs build, we don't need it
GST_WERROR: 'false'
SUBPROJECTS_CACHE_DIR: "/subprojects"
CI_ARTIFACTS_URL: "${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/raw/"
script:
- $CI_PROJECT_DIR/ci/scripts/build-docs.sh build/
@ -1038,6 +1043,14 @@ valgrind ges:
paths:
- documentation/
- diffs/
rules:
- !reference [.upstream-branch-rules, rules]
- changes:
paths:
*modules_changes
- changes:
paths:
- "scripts/generate_plugins_path.py"
#
# This jobs runs in gstreamer namespace when after the merge into main branch.
@ -1082,40 +1095,55 @@ build documentation:
- "subprojects/gst-plugins-good/**/*"
- "subprojects/gst-plugins-ugly/**/*"
- "subprojects/gstreamer/**/*"
- "subprojects/gstreamer-vaapi/**/*"
- "subprojects/gst-rtsp-server/**/*"
# FIXME: Using trigger: causes permission issues, workaround using old REST API.
# https://gitlab.com/gitlab-org/gitlab/-/issues/341737
# FIXME: We used to automatically run against matching user branch
# whever that branch existed.
# See ci/gitlab/trigger_cerbero_pipline.py.
.cerbero trigger changes: &cerbero_trigger_changes
changes:
paths:
- ".gitlab-ci.yml"
- "ci/gitlab/*.py"
- "subprojects/gst-devtools/**/*"
- "subprojects/gst-editing-services/**/*"
- "subprojects/gst-libav/**/*"
- "subprojects/gst-plugins-bad/**/*"
- "subprojects/gst-plugins-base/**/*"
- "subprojects/gst-plugins-good/**/*"
- "subprojects/gst-plugins-ugly/**/*"
- "subprojects/gst-python/**/*"
- "subprojects/gstreamer/**/*"
- "subprojects/gst-rtsp-server/**/*"
- "subprojects/gst-examples/**/*"
cerbero trigger:
stage: build
timeout: '4h'
tags:
- placeholder-job
image: python:alpine
trigger:
project: gstreamer/cerbero
branch: main
strategy: depend
needs:
- "trigger"
script:
- pip install python-gitlab
- python ci/gitlab/trigger_cerbero_pipeline.py
variables:
CI_GSTREAMER_PATH: '$CI_PROJECT_PATH'
CI_GSTREAMER_REF_NAME: '$CI_COMMIT_REF_NAME'
CI_GSTREAMER_TRIGGERED: 'true'
inherit:
# Inherit default (not predefined) variables used for the job in `rules:` and `variables:`
variables:
- MESON_COMMIT
- GST_UPSTREAM_BRANCH
rules:
- if: '$MESON_COMMIT'
# Never run post merge
- if: '$CI_PROJECT_NAMESPACE == "gstreamer" && $CI_COMMIT_BRANCH == $GST_UPSTREAM_BRANCH'
when: never
- changes:
paths:
- ".gitlab-ci.yml"
- "ci/gitlab/*.py"
- "subprojects/gst-devtools/**/*"
- "subprojects/gst-editing-services/**/*"
- "subprojects/gst-libav/**/*"
- "subprojects/gst-plugins-bad/**/*"
- "subprojects/gst-plugins-base/**/*"
- "subprojects/gst-plugins-good/**/*"
- "subprojects/gst-plugins-ugly/**/*"
- "subprojects/gst-python/**/*"
- "subprojects/gstreamer/**/*"
- "subprojects/gst-rtsp-server/**/*"
- "subprojects/gst-examples/**/*"
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
# For merge reqest, we want to test user branch
<<: *cerbero_trigger_changes
variables:
CI_GSTREAMER_PATH: '$CI_MERGE_REQUEST_SOURCE_PROJECT_PATH'
CI_GSTREAMER_REF_NAME: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME'
- <<: *cerbero_trigger_changes

View File

@ -5,12 +5,12 @@ variables:
# If you are hacking on them or need a them to rebuild, its enough
# to change any part of the string of the image you want.
###
FEDORA_TAG: '2025-03-13.0'
FEDORA_TAG: '2025-08-10.0-fluster-kernel'
DEBIAN_TAG: '2025-02-23.0'
DEBIAN_TAG: '2025-08-10.0'
CHECKS_TAG: '2025-02-04.0'
CHECKS_TAG: '2025-05-24.0'
ABI_CHECK_TAG: '2025-04-01.0'
ABI_CHECK_TAG: '2025-08-20.0'
WINDOWS_TAG: '2025-02-23.0'
WINDOWS_TAG: '2025-08-10.0'

7
.ignore Normal file
View File

@ -0,0 +1,7 @@
subprojects/gst-devtools/dots-viewer/static/dist/**
macbuild/**
builddir/**
*.min.js
*.min.css
node_modules/

View File

@ -1,6 +1,7 @@
subprojects/gst-plugins-bad/ext/nvcomp
subprojects/gst-plugins-bad/ext/nvdswrapper
subprojects/gst-plugins-bad/ext/qt6d3d11
subprojects/gst-plugins-bad/ext/wpe2
subprojects/gst-plugins-bad/gst-libs/gst/cuda
subprojects/gst-plugins-bad/gst-libs/gst/d3d11
subprojects/gst-plugins-bad/gst-libs/gst/d3d12
@ -11,6 +12,7 @@ subprojects/gst-plugins-bad/sys/amfcodec
subprojects/gst-plugins-bad/sys/d3d11
subprojects/gst-plugins-bad/sys/d3d12
subprojects/gst-plugins-bad/sys/dwrite
subprojects/gst-plugins-bad/sys/hip
subprojects/gst-plugins-bad/sys/mediafoundation
subprojects/gst-plugins-bad/sys/nvcodec
^(subprojects/gst-plugins-bad/sys/qsv/)+(\w)+([^/])+(cpp$)

View File

@ -1,3 +1,10 @@
# Notes:
# - Python commands must be prefixed with `python` because pre-commit refuses to
# special-case shebangs on Windows where `python3` does not commonly exists.
# Luckily, the `python` command exists in the virtualenv created by pre-commit
# on all platforms. https://github.com/pre-commit/pre-commit/issues/3415,
# https://github.com/pre-commit/pre-commit/issues/3468
fail_fast: false
repos:
- repo: https://github.com/jorisroovers/gitlint
@ -16,7 +23,7 @@ repos:
- id: gst-indent
name: gst-indent
language: python
entry: ./scripts/gst-indent-all.py
entry: python ./scripts/gst-indent-all.py
pass_filenames: false
types_or: ["c", "c++"]
additional_dependencies: ["gst-indent==1.0.0"]
@ -30,6 +37,6 @@ repos:
- id: doc-checks
name: doc-checks
language: python
entry: ./scripts/git-hooks/pre-commit-python.hook
entry: python ./scripts/git-hooks/pre-commit-python.hook
pass_filenames: false
additional_dependencies: ["autopep8==2.3.2", "pycodestyle==2.12.1"]

View File

@ -8,6 +8,6 @@ install_prefix=/tmp/install
MESON_ARGS="${meson_args} --prefix ${install_prefix} --optimization=g" ./ci/scripts/build.sh build/
ninja -C build/ install
find ${install_prefix}/lib64 -type f -iname *libgst*.so.* -print0 | xargs -0 -I '{}' bash ./ci/scripts/save-abi.sh {} ${ABI_CHECK_CACHE} ${install_prefix}/include/gstreamer-1.0
find ${install_prefix}/lib64 -type f -iname *libgst*.so.* -print0 | sudo xargs -0 -I '{}' bash ./ci/scripts/save-abi.sh {} ${ABI_CHECK_CACHE} ${install_prefix}/include/gstreamer-1.0
rm -rf $install_prefix

View File

@ -33,8 +33,8 @@ python3 -m pip install pre-commit==3.6.0
python3 -m pip install gitlint
# Install Rust
RUSTUP_VERSION=1.27.1
RUST_VERSION=1.85.0
RUSTUP_VERSION=1.28.1
RUST_VERSION=1.89.0
RUST_ARCH="x86_64-unknown-linux-gnu"
RUSTUP_URL=https://static.rust-lang.org/rustup/archive/$RUSTUP_VERSION/$RUST_ARCH/rustup-init
@ -49,7 +49,7 @@ chmod +x rustup-init;
rm rustup-init;
chmod -R a+w $RUSTUP_HOME $CARGO_HOME
cargo install cargo-c --version 0.10.11+cargo-0.86.0 --locked
cargo install cargo-c --version 0.10.15+cargo-0.90.0 --locked
rustup --version
cargo --version

View File

@ -2,11 +2,13 @@
set -eux
apt update -y && apt full-upgrade -y
apt install -y $(<./ci/docker/debian/deps.txt)
sudo apt update -y && sudo apt full-upgrade -y
sudo apt install -y $(<./ci/docker/debian/deps.txt)
apt remove -y rustc cargo
# These get pulled by other deps
sudo apt remove -y rustc cargo
pip3 install --break-system-packages meson==1.5.2 hotdoc python-gitlab tomli junitparser
sudo bash ./ci/scripts/create-pip-config.sh
sudo pip3 install --break-system-packages meson==1.7.2 hotdoc python-gitlab tomli junitparser
apt clean all
sudo apt clean all

View File

@ -2,12 +2,21 @@
set -eux
bash ./ci/docker/debian/install-deps.sh
apt update && apt install -y sudo passwd
bash ./ci/scripts/create-container-user.sh
bash ./ci/scripts/create-ci-identifier.sh
bash ./ci/scripts/install-rust.sh
sudo -u containeruser bash ./ci/docker/debian/install-deps.sh
sudo -u containeruser bash ./ci/scripts/install-rust.sh
# Configure git for various usage
git config --global user.email "gstreamer@gstreamer.net"
git config --global user.name "Gstbuild Runner"
sudo -u containeruser git config --global user.email "gstreamer@gstreamer.net"
sudo -u containeruser git config --global user.name "Gstbuild Runner"
# /tmp/clone is where ci-templates cbuild clones the checkout
sudo -u containeruser git config --global --add safe.directory /tmp/clone
bash ./ci/scripts/create-subprojects-cache.sh
sudo -u containeruser bash ./ci/scripts/create-subprojects-cache.sh
# leftover caches
sudo rm -rf /root/
sudo rm -rf /home/containeruser/.cache /home/containeruser/.npm

View File

@ -4,32 +4,33 @@ set -eux
# Fedora base image disable installing documentation files. See https://pagure.io/atomic-wg/issue/308
# We need them to cleanly build our doc.
sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
dnf -y swap coreutils-single coreutils-full
dnf -y swap glibc-minimal-langpack glibc-all-langpacks
sudo sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
sudo dnf -y swap coreutils-single coreutils-full
sudo dnf -y swap glibc-minimal-langpack glibc-all-langpacks
# Add rpm fusion repositories in order to access all of the gst plugins
dnf install -y \
sudo dnf install -y \
"https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm" \
"https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm"
# Enable the debuginfo repos so -debug packages are kept in sync
dnf install -y dnf-plugins-core
dnf config-manager --set-enabled '*-debuginfo'
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --set-enabled '*-debuginfo'
dnf upgrade -y && dnf distro-sync -y
sudo dnf upgrade -y && sudo dnf distro-sync -y
# Install the dependencies of gstreamer
dnf install --setopt=install_weak_deps=false -y $(<./ci/docker/fedora/deps.txt)
sudo dnf install --setopt=install_weak_deps=false -y $(<./ci/docker/fedora/deps.txt)
# Install devhelp files for hotdoc
dnf install -y glib2-doc gdk-pixbuf2-devel gtk3-devel-docs gtk4-devel-docs libsoup-doc
sudo dnf install -y glib2-doc gdk-pixbuf2-devel gtk3-devel-docs gtk4-devel-docs libsoup-doc
# Make sure we don't end up installing these from some transient dependency
dnf remove -y "gstreamer1*-devel" rust cargo meson 'fdk-aac-free*'
sudo dnf remove -y "gstreamer1*-devel" rust cargo meson 'fdk-aac-free*'
pip3 install meson==1.5.2 python-gitlab tomli junitparser bs4
pip3 install git+https://github.com/hotdoc/hotdoc.git@8c1cc997f5bc16e068710a8a8121f79ac25cbcce
sudo bash ./ci/scripts/create-pip-config.sh
sudo pip3 install meson==1.7.2 python-gitlab tomli junitparser bs4
sudo pip3 install git+https://github.com/hotdoc/hotdoc.git@8c1cc997f5bc16e068710a8a8121f79ac25cbcce
# Install most debug symbols, except the big ones from things we use
debug_packages=$(rpm -qa | grep -v -i \
@ -96,9 +97,9 @@ debug_packages=$(rpm -qa | grep -v -i \
-e xerces \
-e xorg \
)
dnf debuginfo-install -y --best --allowerasing --skip-broken $debug_packages
sudo dnf debuginfo-install -y --best --allowerasing --skip-broken $debug_packages
echo "Removing DNF cache"
dnf clean all
sudo dnf clean all
rm -rf /var/cache/dnf /var/log/dnf*
sudo rm -rf /var/cache/dnf /var/log/dnf*

View File

@ -2,12 +2,21 @@
set -eux
bash ./ci/docker/fedora/install-deps.sh
dnf update && dnf install -y sudo shadow-utils
bash ./ci/scripts/create-ci-identifier.sh
bash ./ci/scripts/create-container-user.sh
sudo -u containeruser bash ./ci/docker/fedora/install-deps.sh
sudo -u containeruser bash ./ci/scripts/install-rust.sh
# Configure git for various usage
git config --global user.email "gstreamer@gstreamer.net"
git config --global user.name "Gstbuild Runner"
sudo -u containeruser git config --global user.email "gstreamer@gstreamer.net"
sudo -u containeruser git config --global user.name "Gstbuild Runner"
# /tmp/clone is where ci-templates cbuild clones the checkout
sudo -u containeruser git config --global --add safe.directory /tmp/clone
bash ./ci/scripts/install-rust.sh
sudo -u containeruser bash ./ci/scripts/create-subprojects-cache.sh
bash ./ci/scripts/create-subprojects-cache.sh
# leftover caches
sudo rm -rf /root/
sudo rm -rf /home/containeruser/.cache /home/containeruser/.npm

View File

@ -5,16 +5,21 @@ set -eux
sudo dnf install -y bc
# Install virtme-ng
pushd /tmp/
git clone https://github.com/arighi/virtme-ng.git
pushd virtme-ng
git fetch --tags
git checkout v1.8
./setup.py install --prefix=/usr
sudo ./setup.py install --prefix=/usr
popd
popd
# Install fluster
pushd /opt/
git clone https://github.com/fluendo/fluster.git
sudo mkdir ./fluster
sudo chown containeruser:containeruser ./fluster/
git clone https://github.com/fluendo/fluster.git ./fluster
pushd fluster
git checkout 303a6edfda1701c8bc351909fb1173a0958810c2
./fluster.py download
@ -24,7 +29,7 @@ popd
# Build a linux image for virtme fluster tests
bash ./ci/scripts/build-linux.sh \
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git" \
"v6.5.8" \
"v6.6.93" \
/opt/linux/bzImage \
'MEDIA_SUPPORT' \
'MEDIA_TEST_SUPPORT' \

View File

@ -39,8 +39,7 @@ RUN choco install -y cmake --installargs 'ADD_CMAKE_TO_PATH=System'
RUN choco install -y git --params '/NoAutoCrlf /NoCredentialManager /NoShellHereIntegration /NoGuiHereIntegration /NoShellIntegration'
RUN choco install -y git-lfs
RUN choco install -y 7zip
# See https://gitlab.freedesktop.org/gstreamer/cerbero/-/issues/427
RUN choco install -y python3 --version=3.11.2 --installargs 'AssociateFiles=1 PrependPath=1 Include_pip=1 Include_dev=1'
RUN choco install -y python3 --installargs 'AssociateFiles=1 PrependPath=1 Include_pip=1 Include_dev=1'
RUN choco install -y msys2 --params '/NoPath /NoUpdate /InstallDir:C:\\msys64'
# Install Wix v5 (complete install, no NuGet) from MSI
@ -61,7 +60,7 @@ RUN C:\upgrade_msys2.ps1
RUN C:\msys64\msys2_shell.cmd -ucrt64 -defterm -here -no-start -use-full-path -lc 'pacman -S --noconfirm mingw-w64-ucrt-x86_64-toolchain ninja openssh'
RUN python -m pip install meson==1.5.2 python-gitlab
RUN python -m pip install meson==1.7.2 python-gitlab setuptools wheel
RUN 'git config --global user.email "cirunner@gstreamer.freedesktop.org"; git config --global user.name "GStreamer CI system"'

View File

@ -1,6 +1,6 @@
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
$rust_version = '1.85.0'
$rust_version = '1.89.0'
$rustup_url = 'https://win.rustup.rs/x86_64'
Invoke-WebRequest -Uri $rustup_url -OutFile C:\rustup-init.exe

View File

@ -84,7 +84,6 @@ meson \
-Dbad=disabled \
-Dlibav=disabled \
-Dges=disabled \
-Dvaapi=disabled \
-Dsharp=disabled \
-Drs=disabled \
-Dpython=disabled \

View File

@ -48,16 +48,23 @@ if __name__ == "__main__":
return None
cerbero = None
# We do not want to run on (often out of date) user upstream branch
if os.environ["CI_COMMIT_REF_NAME"] != os.environ['GST_UPSTREAM_BRANCH']:
try:
cerbero_name = f'{os.environ["CI_PROJECT_NAMESPACE"]}/cerbero'
cerbero_branch = os.environ["CI_COMMIT_REF_NAME"]
cerbero = get_matching_user_project(cerbero_name, cerbero_branch)
except gitlab.exceptions.GitlabGetError:
pass
# Only look for user namespace cerbero branch when running in a merge request
if "CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" in os.environ:
print("GStreamer monorepo merge request")
cerbero_branch = os.environ["CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"]
user_project_path = os.environ["CI_MERGE_REQUEST_SOURCE_PROJECT_PATH"]
user_ns = os.path.dirname(user_project_path)
cerbero_name = f'{user_ns}/cerbero'
# We do not want to run on (often out of date) user upstream branch
if os.environ["CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"] != os.environ["GST_UPSTREAM_BRANCH"]:
try:
cerbero = get_matching_user_project(cerbero_name, cerbero_branch)
except gitlab.exceptions.GitlabGetError as e:
print("No matching user project found: " + str(e))
pass
if cerbero is None:
print("Using gstreamer org namespace")
cerbero_name = CERBERO_PROJECT
cerbero_branch = os.environ["GST_UPSTREAM_BRANCH"]
cerbero = gl.projects.get(cerbero_name)

View File

@ -34,8 +34,5 @@ werror = true
[gst-python:built-in options]
werror = true
[gstreamer-vaapi:built-in options]
werror = true
[gstreamer-sharp:built-in options]
werror = true

View File

@ -36,5 +36,31 @@ hotdoc run --conf-file "$builddir"/subprojects/gst-docs/GStreamer-doc.json
mv "$builddir/subprojects/gst-docs/GStreamer-doc/html" documentation/
# Check GES children properties documentation is up to date
echo "Checking GES children properties documentation..."
# Force building python extension modules to ensure the _gi_gst python module is built
ninja -C "$builddir" gst-python@@gst-python-extensions
./gst-env.py --builddir "$builddir" python3 subprojects/gst-editing-services/docs/libs/document-children-props.py
# Check if there are any changes in the markdown files
if ! git diff --ignore-submodules --exit-code subprojects/gst-editing-services/docs/libs/*-children-props.md; then
echo "ERROR: GES children properties documentation is out of date!"
# Create diff for download
diffsdir='diffs'
mkdir -p "$diffsdir"
diffname="$diffsdir/ges_children_properties_documentation.diff"
git diff --ignore-submodules subprojects/gst-editing-services/docs/libs/*-children-props.md > "$diffname"
echo ""
echo "You can download and apply the changes with:"
echo " \$ curl -L \${CI_ARTIFACTS_URL}/$diffname | git apply -"
echo ""
echo "(note that it might take a few minutes for artifacts to be available on the server)"
exit 1
fi
echo "GES children properties documentation is up to date"
pip3 install bs4
python3 subprojects/gst-docs/scripts/rust_doc_unifier.py documentation/

View File

@ -55,14 +55,14 @@ if [ -d linux ]; then
git fetch --depth=1 $REPO $BRANCH_OR_TAG
git checkout FETCH_HEAD
else
sudo mkdir ./linux
sudo chown containeruser:containeruser ./linux
git clone --depth=1 --branch=$BRANCH_OR_TAG $REPO linux
pushd linux
fi
# Apply visl patches until they are upstreamed
for patch in ../ci/docker/fedora/patches/*.patch; do
patch -p1 < "${patch}"
done
git apply ../ci/docker/fedora/patches/*.patch
make defconfig
sync
@ -90,7 +90,9 @@ make -j8 WERROR=0
popd
TARGET_DIR="$(dirname "$IMAGE")"
mkdir -p "$TARGET_DIR"
sudo mkdir -p "$TARGET_DIR"
sudo chown containeruser:containeruser --recursive "$TARGET_DIR"
mv linux/arch/$SUBARCH/boot/bzImage "$IMAGE"
mv linux/.config $TARGET_DIR/.config
rm -rf linux
sudo rm -rf linux

View File

@ -11,15 +11,9 @@ die() {
exit 1
}
check_image_base() {
local base=$(
skopeo inspect docker://$TOOLBOX_IMAGE 2>/dev/null |
jq -r '.Labels["org.opencontainers.image.base.name"]')
[[ "$base" == "$BASE_CI_IMAGE" ]]
}
build_container() {
echo Building $TOOLBOX_IMAGE from $BASE_CI_IMAGE
local tmptag="localhost/rebuilt-tmp-tag"
echo Rebuilding image: $BASE_CI_IMAGE
export BUILDAH_ISOLATION=chroot
export BUILDAH_FORMAT=docker
@ -95,61 +89,59 @@ build_container() {
# glib2
# )
buildah run $build_cntr dnf install -y "${extra_packages[@]}"
buildah run $build_cntr dnf install -y "${our_extra_packages[@]}"
buildah run $build_cntr sudo dnf install -y "${extra_packages[@]}"
buildah run $build_cntr sudo dnf install -y "${our_extra_packages[@]}"
# buildah run $build_cntr dnf debuginfo-install -y "${debug_packages[@]}"
buildah run $build_cntr dnf clean all
buildah run $build_cntr rm -rf /var/lib/cache/dnf
buildah run $build_cntr sudo dnf clean all
buildah run $build_cntr sudo rm -rf /var/lib/cache/dnf
# random uid
uid="10043"
name="containeruser"
buildah run $build_cntr -- groupadd $name -g $uid
buildah run $build_cntr -- useradd -u $uid -g $uid -ms /bin/bash $name
buildah run $build_cntr -- usermod -aG wheel $name
buildah run $build_cntr -- bash -c "echo $name ALL=\(ALL\) NOPASSWD:ALL > /etc/sudoers.d/$name"
buildah run $build_cntr -- chmod 0440 /etc/sudoers.d/$name
buildah config \
--env RUSTUP_HOME="/usr/local/rustup" \
--env CARGO_HOME="/usr/local/cargo/" \
--env PATH="$PATH:/usr/local/cargo/bin/" \
$build_cntr
# Remove the hardcoded HOME env var that ci-templates adds
# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2433#note_2243222
# Also add the OCI labels that toolbox expects, to advertize that image is compatible
# Additionally add a non-root default user
# Also add the OCI labels that toolbox expects, to advertize that the image is compatible
buildah config --env HOME- \
--user $name \
--label com.github.containers.toolbox=true \
--label org.opencontainers.image.base.name=$BASE_CI_IMAGE \
$build_cntr
buildah commit $build_cntr $TOOLBOX_IMAGE
buildah tag $TOOLBOX_IMAGE $TOOLBOX_LATEST
buildah commit $build_cntr $tmptag
# Retag the image to have the same tag as the base image
buildah tag $tmptag $BASE_CI_IMAGE
# Unmount and remove the container
buildah umount "$build_cntr"
buildah rm "$build_cntr"
}
BASE_CI_IMAGE="$1"
TOOLBOX_BRANCH="$2"
GST_UPSTREAM_BRANCH="$3"
gstbranch="${GST_UPSTREAM_BRANCH:-main}"
TOOLBOX_IMAGE="$CI_REGISTRY_IMAGE/$FDO_REPO_SUFFIX:gst-toolbox-${TOOLBOX_BRANCH}"
# push an unversioned tag to make it easier to use.
# ex. pull foobar:toolbox-main
TOOLBOX_LATEST="$CI_REGISTRY_IMAGE/$FDO_REPO_SUFFIX:gst-toolbox-${GST_UPSTREAM_BRANCH}"
[[ -n "$BASE_CI_IMAGE" && -n "$TOOLBOX_BRANCH" && -n "$GST_UPSTREAM_BRANCH" ]] ||
die "Usage: $(basename $0) BASE_CI_IMAGE TOOLBOX TAG GST_UPSTREAM_BRANCH"
[[ -n "$BASE_CI_IMAGE" ]] ||
die "Usage: $(basename $0) BASE_CI_IMAGE "
[[ -n "$CI_REGISTRY" && -n "$CI_REGISTRY_USER" && -n "$CI_REGISTRY_PASSWORD" ]] ||
die "Insufficient information to log in."
podman login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
if ! check_image_base; then
build_container
build_container
podman push "$TOOLBOX_IMAGE"
podman push "$TOOLBOX_LATEST"
echo "Publishing $BASE_CI_IMAGE"
podman push "$BASE_CI_IMAGE"
# Publish an unversioned ref as well that we can always fetch
if [ "$CI_COMMIT_BRANCH" == "main" ] && [ "$CI_PROJECT_NAMESAPCE" == "gstreamer" ]; then
latest="$CI_REGISTRY_IMAGE/$FDO_REPO_SUFFIX:gst-toolbox-main"
podman tag "$BASE_CI_IMAGE" "$latest"
podman push "$latest"
fi
echo "Create your toolbox with either of the following commands"
echo " $ toolbox create gst-toolbox --image $TOOLBOX_LATEST"
echo " $ toolbox create gst-toolbox-$TOOLBOX_BRANCH --image $TOOLBOX_IMAGE"
echo " $ toolbox create gst-$gstbranch --image $BASE_CI_IMAGE"

View File

@ -22,7 +22,7 @@ if __name__ == "__main__":
with open(diffname, 'w') as diff:
subprocess.check_call(['git', 'diff'], stdout=diff)
print(f'\033[91mYou have a diff in the {opts.name}. Please update with:\033[0m')
print(' $ curl %s/%s | git apply -' %
print(' $ curl -L %s/%s | git apply -' %
(os.environ.get('CI_ARTIFACTS_URL', "NOT_RUNNING_ON_CI"), diffname.replace('../', '')))
if res != 0:

View File

@ -0,0 +1,12 @@
#! /bin/bash
# Create a file we can check at runtime, and identify if the environment we
# run against is one of our CI build images.
# Useful mostly for our internal scripts so we can match against metadata
# rather than heuristics, ex. if /subprojects exists
#
# Conceptually similar to /.flatpak-info
# We can also later on add various metadata once we need to.
# Preferebly in an .ini format
touch /.gstreamer-ci-linux-image
chmod 644 /.gstreamer-ci-linux-image

View File

@ -0,0 +1,12 @@
#! /bin/bash
set -eux
uid="10043"
name="containeruser"
groupadd $name -g $uid
useradd -u $uid -g $uid -ms /bin/bash $name
usermod -aG wheel $name || usermod -aG sudo $name
bash -c "echo $name ALL=\(ALL\) NOPASSWD:ALL > /etc/sudoers.d/$name"
chmod 0440 /etc/sudoers.d/$name

View File

@ -0,0 +1,10 @@
# We are currently running pip as root which will cause it
# to install into /root/.local cause it wants to do a user install
# Set the user-base in the gloabl config, /etc/pip.conf, so pip will
# both install there and subsequently look there if we invoke it
# from any other user.
# This makes pip install ofc require elevated permissions, as it
# will be writting into /usr/local from now on
python3 -m pip config --global set global.user-base /usr/local/
# Disable the cache as we'd be removing it at the end of the image build anyway
python3 -m pip config --global set global.no-cache-dir true

View File

@ -2,11 +2,17 @@
set -eux
# get gstreamer and make all subprojects available
git clone -b "${GIT_BRANCH}" "${GIT_URL}" /gstreamer
git -C /gstreamer submodule update --init --depth=1
meson subprojects download --sourcedir /gstreamer
./ci/scripts/handle-subprojects-cache.py --build --cache-dir /subprojects /gstreamer/subprojects/
# Avoid the cache being owned by root
# and make sure its readable to anyone
sudo mkdir -p /var/cache/subprojects/
sudo chown containeruser:containeruser --recursive /var/cache/subprojects/
sudo chmod --recursive a+r /var/cache/subprojects/
# Now remove the gstreamer clone
rm -rf /gstreamer
# Path where cbuild checks out the repo
cd /tmp/clone/
sudo chmod --recursive a+r /tmp/clone
sudo chown containeruser:containeruser --recursive /tmp/clone
# get gstreamer and make all subprojects available
git submodule update --init --depth=1
meson subprojects download
./ci/scripts/handle-subprojects-cache.py --build --cache-dir /var/cache/subprojects/ /tmp/clone/subprojects/

View File

@ -12,7 +12,7 @@ import subprocess
PARSER = argparse.ArgumentParser()
PARSER.add_argument('subprojects_dir')
PARSER.add_argument('--build', action="store_true", default=False)
PARSER.add_argument('--cache-dir', default="/subprojects")
PARSER.add_argument('--cache-dir', default="/var/cache/subprojects/")
def create_cache_in_image(options):

View File

@ -3,23 +3,30 @@
set -eux
# Install Rust
RUSTUP_VERSION=1.27.1
RUST_VERSION=1.85.0
RUSTUP_VERSION=1.28.1
RUST_VERSION=1.89.0
RUST_ARCH="x86_64-unknown-linux-gnu"
RUSTUP_URL=https://static.rust-lang.org/rustup/archive/$RUSTUP_VERSION/$RUST_ARCH/rustup-init
curl -o rustup-init $RUSTUP_URL
curl -o /tmp/rustup-init $RUSTUP_URL
export RUSTUP_HOME="/usr/local/rustup"
export CARGO_HOME="/usr/local/cargo"
export PATH="/usr/local/cargo/bin:$PATH"
chmod +x rustup-init;
./rustup-init -y --no-modify-path --default-toolchain $RUST_VERSION;
rm rustup-init;
chmod -R a+w $RUSTUP_HOME $CARGO_HOME
chmod +x /tmp/rustup-init;
sudo --preserve-env=RUSTUP_HOME,CARGO_HOME,PATH /tmp/rustup-init -y --no-modify-path --default-toolchain $RUST_VERSION;
rm /tmp/rustup-init;
cargo install --locked cargo-c --version 0.10.11+cargo-0.86.0
# We are root while creating the directory, but we want it to
# be accessible to all users
sudo mkdir -p $RUSTUP_HOME $CARGO_HOME
sudo chmod -R a+w $RUSTUP_HOME $CARGO_HOME
cargo install --locked cargo-c --version 0.10.15+cargo-0.90.0
# We don't need them in the build image and they occupy
# 600mb of html files (athough they compress extremely well)
rustup component remove rust-docs
rustup --version
cargo --version

View File

@ -1,12 +1,31 @@
#! /bin/bash
image_cache="${SUBPROJECTS_CACHE_DIR:-}"
ci_image_info="/.gstreamer-ci-linux-image";
# Print useful metadata at the start of the build
if [[ -e "/etc/os-release" ]]; then
cat /etc/os-release
fi
if [[ -e "$ci_image_info" && -n "${CI:-}" ]]; then
if [[ -z "$image_cache" ]]; then
echo "Running in CI but haven't defined SUBPROJECTS_CACHE_DIR"
exit 1
fi
fi
whoami
id -u
id -g
date && date -u
echo $SHELL
echo $PATH
# On the CI image we install the rust toolcahin under this path
# If it exists set the HOME and PATH variables and print the versions
# set the HOME and PATH variables and print the versions
# of what we have installed
cargo_binary="/usr/local/cargo/bin/cargo";
if [[ -e "$cargo_binary" ]]; then
if [[ -e "$ci_image_info" ]]; then
export RUSTUP_HOME="/usr/local/rustup"
export CARGO_HOME="/usr/local/cargo"
export PATH="/usr/local/cargo/bin:$PATH"
@ -17,9 +36,32 @@ if [[ -e "$cargo_binary" ]]; then
cargo cinstall --version
fi
if [[ -e "$ci_image_info" ]]; then
who="$(whoami)"
# Assert we always use the epxected user in ci jobs
if [[ $who != "containeruser" && -n "${CI:-}" ]]; then
echo "Running as the wrong user in a CI job"
exit 1
fi
# Chown the project directory to match the user we run against.
# Sometimes, gitlab runners will reuse pre-existing checkouts from other jobs
# which might not have been running as our contianeruser, and thus the files won't
# have the expected owenership.
# Always chown until we have cycled out all the cached volumes from the runners.
if [[ -n "${CI:-}" ]]; then
sudo chown containeruser:containeruser --recursive .
# Make sure the directory exists
sudo mkdir -p "${CCACHE_DIR}"
sudo chown containeruser:containeruser --recursive "${CCACHE_DIR}"
fi
fi
# Only copy the cache over if the variable is set, which usually only happens on CI.
if [ -n "$image_cache" ]; then
date -R
ci/scripts/handle-subprojects-cache.py --cache-dir "$image_cache" subprojects/
date -R
fi

View File

@ -15629,7 +15629,7 @@ contains one frame)</doc>
<source-position filename="../subprojects/gst-editing-services/ges/ges-version.h"/>
<type name="gint" c:type="gint"/>
</constant>
<constant name="VERSION_MICRO" value="0" c:type="GES_VERSION_MICRO">
<constant name="VERSION_MICRO" value="1" c:type="GES_VERSION_MICRO">
<source-position filename="../subprojects/gst-editing-services/ges/ges-version.h"/>
<type name="gint" c:type="gint"/>
</constant>

File diff suppressed because it is too large Load Diff

View File

@ -330,6 +330,43 @@ The memory is only mmapped on gst_buffer_map() request.</doc>
</parameter>
</parameters>
</function>
<function name="alloc_full" c:identifier="gst_fd_allocator_alloc_full" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/allocators/gstfdmemory.c">Return a %GstMemory that wraps a generic file descriptor.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/allocators/gstfdmemory.h"/>
<return-value transfer-ownership="full" nullable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/allocators/gstfdmemory.c">a GstMemory based on @allocator.
When the buffer will be released the allocator will close the @fd unless
the %GST_FD_MEMORY_FLAG_DONT_CLOSE flag is specified.
The memory is only mmapped on gst_buffer_map() request.</doc>
<type name="Gst.Memory" c:type="GstMemory*"/>
</return-value>
<parameters>
<parameter name="allocator" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/allocators/gstfdmemory.c">allocator to be used for this memory</doc>
<type name="Gst.Allocator" c:type="GstAllocator*"/>
</parameter>
<parameter name="fd" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/allocators/gstfdmemory.c">file descriptor</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="maxsize" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/allocators/gstfdmemory.c">the total size of the memory represented by @fd</doc>
<type name="gsize" c:type="gsize"/>
</parameter>
<parameter name="offset" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/allocators/gstfdmemory.c">the offset of valid data in the memory</doc>
<type name="gsize" c:type="gsize"/>
</parameter>
<parameter name="size" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/allocators/gstfdmemory.c">the size of valid data in the memory</doc>
<type name="gsize" c:type="gsize"/>
</parameter>
<parameter name="flags" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/allocators/gstfdmemory.c">extra #GstFdMemoryFlags</doc>
<type name="FdMemoryFlags" c:type="GstFdMemoryFlags"/>
</parameter>
</parameters>
</function>
<field name="parent">
<type name="Gst.Allocator" c:type="GstAllocator"/>
</field>
@ -475,6 +512,10 @@ gst_shm_allocator_init_once() has not been previously called.</doc>
<type name="none" c:type="void"/>
</return-value>
</function>
<field name="parent_instance" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/allocators/gstshmallocator.h">Parent instance.</doc>
<type name="FdAllocator" c:type="GstFdAllocator"/>
</field>
</class>
<record name="ShmAllocatorClass" c:type="GstShmAllocatorClass" glib:is-gtype-struct-for="ShmAllocator">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/allocators/gstshmallocator.h"/>

View File

@ -12,6 +12,172 @@ and/or use gtk-doc annotations. -->
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.h"/>
<type name="guintptr" c:type="guintptr"/>
</alias>
<record name="BatchBuffer" c:type="GstAnalyticsBatchBuffer" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">The intended use of this struct is that analytics elements read the buffer or
buffer list and potentially attach new #GstMeta with additional information.
Only one of @buffer or @buffer_list is going to be set, or both are %NULL.
Elements that need to modify @buffer (e.g. to attach a new meta) must first
call gst_buffer_make_writable() and store the writable buffer in this struct.
Similarly, a writable @buffer_list must be ensured with
gst_buffer_list_make_writable().
Modifying any other fields must be done with special care to ensure that the
data flow of the stream is not broken.
It is possible for @buffer and @buffer_list to be %NULL, e.g. if there was no
buffer for this batch but there were serialized events like a gap event.
Note that @serialized_events always contains all currently active serialized
events and not only the changed events compared to the previous buffer.</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h"/>
<field name="sticky_events" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">All sticky #GstEvent that relate to this buffer</doc>
<array length="1" zero-terminated="0" c:type="GstEvent**">
<type name="Gst.Event" c:type="GstEvent*"/>
</array>
</field>
<field name="n_sticky_events" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">Number of sticky events.</doc>
<type name="gsize" c:type="gsize"/>
</field>
<field name="serialized_events" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">All non-sticky, serialized #GstEvent that arrived
after the previous and before this buffer</doc>
<array length="3" zero-terminated="0" c:type="GstEvent**">
<type name="Gst.Event" c:type="GstEvent*"/>
</array>
</field>
<field name="n_serialized_events" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">Number of serialized events.</doc>
<type name="gsize" c:type="gsize"/>
</field>
<field name="buffer" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">The buffer, if any.</doc>
<type name="Gst.Buffer" c:type="GstBuffer*"/>
</field>
<field name="buffer_list" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">The buffer list, if any.</doc>
<type name="Gst.BufferList" c:type="GstBufferList*"/>
</field>
<field name="padding" readable="0" private="1">
<array zero-terminated="0" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
<method name="get_caps" c:identifier="gst_analytics_batch_buffer_get_caps" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">Gets the #GstCaps from a buffer</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h"/>
<return-value transfer-ownership="none" nullable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">The #GstCaps if there are any</doc>
<type name="Gst.Caps" c:type="GstCaps*"/>
</return-value>
<parameters>
<instance-parameter name="buffer" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">A #GstAnalyticsBatchBuffer</doc>
<type name="BatchBuffer" c:type="GstAnalyticsBatchBuffer*"/>
</instance-parameter>
</parameters>
</method>
<method name="get_segment" c:identifier="gst_analytics_batch_buffer_get_segment" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">Gets the #GstSegment from a buffer</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h"/>
<return-value transfer-ownership="none" nullable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">The #GstSegment if there is one</doc>
<type name="Gst.Segment" c:type="const GstSegment*"/>
</return-value>
<parameters>
<instance-parameter name="buffer" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">A #GstAnalyticsBatchBuffer</doc>
<type name="BatchBuffer" c:type="GstAnalyticsBatchBuffer*"/>
</instance-parameter>
</parameters>
</method>
<method name="get_stream_id" c:identifier="gst_analytics_batch_buffer_get_stream_id" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">Gets the current stream id from a buffer</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h"/>
<return-value transfer-ownership="none" nullable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">The stream id if there is any</doc>
<type name="utf8" c:type="const gchar*"/>
</return-value>
<parameters>
<instance-parameter name="buffer" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">A #GstAnalyticsBatchBuffer</doc>
<type name="BatchBuffer" c:type="GstAnalyticsBatchBuffer*"/>
</instance-parameter>
</parameters>
</method>
</record>
<record name="BatchMeta" c:type="GstAnalyticsBatchMeta" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">This meta represents a batch of buffers from one or more streams together
with the relevant events to be able to interpret the buffers and to be able
to reconstruct the original streams.
When used for multiple streams and batching them temporarily, caps of type
`multistream/x-analytics-batch(meta:GstAnalyticsBatchMeta)` should be used,
with the original caps of each stream in an array-typed `streams` field. The
original caps of each stream might be extended by additional fields and the
order of the streams in the array corresponds to the order of the @streams
array of the meta. In this case, empty buffers would be used without any
#GstMemory and
When used for a single stream, the original caps might be used together with
the `meta:GstAnalyticsBatchMeta` caps feature and potentially extended by
additional fields to describe the kind of batching and its configuration,
e.g. that each batch is made of 25% overlapping 320x320 slices of the
original video frame.
The timestamp, duration and other metadata of each batch can be retrieved
from the parent buffer of this meta.</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h"/>
<field name="meta" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">parent</doc>
<type name="Gst.Meta" c:type="GstMeta"/>
</field>
<field name="streams" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">#GstAnalyticsBatchStream for this batch</doc>
<array length="2" zero-terminated="0" c:type="GstAnalyticsBatchStream*">
<type name="BatchStream" c:type="GstAnalyticsBatchStream"/>
</array>
</field>
<field name="n_streams" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">Number of streams</doc>
<type name="gsize" c:type="gsize"/>
</field>
<function name="get_info" c:identifier="gst_analytics_batch_meta_get_info" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h"/>
<return-value transfer-ownership="none">
<type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
</return-value>
</function>
</record>
<record name="BatchStream" c:type="GstAnalyticsBatchStream" version="1.28">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h"/>
<field name="index" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">Index of the stream in the meta's stream array</doc>
<type name="guint" c:type="guint"/>
</field>
<field name="buffers" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">#GstAnalyticsBatchBuffer in this batch for this stream</doc>
<array length="2" zero-terminated="0" c:type="GstAnalyticsBatchBuffer*">
<type name="BatchBuffer" c:type="GstAnalyticsBatchBuffer"/>
</array>
</field>
<field name="n_buffers" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">Number of buffers</doc>
<type name="gsize" c:type="gsize"/>
</field>
<field name="padding" readable="0" private="1">
<array zero-terminated="0" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</record>
<constant name="CAPS_FEATURE_META_GST_ANALYTICS_BATCH_META" value="meta:GstAnalyticsBatchMeta" c:type="GST_CAPS_FEATURE_META_GST_ANALYTICS_BATCH_META" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h">The caps feature to be used on streams that make use of this meta.</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h"/>
<type name="utf8" c:type="gchar*"/>
</constant>
<record name="ClsMtd" c:type="GstAnalyticsClsMtd" version="1.24">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsclassificationmtd.h">Handle containing data required to use gst_analytics_cls_mtd APIs. This type
is generally expected to be allocated on the stack.</doc>
@ -1302,7 +1468,10 @@ pixel to instance of an object is identified.</doc>
</constructor>
<constructor name="new_simple" c:identifier="gst_tensor_new_simple" version="1.26">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">Allocates a new #GstTensor of @dims_order ROW_MAJOR or COLUMN_MAJOR and
with an interleaved layout</doc>
with an interleaved layout.
For example, a two-dimensional tensor with 32 rows and 4 columns, @dims would
be the two element array `[32, 4]`.</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">A newly allocated #GstTensor</doc>
@ -1330,14 +1499,49 @@ with an interleaved layout</doc>
<type name="gsize" c:type="gsize"/>
</parameter>
<parameter name="dims" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">tensor dimensions. Value of 0 mean the
dimension is dynamic.</doc>
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">size of tensor in each dimension.
A value of 0 means the dimension is dynamic.</doc>
<array length="4" zero-terminated="0" c:type="gsize*">
<type name="gsize" c:type="gsize"/>
</array>
</parameter>
</parameters>
</constructor>
<method name="check_type" c:identifier="gst_tensor_check_type" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">Validate the tensor whether it mathces the reading order, dimensions and the data type.
Validate whether the #GstBuffer has enough size to hold the tensor data.</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">TRUE if the #GstTensor has the reading order from the memory matching @order,
dimensions matching @num_dims, data type matching @data_type
Otherwise FALSE will be returned.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="tensor" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">A #GstTensor</doc>
<type name="Tensor" c:type="const GstTensor*"/>
</instance-parameter>
<parameter name="data_type" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">The data type of the tensor</doc>
<type name="TensorDataType" c:type="GstTensorDataType"/>
</parameter>
<parameter name="order" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">The order of the tensor to read from the memory</doc>
<type name="TensorDimOrder" c:type="GstTensorDimOrder"/>
</parameter>
<parameter name="num_dims" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">The number of dimensions that the tensor can have</doc>
<type name="gsize" c:type="gsize"/>
</parameter>
<parameter name="dims" transfer-ownership="none" nullable="1" allow-none="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">An optional array of dimensions, where G_MAXSIZE means ANY.</doc>
<array length="2" zero-terminated="0" c:type="const gsize*">
<type name="gsize" c:type="gsize"/>
</array>
</parameter>
</parameters>
</method>
<method name="copy" c:identifier="gst_tensor_copy" version="1.26">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">Create a copy of @tensor.</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h"/>
@ -1385,6 +1589,20 @@ dimension is dynamic.</doc>
</parameter>
</parameters>
</method>
<function name="data_type_get_name" c:identifier="gst_tensor_data_type_get_name" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">Get a string version of the data type</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">a constant string with the name of the data type</doc>
<type name="utf8" c:type="const gchar*"/>
</return-value>
<parameters>
<parameter name="data_type" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">a #GstTensorDataType</doc>
<type name="TensorDataType" c:type="GstTensorDataType"/>
</parameter>
</parameters>
</function>
</record>
<enumeration name="TensorDataType" version="1.26" c:type="GstTensorDataType">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h">Describe the type of data contain in the tensor.</doc>
@ -1431,6 +1649,34 @@ dimension is dynamic.</doc>
<member name="bfloat16" value="13" c:identifier="GST_TENSOR_DATA_TYPE_BFLOAT16">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h">"brain" 16 bit floating point tensor data</doc>
</member>
<member name="string" value="14" c:identifier="GST_TENSOR_DATA_TYPE_STRING" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h">UTF-8 string</doc>
</member>
<member name="bool" value="15" c:identifier="GST_TENSOR_DATA_TYPE_BOOL" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h">A boolean value stored in 1 byte.</doc>
</member>
<member name="complex64" value="16" c:identifier="GST_TENSOR_DATA_TYPE_COMPLEX64" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h">A 64-bit complex number stored in 2 32-bit values.</doc>
</member>
<member name="complex128" value="17" c:identifier="GST_TENSOR_DATA_TYPE_COMPLEX128" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h">A 128-bit complex number stored in 2 64-bit values.</doc>
</member>
<member name="float8e4m3fn" value="18" c:identifier="GST_TENSOR_DATA_TYPE_FLOAT8E4M3FN" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h">A non-IEEE 8-bit floating point format with 4 exponent bits and 3 mantissa bits, with NaN and no infinite values (FN).
See [this paper for more details](https://onnx.ai/onnx/technical/float8.html)</doc>
</member>
<member name="float8e4m3fnuz" value="19" c:identifier="GST_TENSOR_DATA_TYPE_FLOAT8E4M3FNUZ" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h">A non-IEEE 8-bit floating point format with 4 exponent bits and 3 mantissa bits, with NaN, no infinite values (FN) and no negative zero (UZ).
See [this paper for more details](https://onnx.ai/onnx/technical/float8.html)</doc>
</member>
<member name="float8e5m2" value="20" c:identifier="GST_TENSOR_DATA_TYPE_FLOAT8E5M2" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h">A non-IEEE 8-bit floating point format with 5 exponent bits and 2 mantissa bits.
See [this paper for more details](https://onnx.ai/onnx/technical/float8.html)</doc>
</member>
<member name="float8e5m2fnuz" value="21" c:identifier="GST_TENSOR_DATA_TYPE_FLOAT8E5M2FNUZ" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h">A non-IEEE 8-bit floating point format with 5 exponent bits and 2 mantissa bits, with NaN, no infinite values (FN) and no negative zero (UZ).
See [this paper for more details](https://onnx.ai/onnx/technical/float8.html)</doc>
</member>
</enumeration>
<enumeration name="TensorDimOrder" version="1.26" c:type="GstTensorDimOrder">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h">Indicate to read tensor from memory in row-major or column-major order.</doc>
@ -1481,6 +1727,25 @@ smaller than #GstTensorMeta.num_tensors</doc>
</parameter>
</parameters>
</method>
<method name="get_by_id" c:identifier="gst_tensor_meta_get_by_id" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">Get the first tensor from the #GstTensorMeta identified by @id.</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.h"/>
<return-value transfer-ownership="none" nullable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">a GstTensor with id matching @id.
Otherwise NULL will be returned.</doc>
<type name="Tensor" c:type="const GstTensor*"/>
</return-value>
<parameters>
<instance-parameter name="tmeta" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">A #GstTensorMeta</doc>
<type name="TensorMeta" c:type="GstTensorMeta*"/>
</instance-parameter>
<parameter name="id" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">A #GQuark identifying tensor-encoding</doc>
<type name="GLib.Quark" c:type="GQuark"/>
</parameter>
</parameters>
</method>
<method name="get_index_from_id" c:identifier="gst_tensor_meta_get_index_from_id" version="1.26">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">Finds the first tensor with the requsted ID in the meta</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.h"/>
@ -1500,6 +1765,46 @@ smaller than #GstTensorMeta.num_tensors</doc>
</parameter>
</parameters>
</method>
<method name="get_typed_tensor" c:identifier="gst_tensor_meta_get_typed_tensor" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">Get the first tensor from the #GstTensorMeta identified by
@tensor_id, matching the reading order, dimensions and the data
type and optionally the dimensions. Validate whether the
#GstBuffer has enough size to hold the tensor data.</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.h"/>
<return-value transfer-ownership="none" nullable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">a matching #GstTensor,
otherwise NULL</doc>
<type name="Tensor" c:type="const GstTensor*"/>
</return-value>
<parameters>
<instance-parameter name="tmeta" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">A #GstTensorMeta</doc>
<type name="TensorMeta" c:type="GstTensorMeta*"/>
</instance-parameter>
<parameter name="tensor_id" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">A #GQuark identifying the tensor-encoding</doc>
<type name="GLib.Quark" c:type="GQuark"/>
</parameter>
<parameter name="data_type" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">The data type of the tensor</doc>
<type name="TensorDataType" c:type="GstTensorDataType"/>
</parameter>
<parameter name="order" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">The order of the tensor to read from the memory</doc>
<type name="TensorDimOrder" c:type="GstTensorDimOrder"/>
</parameter>
<parameter name="num_dims" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">The number of dimensions that the tensor can have</doc>
<type name="gsize" c:type="gsize"/>
</parameter>
<parameter name="dims" transfer-ownership="none" nullable="1" allow-none="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">An optional array of dimensions, where G_MAXSIZE means ANY.</doc>
<array length="3" zero-terminated="0" c:type="const gsize*">
<type name="gsize" c:type="gsize"/>
</array>
</parameter>
</parameters>
</method>
<method name="set" c:identifier="gst_tensor_meta_set" version="1.26">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">Sets tensors into the #GstTensorMeta</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.h"/>
@ -1612,6 +1917,32 @@ Get the opaque id identifying the relatable type</doc>
</return-value>
</function>
</record>
<function name="batch_meta_api_get_type" c:identifier="gst_analytics_batch_meta_api_get_type" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h"/>
<return-value transfer-ownership="none">
<type name="GType" c:type="GType"/>
</return-value>
</function>
<function name="batch_meta_get_info" c:identifier="gst_analytics_batch_meta_get_info" moved-to="BatchMeta.get_info" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h"/>
<return-value transfer-ownership="none">
<type name="Gst.MetaInfo" c:type="const GstMetaInfo*"/>
</return-value>
</function>
<function name="buffer_add_analytics_batch_meta" c:identifier="gst_buffer_add_analytics_batch_meta" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">Adds a #GstAnalyticsBatchMeta to a buffer or returns the existing one</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">The new #GstAnalyticsBatchMeta</doc>
<type name="BatchMeta" c:type="GstAnalyticsBatchMeta*"/>
</return-value>
<parameters>
<parameter name="buffer" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">A writable #GstBuffer</doc>
<type name="Gst.Buffer" c:type="GstBuffer*"/>
</parameter>
</parameters>
</function>
<function name="buffer_add_analytics_relation_meta" c:identifier="gst_buffer_add_analytics_relation_meta" version="1.24">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.c">Attach a analysis-results-meta-relation meta (#GstAnalyticsRelationMeta)to @buffer.
@ -1652,7 +1983,7 @@ analysis meta.</doc>
</parameters>
</function>
<function name="buffer_add_tensor_meta" c:identifier="gst_buffer_add_tensor_meta" version="1.26">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">Adds a #GstTensorMeta to a buffer or returns the existing one</doc>
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">Adds a #GstTensorMeta to a buffer</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.c">The new #GstTensorMeta</doc>
@ -1665,6 +1996,20 @@ analysis meta.</doc>
</parameter>
</parameters>
</function>
<function name="buffer_get_analytics_batch_meta" c:identifier="gst_buffer_get_analytics_batch_meta" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">Gets the #GstAnalyticsBatchMeta from a buffer</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.h"/>
<return-value transfer-ownership="none" nullable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">The #GstAnalyticsBatchMeta if there is one</doc>
<type name="BatchMeta" c:type="GstAnalyticsBatchMeta*"/>
</return-value>
<parameters>
<parameter name="buffer" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsbatchmeta.c">A #GstBuffer</doc>
<type name="Gst.Buffer" c:type="GstBuffer*"/>
</parameter>
</parameters>
</function>
<function name="buffer_get_analytics_relation_meta" c:identifier="gst_buffer_get_analytics_relation_meta" version="1.24">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.c">Retrives the meta or %NULL if it doesn't exist</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.h"/>
@ -1724,6 +2069,94 @@ desired to track an object across many frames. This type of metadata holds
information about the tracking, for example, it can be used alongside a
#GstAnalyticsODMtd to track an object.</doc>
</docsection>
<function name="image_util_iou_float" c:identifier="gst_analytics_image_util_iou_float" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Calculate the intersection over the union (IoU) of the two areas defined by
the bounding box 1 and bounding box 2. IoU is a measure of how much two
regions overlap.</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">IoU of bb1 and bb2.</doc>
<type name="gfloat" c:type="gfloat"/>
</return-value>
<parameters>
<parameter name="bb1_x" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 1, X coordinate</doc>
<type name="gfloat" c:type="gfloat"/>
</parameter>
<parameter name="bb1_y" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 1, Y coordinate</doc>
<type name="gfloat" c:type="gfloat"/>
</parameter>
<parameter name="bb1_w" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 1, width</doc>
<type name="gfloat" c:type="gfloat"/>
</parameter>
<parameter name="bb1_h" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 1, height</doc>
<type name="gfloat" c:type="gfloat"/>
</parameter>
<parameter name="bb2_x" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 2, X coordinate</doc>
<type name="gfloat" c:type="gfloat"/>
</parameter>
<parameter name="bb2_y" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 2, Y coordinate</doc>
<type name="gfloat" c:type="gfloat"/>
</parameter>
<parameter name="bb2_w" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 2, width</doc>
<type name="gfloat" c:type="gfloat"/>
</parameter>
<parameter name="bb2_h" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 2, height</doc>
<type name="gfloat" c:type="gfloat"/>
</parameter>
</parameters>
</function>
<function name="image_util_iou_int" c:identifier="gst_analytics_image_util_iou_int" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Calculate the intersection over the union (IoU) of the two areas defined by
the bounding box 1 and bounding box 2. IoU is a measure of how much two
regions overlap.</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">IoU of bb1 and bb2.</doc>
<type name="gfloat" c:type="gfloat"/>
</return-value>
<parameters>
<parameter name="bb1_x" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 1, X coordinate</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="bb1_y" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 1, Y coordinate</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="bb1_w" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 1, width</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="bb1_h" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 1, height</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="bb2_x" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 2, X coordinate</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="bb2_y" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 2, Y coordinate</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="bb2_w" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 2, width</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="bb2_h" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalytics_image_util.c">Bounding box 2, height</doc>
<type name="gint" c:type="gint"/>
</parameter>
</parameters>
</function>
<function name="mtd_type_get_name" c:identifier="gst_analytics_mtd_type_get_name" moved-to="Mtd.type_get_name" version="1.24">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.c">Gets the string version of the name of this type of analytics data</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gstanalyticsmeta.h"/>
@ -1784,6 +2217,20 @@ metadata type.</doc>
<type name="MtdType" c:type="GstAnalyticsMtdType"/>
</return-value>
</function>
<function name="tensor_data_type_get_name" c:identifier="gst_tensor_data_type_get_name" moved-to="Tensor.data_type_get_name" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">Get a string version of the data type</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">a constant string with the name of the data type</doc>
<type name="utf8" c:type="const gchar*"/>
</return-value>
<parameters>
<parameter name="data_type" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c">a #GstTensorDataType</doc>
<type name="TensorDataType" c:type="GstTensorDataType"/>
</parameter>
</parameters>
</function>
<function name="tensor_meta_api_get_type" c:identifier="gst_tensor_meta_api_get_type" version="1.26" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensormeta.h"/>
<return-value transfer-ownership="none">

View File

@ -7,6 +7,20 @@ and/or use gtk-doc annotations. -->
<package name="gstreamer-app-1.0"/>
<c:include name="gst/app/app.h"/>
<namespace name="GstApp" version="1.0" shared-library="libgstapp-1.0.so.0" c:identifier-prefixes="Gst" c:symbol-prefixes="gst">
<function-macro name="APP_DEPRECATED_FOR" c:identifier="GST_APP_DEPRECATED_FOR" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/app/app-prelude.h"/>
<parameters>
<parameter name="f">
</parameter>
</parameters>
</function-macro>
<function-macro name="APP_DEPRECATED_TYPE_FOR" c:identifier="GST_APP_DEPRECATED_TYPE_FOR" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/app/app-prelude.h"/>
<parameters>
<parameter name="f">
</parameter>
</parameters>
</function-macro>
<function-macro name="APP_SINK" c:identifier="GST_APP_SINK" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.h"/>
<parameters>
@ -80,7 +94,7 @@ which accept a timeout parameter to limit the amount of time to wait.
Appsink will internally use a queue to collect buffers from the streaming
thread. If the application is not pulling samples fast enough, this queue
will consume a lot of memory over time. The "max-buffers", "max-time" and "max-bytes"
properties can be used to limit the queue size. The "drop" property controls whether the
properties can be used to limit the queue size. The "leaky-type" property controls whether the
streaming thread blocks or if older buffers are dropped when the maximum
queue size is reached. Note that blocking the streaming thread can negatively
affect real-time performance and should be avoided.
@ -191,7 +205,7 @@ If an EOS event was received before any buffers, this function returns
</instance-parameter>
</parameters>
</virtual-method>
<virtual-method name="try_pull_object" invoker="try_pull_object" version="1.20" introspectable="0">
<virtual-method name="try_pull_object" invoker="try_pull_object" version="1.20">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">This function blocks until a sample or an event or EOS becomes available or the appsink
element is set to the READY/NULL state or the timeout expires.
@ -323,9 +337,52 @@ condition.</doc>
</instance-parameter>
</parameters>
</method>
<method name="get_drop" c:identifier="gst_app_sink_get_drop" glib:get-property="drop">
<method name="get_current_level_buffers" c:identifier="gst_app_sink_get_current_level_buffers" glib:get-property="current-level-buffers" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Get the number of currently queued buffers inside @appsink.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">The number of currently queued buffers.</doc>
<type name="guint64" c:type="guint64"/>
</return-value>
<parameters>
<instance-parameter name="appsink" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">a #GstAppSink</doc>
<type name="AppSink" c:type="GstAppSink*"/>
</instance-parameter>
</parameters>
</method>
<method name="get_current_level_bytes" c:identifier="gst_app_sink_get_current_level_bytes" glib:get-property="current-level-bytes" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Get the number of currently queued bytes inside @appsink.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">The number of currently queued bytes.</doc>
<type name="guint64" c:type="guint64"/>
</return-value>
<parameters>
<instance-parameter name="appsink" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">a #GstAppSink</doc>
<type name="AppSink" c:type="GstAppSink*"/>
</instance-parameter>
</parameters>
</method>
<method name="get_current_level_time" c:identifier="gst_app_sink_get_current_level_time" glib:get-property="current-level-time" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Get the amount of currently queued time inside @appsink.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">The amount of currently queued time.</doc>
<type name="Gst.ClockTime" c:type="GstClockTime"/>
</return-value>
<parameters>
<instance-parameter name="appsink" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">a #GstAppSink</doc>
<type name="AppSink" c:type="GstAppSink*"/>
</instance-parameter>
</parameters>
</method>
<method name="get_drop" c:identifier="gst_app_sink_get_drop" glib:get-property="drop" deprecated="1" deprecated-version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Check if @appsink will drop old buffers when the maximum amount of queued
data is reached (meaning max buffers, time or bytes limit, whichever is hit first).</doc>
<doc-deprecated xml:space="preserve">Use gst_app_src_get_leaky_type() instead.</doc-deprecated>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">%TRUE if @appsink is dropping old buffers when the queue is
@ -354,6 +411,21 @@ signals.</doc>
</instance-parameter>
</parameters>
</method>
<method name="get_leaky_type" c:identifier="gst_app_sink_get_leaky_type" glib:get-property="leaky-type" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Returns the currently set #GstAppLeakyType. See gst_app_sink_set_leaky_type()
for more details.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">The currently set #GstAppLeakyType.</doc>
<type name="AppLeakyType" c:type="GstAppLeakyType"/>
</return-value>
<parameters>
<instance-parameter name="appsink" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">a #GstAppSink</doc>
<type name="AppSink" c:type="GstAppSink*"/>
</instance-parameter>
</parameters>
</method>
<method name="get_max_buffers" c:identifier="gst_app_sink_get_max_buffers" glib:get-property="max-buffers">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Get the maximum amount of buffers that can be queued in @appsink.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.h"/>
@ -430,7 +502,7 @@ PLAYING state.</doc>
</instance-parameter>
</parameters>
</method>
<method name="pull_object" c:identifier="gst_app_sink_pull_object" version="1.20" introspectable="0">
<method name="pull_object" c:identifier="gst_app_sink_pull_object" version="1.20">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">This function blocks until a sample or an event becomes available or the appsink
element is set to the READY/NULL state.
@ -593,9 +665,10 @@ you must check the caps on the samples to get the actual used caps.</doc>
</parameter>
</parameters>
</method>
<method name="set_drop" c:identifier="gst_app_sink_set_drop" glib:set-property="drop">
<method name="set_drop" c:identifier="gst_app_sink_set_drop" glib:set-property="drop" deprecated="1" deprecated-version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Instruct @appsink to drop old buffers when the maximum amount of queued
data is reached, that is, when any configured limit is hit (max-buffers, max-time or max-bytes).</doc>
<doc-deprecated xml:space="preserve">Use gst_app_src_get_leaky_type() instead.</doc-deprecated>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.h"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
@ -630,6 +703,26 @@ the application prefers to operate in pull mode.</doc>
</parameter>
</parameters>
</method>
<method name="set_leaky_type" c:identifier="gst_app_sink_set_leaky_type" glib:set-property="leaky-type" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">When set to any other value than GST_APP_LEAKY_TYPE_NONE then the appsink
will drop any buffers that are pushed into it once its internal queue is
full. The selected type defines whether to drop the oldest or new
buffers.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.h"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="appsink" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">a #GstAppSink</doc>
<type name="AppSink" c:type="GstAppSink*"/>
</instance-parameter>
<parameter name="leaky" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">the #GstAppLeakyType</doc>
<type name="AppLeakyType" c:type="GstAppLeakyType"/>
</parameter>
</parameters>
</method>
<method name="set_max_buffers" c:identifier="gst_app_sink_set_max_buffers" glib:set-property="max-buffers">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Set the maximum amount of buffers that can be queued in @appsink. After this
amount of buffers are queued in appsink, any more buffers will block upstream
@ -707,7 +800,7 @@ case new buffers will be discarded.</doc>
</parameter>
</parameters>
</method>
<method name="try_pull_object" c:identifier="gst_app_sink_try_pull_object" version="1.20" introspectable="0">
<method name="try_pull_object" c:identifier="gst_app_sink_try_pull_object" version="1.20">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">This function blocks until a sample or an event or EOS becomes available or the appsink
element is set to the READY/NULL state or the timeout expires.
@ -817,15 +910,44 @@ condition.</doc>
<property name="caps" writable="1" transfer-ownership="none" setter="set_caps" getter="get_caps">
<type name="Gst.Caps"/>
</property>
<property name="drop" writable="1" transfer-ownership="none" setter="set_drop" getter="get_drop" default-value="FALSE">
<property name="current-level-buffers" version="1.28" transfer-ownership="none" getter="get_current_level_buffers" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">The number of currently queued buffers inside appsink.</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="current-level-bytes" version="1.28" transfer-ownership="none" getter="get_current_level_bytes" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">The number of currently queued bytes inside appsink.</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="current-level-time" version="1.28" transfer-ownership="none" getter="get_current_level_time" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">The amount of currently queued time inside appsink.</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="drop" deprecated="1" deprecated-version="1.28" writable="1" transfer-ownership="none" setter="set_drop" getter="get_drop" default-value="FALSE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Drop old buffers when the buffer queue is filled.</doc>
<doc-deprecated xml:space="preserve">Use "leaky-type" property instead.</doc-deprecated>
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="dropped" version="1.28" transfer-ownership="none" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Number of buffers that were dropped.</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="emit-signals" writable="1" transfer-ownership="none" setter="set_emit_signals" getter="get_emit_signals" default-value="FALSE">
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="eos" transfer-ownership="none" default-value="TRUE">
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="in" version="1.28" transfer-ownership="none" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Number of input buffers that were queued.</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="leaky-type" version="1.28" writable="1" transfer-ownership="none" setter="set_leaky_type" getter="get_leaky_type" default-value="GST_APP_LEAKY_TYPE_NONE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">When set to any other value than GST_APP_LEAKY_TYPE_NONE then the appsink
will drop any buffers that are pushed into it once its internal queue is
full. The selected type defines whether to drop the oldest or new
buffers.</doc>
<type name="AppLeakyType"/>
</property>
<property name="max-buffers" writable="1" transfer-ownership="none" setter="set_max_buffers" getter="get_max_buffers" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Maximum amount of buffers in the queue (0 = unlimited).</doc>
<type name="guint" c:type="guint"/>
@ -838,6 +960,14 @@ condition.</doc>
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Maximum total duration of data in the queue (0 = unlimited)</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="out" version="1.28" transfer-ownership="none" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Number of output buffers that were dequeued.</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="silent" version="1.28" writable="1" transfer-ownership="none" default-value="TRUE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Don't emit notify for input, output and dropped buffers.</doc>
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="wait-on-eos" version="1.8" writable="1" transfer-ownership="none" setter="set_wait_on_eos" getter="get_wait_on_eos" default-value="TRUE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsink.c">Wait for all buffers to be processed after receiving an EOS.
@ -967,7 +1097,7 @@ can pull samples at its own rate.
Note that when the application does not pull samples fast enough, the
queued samples could consume a lot of memory, especially when dealing with
raw video frames. It's possible to control the behaviour of the queue with
the "drop" and "max-buffers" / "max-bytes" / "max-time" set of properties.
the "leaky-type" and "max-buffers" / "max-bytes" / "max-time" set of properties.
If an EOS event was received before any buffers, this function returns
%NULL. Use gst_app_sink_is_eos () to check for the EOS condition.</doc>
@ -988,7 +1118,7 @@ Events can be pulled when the appsink is in the READY, PAUSED or PLAYING state.
Note that when the application does not pull samples fast enough, the
queued samples could consume a lot of memory, especially when dealing with
raw video frames. It's possible to control the behaviour of the queue with
the "drop" and "max-buffers" / "max-bytes" / "max-time" set of properties.
the "leaky-type" and "max-buffers" / "max-bytes" / "max-time" set of properties.
This function will only pull serialized events, excluding
the EOS event for which this functions returns
@ -1053,7 +1183,7 @@ can pull samples at its own rate.
Note that when the application does not pull samples fast enough, the
queued samples could consume a lot of memory, especially when dealing with
raw video frames. It's possible to control the behaviour of the queue with
the "drop" and "max-buffers" / "max-bytes" / "max-time" set of properties.
the "leaky-type" and "max-buffers" / "max-bytes" / "max-time" set of properties.
If an EOS event was received before any buffers or the timeout expires,
this function returns %NULL. Use gst_app_sink_is_eos () to check
@ -2076,6 +2206,10 @@ on outgoing buffers.</doc>
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsrc.c">The amount of currently queued time inside appsrc.</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="dropped" version="1.28" transfer-ownership="none" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsrc.c">Number of buffers that were dropped.</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="duration" version="1.10" writable="1" transfer-ownership="none" setter="set_duration" getter="get_duration" default-value="18446744073709551615">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsrc.c">The total duration in nanoseconds of the data stream. If the total duration is known, it
is recommended to configure it with this property.</doc>
@ -2103,6 +2237,10 @@ GstAppSrc::format should be time. However, possibly #GstAppSrc can support
other formats.</doc>
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="in" version="1.28" transfer-ownership="none" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsrc.c">Number of input buffers that were queued.</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="is-live" writable="1" transfer-ownership="none" default-value="FALSE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsrc.c">Instruct the source to behave like a live source. This includes that it
will only push out buffers in the PLAYING state.</doc>
@ -2146,6 +2284,14 @@ latency calculations of #GstBaseSrc.</doc>
queue drops below this percentage of max-bytes.</doc>
<type name="guint" c:type="guint"/>
</property>
<property name="out" version="1.28" transfer-ownership="none" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsrc.c">Number of output buffers that were dequeued.</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="silent" version="1.28" writable="1" transfer-ownership="none" default-value="TRUE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsrc.c">Don't emit notify for input, output and dropped buffers.</doc>
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="size" writable="1" transfer-ownership="none" setter="set_size" getter="get_size" default-value="-1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/app/gstappsrc.c">The total size in bytes of the data stream. If the total size is known, it
is recommended to configure it with this property.</doc>

View File

@ -2503,6 +2503,18 @@ usage.</doc>
</instance-parameter>
</parameters>
</method>
<property name="current-level-buffers" version="1.28" transfer-ownership="none" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gstreamer/libs/gst/base/gstaggregator.c">The number of currently queued buffers inside this pad</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="current-level-bytes" version="1.28" transfer-ownership="none" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gstreamer/libs/gst/base/gstaggregator.c">The number of currently queued bytes inside this pad</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="current-level-time" version="1.28" transfer-ownership="none" default-value="0">
<doc xml:space="preserve" filename="../subprojects/gstreamer/libs/gst/base/gstaggregator.c">The amount of currently queued time inside this pad</doc>
<type name="guint64" c:type="guint64"/>
</property>
<property name="emit-signals" version="1.16" writable="1" transfer-ownership="none" default-value="FALSE">
<doc xml:space="preserve" filename="../subprojects/gstreamer/libs/gst/base/gstaggregator.c">Enables the emission of signals such as #GstAggregatorPad::buffer-consumed</doc>
<type name="gboolean" c:type="gboolean"/>
@ -2604,6 +2616,9 @@ the first buffer that is received.</doc>
<doc xml:space="preserve" filename="../subprojects/gstreamer/libs/gst/base/gstaggregator.h">Start at the running time
selected by the `start-time` property.</doc>
</member>
<member name="now" value="3" c:identifier="GST_AGGREGATOR_START_TIME_SELECTION_NOW" version="1.28" glib:nick="now" glib:name="GST_AGGREGATOR_START_TIME_SELECTION_NOW">
<doc xml:space="preserve" filename="../subprojects/gstreamer/libs/gst/base/gstaggregator.h">Start at the current running time when reaching %GST_STATE_PLAYING.</doc>
</member>
</enumeration>
<function-macro name="BASE_DEPRECATED_FOR" c:identifier="GST_BASE_DEPRECATED_FOR" introspectable="0">
<source-position filename="../subprojects/gstreamer/libs/gst/base/base-prelude.h"/>
@ -3748,6 +3763,10 @@ into the frame data that the picture starts.</doc>
</parameter>
</parameters>
</method>
<property name="disable-clip" version="1.28" writable="1" transfer-ownership="none" default-value="TRUE">
<doc xml:space="preserve" filename="../subprojects/gstreamer/libs/gst/base/gstbaseparse.c">Disable dropping buffers that are out of segment</doc>
<type name="gboolean" c:type="gboolean"/>
</property>
<property name="disable-passthrough" writable="1" transfer-ownership="none" default-value="FALSE">
<doc xml:space="preserve" filename="../subprojects/gstreamer/libs/gst/base/gstbaseparse.c">If set to %TRUE, baseparse will unconditionally force parsing of the
incoming data. This can be required in the rare cases where the incoming

View File

@ -1243,6 +1243,19 @@ current in the calling thread.</doc>
</instance-parameter>
</parameters>
</virtual-method>
<method name="get_gl_context" c:identifier="gst_gl_base_src_get_gl_context" version="1.28">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasesrc.h"/>
<return-value transfer-ownership="full" nullable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasesrc.c">the configured #GstGLContext.</doc>
<type name="GLContext" c:type="GstGLContext*"/>
</return-value>
<parameters>
<instance-parameter name="base_src" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglbasesrc.c">a #GstGLBaseSrc</doc>
<type name="GLBaseSrc" c:type="GstGLBaseSrc*"/>
</instance-parameter>
</parameters>
</method>
<property name="timestamp-offset" writable="1" transfer-ownership="none" default-value="0">
<type name="gint64" c:type="gint64"/>
</property>
@ -3510,6 +3523,10 @@ extension.</doc>
<member name="include_emulated" value="4" c:identifier="GST_GL_DRM_FORMAT_INCLUDE_EMULATED" version="1.26" glib:nick="include-emulated" glib:name="GST_GL_DRM_FORMAT_INCLUDE_EMULATED">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglutils.h">include emulated formats</doc>
</member>
<member name="direct_import" value="8" c:identifier="GST_GL_DRM_FORMAT_DIRECT_IMPORT" version="1.28" glib:nick="direct-import" glib:name="GST_GL_DRM_FORMAT_DIRECT_IMPORT">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglutils.h">EGL is responsible for the colorspace conversion. In this case, all
supported modifiers get translated to RGBA.</doc>
</member>
</bitfield>
<class name="GLFilter" c:symbol-prefix="gl_filter" c:type="GstGLFilter" parent="GLBaseFilter" glib:type-name="GstGLFilter" glib:get-type="gst_gl_filter_get_type" glib:type-struct="GLFilterClass">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglfilter.c">#GstGLFilter helps to implement simple OpenGL filter elements taking a
@ -8608,6 +8625,19 @@ require this to be called with a valid handle before drawing can commence.</doc>
</instance-parameter>
</parameters>
</method>
<method name="get_request_output_surface" c:identifier="gst_gl_window_get_request_output_surface" version="1.28">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglwindow.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglwindow.c">whether an visible output surface has been requested</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="window" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglwindow.c">a #GstGLWindow</doc>
<type name="GLWindow" c:type="GstGLWindow*"/>
</instance-parameter>
</parameters>
</method>
<method name="get_surface_dimensions" c:identifier="gst_gl_window_get_surface_dimensions" version="1.6">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglwindow.h"/>
<return-value transfer-ownership="none">
@ -8957,6 +8987,23 @@ according to the #GstVideoOverlay interface.</doc>
</parameter>
</parameters>
</method>
<method name="set_request_output_surface" c:identifier="gst_gl_window_set_request_output_surface" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglwindow.c">Configure whether a visible output surface is requested.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglwindow.h"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<instance-parameter name="window" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglwindow.c">a #GstGLWindow</doc>
<type name="GLWindow" c:type="GstGLWindow*"/>
</instance-parameter>
<parameter name="output_surface" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglwindow.c">whether to request an output surface.</doc>
<type name="gboolean" c:type="gboolean"/>
</parameter>
</parameters>
</method>
<method name="set_resize_callback" c:identifier="gst_gl_window_set_resize_callback" version="1.4">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglwindow.c">Sets the resize callback called every time a resize of the window occurs.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglwindow.h"/>
@ -9812,11 +9859,11 @@ user-defined purposes.</doc>
</parameter>
</parameters>
</function-macro>
<constant name="GL_COLOR_CONVERT_EXT_FORMATS" value=", RGBA64_LE, BGR10A2_LE, RGB10A2_LE, P010_10LE, P012_LE, P016_LE, Y212_LE, Y412_LE, A444_16LE, A422_16LE, A420_16LE, A444_12LE, A422_12LE, A420_12LE, A420_10LE, A422_10LE, A444_10LE, I420_12LE, I420_10LE, I422_10LE, I422_12LE, Y444_16LE, Y444_10LE" c:type="GST_GL_COLOR_CONVERT_EXT_FORMATS" introspectable="0">
<constant name="GL_COLOR_CONVERT_EXT_FORMATS" value=", RGBA64_LE, BGR10A2_LE, RGB10A2_LE, BGR10x2_LE, RGB10x2_LE, P010_10LE, P012_LE, P016_LE, Y212_LE, Y412_LE, A444_16LE, A422_16LE, A420_16LE, A444_12LE, A422_12LE, A420_12LE, A420_10LE, A422_10LE, A444_10LE, I420_12LE, I420_10LE, I422_10LE, I422_12LE, Y444_16LE, Y444_10LE" c:type="GST_GL_COLOR_CONVERT_EXT_FORMATS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglcolorconvert.h"/>
<type name="utf8" c:type="gchar*"/>
</constant>
<constant name="GL_COLOR_CONVERT_FORMATS" value="{ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, GBRA, GBR, RGBP, BGRP, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, NV16, NV61, YUY2, UYVY, Y210, AYUV, VUYA, Y410, A444, A422, GRAY8, GRAY16_LE, GRAY16_BE, RGB16, BGR16, ARGB64, A420, AV12, NV12_16L32S, NV12_4L4, RBGA, v210" c:type="GST_GL_COLOR_CONVERT_FORMATS">
<constant name="GL_COLOR_CONVERT_FORMATS" value="{ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, GBRA, GBR, RGBP, BGRP, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, NV16, NV61, NV24, YUY2, UYVY, Y210, AYUV, VUYA, Y410, A444, A422, GRAY8, GRAY16_LE, GRAY16_BE, RGB16, BGR16, ARGB64, A420, AV12, NV12_16L32S, NV12_4L4, RBGA, v210" c:type="GST_GL_COLOR_CONVERT_FORMATS">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglcolorconvert.h">The currently supported formats that can be converted</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglcolorconvert.h"/>
<type name="utf8" c:type="gchar*"/>
@ -10059,11 +10106,11 @@ e.g. for `CONFIG_ID`: `GST_GL_CONFIG_ATTRIB_NAME (CONFIG_ID)`</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmemorypbo.h"/>
<type name="utf8" c:type="gchar*"/>
</constant>
<constant name="GL_MEMORY_VIDEO_EXT_FORMATS" value=", RGBA64_LE, BGR10A2_LE, RGB10A2_LE, P010_10LE, P012_LE, P016_LE, Y212_LE, Y412_LE, A444_16LE, A422_16LE, A420_16LE, A444_12LE, A422_12LE, A420_12LE, A420_10LE, A422_10LE, A444_10LE, I420_12LE, I420_10LE, I422_10LE, I422_12LE, Y444_10LE, Y444_16LE" c:type="GST_GL_MEMORY_VIDEO_EXT_FORMATS" introspectable="0">
<constant name="GL_MEMORY_VIDEO_EXT_FORMATS" value=", RGBA64_LE, BGR10A2_LE, RGB10A2_LE, BGR10x2_LE, RGB10x2_LE, P010_10LE, P012_LE, P016_LE, Y212_LE, Y412_LE, A444_16LE, A422_16LE, A420_16LE, A444_12LE, A422_12LE, A420_12LE, A420_10LE, A422_10LE, A444_10LE, I420_12LE, I420_10LE, I422_10LE, I422_12LE, Y444_10LE, Y444_16LE" c:type="GST_GL_MEMORY_VIDEO_EXT_FORMATS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmemory.h"/>
<type name="utf8" c:type="gchar*"/>
</constant>
<constant name="GL_MEMORY_VIDEO_FORMATS_STR" value="{ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, GBRA, GBR, RGBP, BGRP, RGB, BGR, RGB16, BGR16, AYUV, VUYA, A444, A422, Y410, I420, YV12, NV12, NV21, NV16, NV61, YUY2, UYVY, Y210, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE, ARGB64, A420, AV12, NV12_16L32S, NV12_4L4, RBGA, v210" c:type="GST_GL_MEMORY_VIDEO_FORMATS_STR">
<constant name="GL_MEMORY_VIDEO_FORMATS_STR" value="{ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, GBRA, GBR, RGBP, BGRP, RGB, BGR, RGB16, BGR16, AYUV, VUYA, A444, A422, Y410, I420, YV12, NV12, NV21, NV16, NV61, NV24, YUY2, UYVY, Y210, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE, ARGB64, A420, AV12, NV12_16L32S, NV12_4L4, RBGA, v210" c:type="GST_GL_MEMORY_VIDEO_FORMATS_STR">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmemory.h">List of video formats that are supported by #GstGLMemory</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/gl/gstglmemory.h"/>
<type name="utf8" c:type="gchar*"/>

View File

@ -682,7 +682,7 @@ the track buffers for playback purposes.
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/mse/gstsourcebuffer.c">#GstSourceBuffer instance</doc>
<type name="SourceBuffer" c:type="GstSourceBuffer*"/>
</instance-parameter>
<parameter name="buf" transfer-ownership="none">
<parameter name="buf" transfer-ownership="full">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/mse/gstsourcebuffer.c">The media data to append</doc>
<type name="Gst.Buffer" c:type="GstBuffer*"/>
</parameter>

View File

@ -186,6 +186,15 @@ clock.</doc>
</parameter>
</parameters>
</constructor>
<function name="deinit" c:identifier="gst_net_client_clock_deinit" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gstreamer/libs/gst/net/gstnetclientclock.c">Clears any cached #GstNetClientClock clocks.
All references should be released beforehand.
Mainly used for testing.</doc>
<source-position filename="../subprojects/gstreamer/libs/gst/net/gstnetclientclock.h"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
</function>
<property name="address" writable="1" construct="1" transfer-ownership="none" default-value="127.0.0.1">
<type name="utf8" c:type="gchar*"/>
</property>

View File

@ -807,7 +807,7 @@ the tags after the life-time of @info, you will need to copy them.</doc>
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/gstdiscoverer.c">Parses a #GVariant as produced by gst_discoverer_info_to_variant()
back to a #GstDiscovererInfo.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/gstdiscoverer.h"/>
<return-value transfer-ownership="full">
<return-value transfer-ownership="full" nullable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/gstdiscoverer.c">A newly-allocated #GstDiscovererInfo.</doc>
<type name="DiscovererInfo" c:type="GstDiscovererInfo*"/>
</return-value>
@ -2950,7 +2950,7 @@ in debugging.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/gstpluginsbaseversion.h"/>
<type name="gint" c:type="gint"/>
</constant>
<constant name="PLUGINS_BASE_VERSION_MICRO" value="0" c:type="GST_PLUGINS_BASE_VERSION_MICRO">
<constant name="PLUGINS_BASE_VERSION_MICRO" value="1" c:type="GST_PLUGINS_BASE_VERSION_MICRO">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/gstpluginsbaseversion.h">The micro version of GStreamer's gst-plugins-base libraries at compile time.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/pbutils/gstpluginsbaseversion.h"/>
<type name="gint" c:type="gint"/>

View File

@ -11269,6 +11269,10 @@ passed @tr.</doc>
</parameter>
</parameters>
</method>
<property name="timed-out" version="1.28" transfer-ownership="none" default-value="FALSE">
<doc xml:space="preserve" filename="../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream-transport.c">Whether this transport is timed out</doc>
<type name="gboolean" c:type="gboolean"/>
</property>
<field name="parent">
<doc xml:space="preserve" filename="../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-stream-transport.h">parent instance</doc>
<type name="GObject.Object" c:type="GObject"/>

View File

@ -2458,6 +2458,35 @@ stack and initialized with gst_sdp_media_init().</doc>
</instance-parameter>
</parameters>
</method>
<function name="add_media_from_structure" c:identifier="gst_sdp_media_add_media_from_structure" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c">Mapping of structure fields to SDP attributes:
a=rtpmap:(payload) (encoding_name) or (clock_rate)[or (encoding_params)]
a=framesize:(payload) (width)-(height)
a=fmtp:(payload) (param)[=(value)];...
a=rtcp-fb:(payload) (param1) [param2]...
a=extmap:(id)[/direction] (extensionname) (extensionattributes)</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c">a #GstSDPResult.</doc>
<type name="SDPResult" c:type="GstSDPResult"/>
</return-value>
<parameters>
<parameter name="structure" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c">a #GstStructure belonging to a #GstCaps SDP mapping, see also
`gst_sdp_media_get_caps_from_media()`</doc>
<type name="Gst.Structure" c:type="const GstStructure*"/>
</parameter>
<parameter name="media" direction="out" caller-allocates="1" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c">a #GstSDPMedia</doc>
<type name="SDPMedia" c:type="GstSDPMedia*"/>
</parameter>
</parameters>
</function>
<function name="init" c:identifier="gst_sdp_media_init">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c">Initialize @media so that its contents are as if it was freshly allocated
with gst_sdp_media_new(). This function is mostly used to initialize a media
@ -2502,7 +2531,9 @@ a=fmtp:(payload) (param)[=(value)];...
a=rtcp-fb:(payload) (param1) [param2]...
a=extmap:(id)[/direction] (extensionname) (extensionattributes)</doc>
a=extmap:(id)[/direction] (extensionname) (extensionattributes)
Only the first #GstStructure of the @caps is used.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c">a #GstSDPResult.</doc>
@ -4161,6 +4192,35 @@ messages.</doc>
</parameter>
</parameters>
</function>
<function name="sdp_media_add_media_from_structure" c:identifier="gst_sdp_media_add_media_from_structure" moved-to="SDPMedia.add_media_from_structure" version="1.28">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c">Mapping of structure fields to SDP attributes:
a=rtpmap:(payload) (encoding_name) or (clock_rate)[or (encoding_params)]
a=framesize:(payload) (width)-(height)
a=fmtp:(payload) (param)[=(value)];...
a=rtcp-fb:(payload) (param1) [param2]...
a=extmap:(id)[/direction] (extensionname) (extensionattributes)</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c">a #GstSDPResult.</doc>
<type name="SDPResult" c:type="GstSDPResult"/>
</return-value>
<parameters>
<parameter name="structure" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c">a #GstStructure belonging to a #GstCaps SDP mapping, see also
`gst_sdp_media_get_caps_from_media()`</doc>
<type name="Gst.Structure" c:type="const GstStructure*"/>
</parameter>
<parameter name="media" direction="out" caller-allocates="1" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c">a #GstSDPMedia</doc>
<type name="SDPMedia" c:type="GstSDPMedia*"/>
</parameter>
</parameters>
</function>
<function name="sdp_media_init" c:identifier="gst_sdp_media_init" moved-to="SDPMedia.init">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c">Initialize @media so that its contents are as if it was freshly allocated
with gst_sdp_media_new(). This function is mostly used to initialize a media
@ -4205,7 +4265,9 @@ a=fmtp:(payload) (param)[=(value)];...
a=rtcp-fb:(payload) (param1) [param2]...
a=extmap:(id)[/direction] (extensionname) (extensionattributes)</doc>
a=extmap:(id)[/direction] (extensionname) (extensionattributes)
Only the first #GstStructure of the @caps is used.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/sdp/gstsdpmessage.c">a #GstSDPResult.</doc>

View File

@ -439,9 +439,9 @@ See also #gst_transcoder_get_message_bus()</doc>
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/transcoder/gsttranscoder.c">A #GstMessage</doc>
<type name="Gst.Message" c:type="GstMessage*"/>
</parameter>
<parameter name="error" direction="out" caller-allocates="1" transfer-ownership="full" optional="1" allow-none="1">
<parameter name="error" direction="out" caller-allocates="0" transfer-ownership="full" optional="1" allow-none="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/transcoder/gsttranscoder.c">the resulting error</doc>
<type name="GLib.Error" c:type="GError*"/>
<type name="GLib.Error" c:type="GError**"/>
</parameter>
<parameter name="details" direction="out" caller-allocates="0" transfer-ownership="full">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/transcoder/gsttranscoder.c">(transfer full): A GstStructure containing extra details about the error</doc>
@ -494,9 +494,9 @@ See also #gst_transcoder_get_message_bus()</doc>
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/transcoder/gsttranscoder.c">A #GstMessage</doc>
<type name="Gst.Message" c:type="GstMessage*"/>
</parameter>
<parameter name="error" direction="out" caller-allocates="1" transfer-ownership="full" optional="1" allow-none="1">
<parameter name="error" direction="out" caller-allocates="0" transfer-ownership="full" optional="1" allow-none="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/transcoder/gsttranscoder.c">the resulting warning</doc>
<type name="GLib.Error" c:type="GError*"/>
<type name="GLib.Error" c:type="GError**"/>
</parameter>
<parameter name="details" direction="out" caller-allocates="0" transfer-ownership="full">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/transcoder/gsttranscoder.c">(transfer full): A GstStructure containing extra details about the warning</doc>
@ -680,9 +680,9 @@ stream.</doc>
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/transcoder/gsttranscoder.c">A #GstMessage</doc>
<type name="Gst.Message" c:type="GstMessage*"/>
</parameter>
<parameter name="error" direction="out" caller-allocates="1" transfer-ownership="full" optional="1" allow-none="1">
<parameter name="error" direction="out" caller-allocates="0" transfer-ownership="full" optional="1" allow-none="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/transcoder/gsttranscoder.c">the resulting error</doc>
<type name="GLib.Error" c:type="GError*"/>
<type name="GLib.Error" c:type="GError**"/>
</parameter>
<parameter name="details" direction="out" caller-allocates="0" transfer-ownership="full">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/transcoder/gsttranscoder.c">(transfer full): A GstStructure containing extra details about the error</doc>
@ -735,9 +735,9 @@ stream.</doc>
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/transcoder/gsttranscoder.c">A #GstMessage</doc>
<type name="Gst.Message" c:type="GstMessage*"/>
</parameter>
<parameter name="error" direction="out" caller-allocates="1" transfer-ownership="full" optional="1" allow-none="1">
<parameter name="error" direction="out" caller-allocates="0" transfer-ownership="full" optional="1" allow-none="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/transcoder/gsttranscoder.c">the resulting warning</doc>
<type name="GLib.Error" c:type="GError*"/>
<type name="GLib.Error" c:type="GError**"/>
</parameter>
<parameter name="details" direction="out" caller-allocates="0" transfer-ownership="full">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/transcoder/gsttranscoder.c">(transfer full): A GstStructure containing extra details about the warning</doc>

View File

@ -3068,7 +3068,7 @@ Formats are sorted by decreasing "quality", using these criteria by priority:
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h"/>
<type name="utf8" c:type="gchar*"/>
</constant>
<constant name="VIDEO_FORMATS_ALL_STR" value="A444_16BE, A444_16LE, AYUV64, ARGB64, Y416_BE, RGBA64_BE, ARGB64_BE, BGRA64_BE, ABGR64_BE, Y416_LE, RGBA64_LE, ARGB64_LE, BGRA64_LE, ABGR64_LE, A422_16BE, A422_16LE, A420_16BE, A420_16LE, A444_12BE, GBRA_12BE, A444_12LE, GBRA_12LE, Y412_BE, Y412_LE, A422_12BE, A422_12LE, A420_12BE, A420_12LE, A444_10BE, GBRA_10BE, A444_10LE, GBRA_10LE, A422_10BE, A422_10LE, A420_10BE, A420_10LE, Y410, BGR10A2_LE, RGB10A2_LE, A444, GBRA, AYUV, VUYA, RGBA, RBGA, ARGB, BGRA, ABGR, A422, A420, AV12, Y444_16BE, GBR_16BE, Y444_16LE, GBR_16LE, Y216_BE, v216, Y216_LE, P016_BE, P016_LE, Y444_12BE, GBR_12BE, Y444_12LE, GBR_12LE, I422_12BE, I422_12LE, Y212_BE, Y212_LE, I420_12BE, I420_12LE, P012_BE, P012_LE, Y444_10BE, GBR_10BE, Y444_10LE, GBR_10LE, r210, I422_10BE, I422_10LE, NV16_10LE32, Y210, UYVP, v210, I420_10BE, I420_10LE, P010_10BE, MT2110R, MT2110T, NV12_10BE_8L128, NV12_10LE40_4L4, P010_10LE, NV12_10LE40, NV12_10LE32, Y444, BGRP, GBR, RGBP, NV24, v308, IYU2, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, VYUY, I420, YV12, NV12, NV21, NV12_16L32S, NV12_32L32, NV12_4L4, NV12_64Z32, NV12_8L128, Y41B, IYU1, YUV9, YVU9, BGR16, RGB16, BGR15, RGB15, RGB8P, GRAY16_BE, GRAY16_LE, GRAY10_LE16, GRAY10_LE32, GRAY8" c:type="GST_VIDEO_FORMATS_ALL_STR" version="1.24">
<constant name="VIDEO_FORMATS_ALL_STR" value="A444_16BE, A444_16LE, AYUV64, ARGB64, Y416_BE, RGBA64_BE, ARGB64_BE, BGRA64_BE, ABGR64_BE, Y416_LE, RGBA64_LE, ARGB64_LE, BGRA64_LE, ABGR64_LE, A422_16BE, A422_16LE, A420_16BE, A420_16LE, A444_12BE, GBRA_12BE, A444_12LE, GBRA_12LE, Y412_BE, Y412_LE, A422_12BE, A422_12LE, A420_12BE, A420_12LE, A444_10BE, GBRA_10BE, A444_10LE, GBRA_10LE, A422_10BE, A422_10LE, A420_10BE, A420_10LE, Y410, BGR10A2_LE, RGB10A2_LE, A444, GBRA, AYUV, VUYA, RGBA, RBGA, ARGB, BGRA, ABGR, A422, A420, AV12, Y444_16BE, GBR_16BE, Y444_16LE, GBR_16LE, Y216_BE, v216, Y216_LE, P016_BE, P016_LE, Y444_12BE, GBR_12BE, Y444_12LE, GBR_12LE, I422_12BE, I422_12LE, Y212_BE, Y212_LE, I420_12BE, I420_12LE, P012_BE, P012_LE, Y444_10BE, GBR_10BE, Y444_10LE, GBR_10LE, r210, BGR10x2_LE, RGB10x2_LE, I422_10BE, I422_10LE, NV16_10LE40, NV16_10LE32, Y210, UYVP, v210, I420_10BE, I420_10LE, P010_10BE, MT2110R, MT2110T, NV12_10BE_8L128, NV12_10LE40_4L4, P010_10LE, NV12_10LE40, NV12_10LE32, Y444, BGRP, GBR, RGBP, NV24, v308, IYU2, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, VYUY, I420, YV12, NV12, NV21, NV12_16L32S, NV12_32L32, NV12_4L4, NV12_64Z32, NV12_8L128, Y41B, IYU1, YUV9, YVU9, BGR16, RGB16, BGR15, RGB15, RGB8P, GRAY16_BE, GRAY16_LE, GRAY10_LE16, GRAY10_LE32, GRAY8" c:type="GST_VIDEO_FORMATS_ALL_STR" version="1.24">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h">Declare all video formats as a string.
Formats are sorted by decreasing "quality", using these criteria by priority:
@ -3444,7 +3444,7 @@ Return the width of one tile in pixels, zero if its not an integer.</doc>
</parameter>
</parameters>
</function-macro>
<constant name="VIDEO_FORMAT_LAST" value="139" c:type="GST_VIDEO_FORMAT_LAST" version="1.26">
<constant name="VIDEO_FORMAT_LAST" value="142" c:type="GST_VIDEO_FORMAT_LAST" version="1.26">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h">Number of video formats in #GstVideoFormat.</doc>
<source-position filename="../subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h"/>
<type name="gint" c:type="gint"/>
@ -10742,6 +10742,15 @@ bits.</doc>
<member name="gray10_le16" value="138" c:identifier="GST_VIDEO_FORMAT_GRAY10_LE16" version="1.26" glib:nick="gray10-le16" glib:name="GST_VIDEO_FORMAT_GRAY10_LE16">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h">10-bit grayscale, packed into 16bit words (6 bits left padding)</doc>
</member>
<member name="nv16_10le40" value="139" c:identifier="GST_VIDEO_FORMAT_NV16_10LE40" version="1.28" glib:nick="nv16-10le40" glib:name="GST_VIDEO_FORMAT_NV16_10LE40">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h">Fully packed variant of NV16_10LE32</doc>
</member>
<member name="bgr10x2_le" value="140" c:identifier="GST_VIDEO_FORMAT_BGR10x2_LE" version="1.28" glib:nick="bgr10x2-le" glib:name="GST_VIDEO_FORMAT_BGR10x2_LE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h">packed 4:4:4 RGB (B-G-R-x), 10 bits for R/G/B channel and MSB 2 bits for padding.</doc>
</member>
<member name="rgb10x2_le" value="141" c:identifier="GST_VIDEO_FORMAT_RGB10x2_LE" version="1.28" glib:nick="rgb10x2-le" glib:name="GST_VIDEO_FORMAT_RGB10x2_LE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h">packed 4:4:4 RGB (R-G-B-x), 10 bits for R/G/B channel and MSB 2 bits for padding.</doc>
</member>
<function name="from_fourcc" c:identifier="gst_video_format_from_fourcc">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-base/gst-libs/gst/video/video-format.c">Converts a FOURCC value into the corresponding #GstVideoFormat.
If the FOURCC cannot be represented by #GstVideoFormat,

View File

@ -2647,6 +2647,7 @@ gst_vulkan_full_screen_quad_set_blend_factors().</doc>
</parameters>
</method>
<method name="fill_command_buffer" c:identifier="gst_vulkan_full_screen_quad_fill_command_buffer" version="1.18" throws="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkfullscreenquad.c">@cmd must be locked with gst_vulkan_command_buffer_lock().</doc>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkfullscreenquad.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkfullscreenquad.c">whether @cmd could be filled with the necessary commands</doc>
@ -6038,50 +6039,6 @@ signalled and freed.</doc>
</parameter>
</parameters>
</callback>
<record name="VulkanVideoCapabilities" c:type="GstVulkanVideoCapabilities" version="1.24">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<field name="caps" introspectable="0" readable="0" private="1">
<type c:type="VkVideoCapabilitiesKHR"/>
</field>
<union>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<record name="decoder" c:type="decoder">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<field name="caps" introspectable="0" readable="0" private="1">
<type c:type="VkVideoDecodeCapabilitiesKHR"/>
</field>
<union name="codec" c:type="codec">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<field name="h264" introspectable="0" readable="0" private="1">
<type c:type="VkVideoDecodeH264CapabilitiesKHR"/>
</field>
<field name="h265" introspectable="0" readable="0" private="1">
<type c:type="VkVideoDecodeH265CapabilitiesKHR"/>
</field>
</union>
</record>
<record name="encoder" c:type="encoder">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<field name="caps" introspectable="0" readable="0" private="1">
<type c:type="VkVideoEncodeCapabilitiesKHR"/>
</field>
<union name="codec" c:type="codec">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<field name="h264" introspectable="0" readable="0" private="1">
<type c:type="VkVideoEncodeH264CapabilitiesKHR"/>
</field>
<field name="h265" introspectable="0" readable="0" private="1">
<type c:type="VkVideoEncodeH265CapabilitiesKHR"/>
</field>
</union>
</record>
</union>
<field name="_reserved" readable="0" private="1">
<array zero-terminated="0" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</record>
<class name="VulkanVideoFilter" c:symbol-prefix="vulkan_video_filter" c:type="GstVulkanVideoFilter" version="1.18" parent="GstBase.BaseTransform" glib:type-name="GstVulkanVideoFilter" glib:get-type="gst_vulkan_video_filter_get_type" glib:type-struct="VulkanVideoFilterClass">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.h"/>
<method name="get_device" c:identifier="gst_vulkan_video_filter_get_device" version="1.26">
@ -6176,125 +6133,6 @@ signalled and freed.</doc>
</array>
</field>
</record>
<enumeration name="VulkanVideoOperation" version="1.24" glib:type-name="GstVulkanVideoOperation" glib:get-type="gst_vulkan_video_operation_get_type" c:type="GstVulkanVideoOperation">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h">The type of video operation.</doc>
<member name="decode" value="0" c:identifier="GST_VULKAN_VIDEO_OPERATION_DECODE" glib:nick="decode" glib:name="GST_VULKAN_VIDEO_OPERATION_DECODE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h">decode operation</doc>
</member>
<member name="encode" value="1" c:identifier="GST_VULKAN_VIDEO_OPERATION_ENCODE" glib:nick="encode" glib:name="GST_VULKAN_VIDEO_OPERATION_ENCODE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h">encode operation</doc>
</member>
<member name="unknown" value="2" c:identifier="GST_VULKAN_VIDEO_OPERATION_UNKNOWN" glib:nick="unknown" glib:name="GST_VULKAN_VIDEO_OPERATION_UNKNOWN">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h">unknown</doc>
</member>
</enumeration>
<record name="VulkanVideoProfile" c:type="GstVulkanVideoProfile" version="1.24">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<field name="profile" introspectable="0" readable="0" private="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h">the generic vulkan video profile</doc>
<type c:type="VkVideoProfileInfoKHR"/>
</field>
<union name="usage" c:type="usage">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<field name="decode" introspectable="0" writable="1">
<type c:type="VkVideoDecodeUsageInfoKHR"/>
</field>
<field name="encode" introspectable="0" writable="1">
<type c:type="VkVideoEncodeUsageInfoKHR"/>
</field>
</union>
<union name="codec" c:type="codec">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<field name="base" writable="1">
<type name="Vulkan.BaseInStructure" c:type="VkBaseInStructure"/>
</field>
<field name="h264dec" introspectable="0" writable="1">
<type c:type="VkVideoDecodeH264ProfileInfoKHR"/>
</field>
<field name="h265dec" introspectable="0" writable="1">
<type c:type="VkVideoDecodeH265ProfileInfoKHR"/>
</field>
<field name="h264enc" introspectable="0" writable="1">
<type c:type="VkVideoEncodeH264ProfileInfoKHR"/>
</field>
<field name="h265enc" introspectable="0" writable="1">
<type c:type="VkVideoEncodeH265ProfileInfoKHR"/>
</field>
</union>
<field name="_reserved" writable="1">
<array zero-terminated="0" fixed-size="4">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
<method name="is_equal" c:identifier="gst_vulkan_video_profile_is_equal">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">whether @a and @b contains the same information.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="a" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">a #GstVulkanVideoProfile</doc>
<type name="VulkanVideoProfile" c:type="const GstVulkanVideoProfile*"/>
</instance-parameter>
<parameter name="b" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">another #GstVulkanVideoProfile</doc>
<type name="VulkanVideoProfile" c:type="const GstVulkanVideoProfile*"/>
</parameter>
</parameters>
</method>
<method name="is_valid" c:identifier="gst_vulkan_video_profile_is_valid" version="1.24" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">%TRUE if @profile is correct and matches with @codec</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<instance-parameter name="profile" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">the output profile</doc>
<type name="VulkanVideoProfile" c:type="GstVulkanVideoProfile*"/>
</instance-parameter>
<parameter name="codec" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">VkVideoCodecOperationFlagBitsKHR described by @profile</doc>
<type name="guint" c:type="guint"/>
</parameter>
</parameters>
</method>
<method name="to_caps" c:identifier="gst_vulkan_video_profile_to_caps" version="1.24" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<return-value transfer-ownership="full">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">a #GstCaps from @profile</doc>
<type name="Gst.Caps" c:type="GstCaps*"/>
</return-value>
<parameters>
<instance-parameter name="profile" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">#GstVulkanVideoProfile to convert into a #GstCaps</doc>
<type name="VulkanVideoProfile" c:type="const GstVulkanVideoProfile*"/>
</instance-parameter>
</parameters>
</method>
<function name="from_caps" c:identifier="gst_vulkan_video_profile_from_caps" version="1.24" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">%TRUE if @caps was parsed correctly, otherwise %FALSE</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="profile" direction="out" caller-allocates="1" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">the output profile</doc>
<type name="VulkanVideoProfile" c:type="GstVulkanVideoProfile*"/>
</parameter>
<parameter name="caps" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">a #GstCaps to parse</doc>
<type name="Gst.Caps" c:type="GstCaps*"/>
</parameter>
<parameter name="video_operation" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">a supported video operation</doc>
<type name="VulkanVideoOperation" c:type="GstVulkanVideoOperation"/>
</parameter>
</parameters>
</function>
</record>
<class name="VulkanWindow" c:symbol-prefix="vulkan_window" c:type="GstVulkanWindow" version="1.18" parent="Gst.Object" abstract="1" glib:type-name="GstVulkanWindow" glib:get-type="gst_vulkan_window_get_type" glib:type-struct="VulkanWindowClass">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkwindow.h">#GstVulkanWindow is an opaque struct and should only be accessed through the
provided api.</doc>
@ -7916,27 +7754,6 @@ associated #GstVulkanFence is signalled</doc>
</parameter>
</parameters>
</function>
<function name="vulkan_video_profile_from_caps" c:identifier="gst_vulkan_video_profile_from_caps" moved-to="VulkanVideoProfile.from_caps" version="1.24" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.h"/>
<return-value transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">%TRUE if @caps was parsed correctly, otherwise %FALSE</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
<parameter name="profile" direction="out" caller-allocates="1" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">the output profile</doc>
<type name="VulkanVideoProfile" c:type="GstVulkanVideoProfile*"/>
</parameter>
<parameter name="caps" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">a #GstCaps to parse</doc>
<type name="Gst.Caps" c:type="GstCaps*"/>
</parameter>
<parameter name="video_operation" transfer-ownership="none">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideoutils.c">a supported video operation</doc>
<type name="VulkanVideoOperation" c:type="GstVulkanVideoOperation"/>
</parameter>
</parameters>
</function>
<function name="vulkan_window_error_quark" c:identifier="gst_vulkan_window_error_quark" moved-to="VulkanWindowError.quark" version="1.18">
<return-value transfer-ownership="none">
<type name="GLib.Quark" c:type="GQuark"/>

View File

@ -190,6 +190,97 @@ and/or use gtk-doc annotations. -->
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_ADDRESS" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_ADDRESS" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_FOUNDATION" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_FOUNDATION" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_PORT" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_PORT" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_PRIORITY" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_PRIORITY" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_PROTOCOL" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_PROTOCOL" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_RELATED_ADDRESS" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_RELATED_ADDRESS" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_RELATED_PORT" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_RELATED_PORT" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_RELAY_PROTOCOL" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_RELAY_PROTOCOL" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_STREAM_ID" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_STREAM_ID" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_TCP_TYPE" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_TCP_TYPE" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_TYPE" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_TYPE" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_URL" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_URL" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CANDIDATE_STATS_USERNAME_FRAGMENT" c:identifier="GST_WEBRTC_ICE_CANDIDATE_STATS_USERNAME_FRAGMENT" version="1.28" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
<parameter name="c">
</parameter>
</parameters>
</function-macro>
<function-macro name="WEBRTC_ICE_CLASS" c:identifier="GST_WEBRTC_ICE_CLASS" introspectable="0">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<parameters>
@ -346,6 +437,17 @@ for more information.</doc>
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/webrtc_fwd.h">max-bundle</doc>
</member>
</enumeration>
<enumeration name="WebRTCDTLSRole" version="1.28" glib:type-name="GstWebRTCDTLSRole" glib:get-type="gst_webrtc_dtls_role_get_type" c:type="GstWebRTCDTLSRole">
<member name="client" value="0" c:identifier="GST_WEBRTC_DTLS_ROLE_CLIENT" glib:nick="client" glib:name="GST_WEBRTC_DTLS_ROLE_CLIENT">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/webrtc_fwd.h">client</doc>
</member>
<member name="server" value="1" c:identifier="GST_WEBRTC_DTLS_ROLE_SERVER" glib:nick="server" glib:name="GST_WEBRTC_DTLS_ROLE_SERVER">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/webrtc_fwd.h">server</doc>
</member>
<member name="unknown" value="2" c:identifier="GST_WEBRTC_DTLS_ROLE_UNKNOWN" glib:nick="unknown" glib:name="GST_WEBRTC_DTLS_ROLE_UNKNOWN">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/webrtc_fwd.h">unknown</doc>
</member>
</enumeration>
<enumeration name="WebRTCDTLSSetup" glib:type-name="GstWebRTCDTLSSetup" glib:get-type="gst_webrtc_dtls_setup_get_type" c:type="GstWebRTCDTLSSetup">
<member name="none" value="0" c:identifier="GST_WEBRTC_DTLS_SETUP_NONE" glib:nick="none" glib:name="GST_WEBRTC_DTLS_SETUP_NONE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/webrtc_fwd.h">none</doc>
@ -416,8 +518,9 @@ for more information.</doc>
</instance-parameter>
</parameters>
</method>
<method name="send_data" c:identifier="gst_webrtc_data_channel_send_data">
<method name="send_data" c:identifier="gst_webrtc_data_channel_send_data" deprecated="1" deprecated-version="1.22">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/datachannel.c">Send @data as a data message over @channel.</doc>
<doc-deprecated xml:space="preserve">Use gst_webrtc_data_channel_send_data_full() instead</doc-deprecated>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/datachannel.h"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
@ -451,8 +554,9 @@ for more information.</doc>
</parameter>
</parameters>
</method>
<method name="send_string" c:identifier="gst_webrtc_data_channel_send_string">
<method name="send_string" c:identifier="gst_webrtc_data_channel_send_string" deprecated="1" deprecated-version="1.22">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/datachannel.c">Send @str as a string message over @channel.</doc>
<doc-deprecated xml:space="preserve">Use gst_webrtc_data_channel_send_string_full() instead</doc-deprecated>
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/datachannel.h"/>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
@ -573,7 +677,8 @@ for more information.</doc>
<type name="none" c:type="void"/>
</return-value>
</glib:signal>
<glib:signal name="send-data" when="last" action="1">
<glib:signal name="send-data" when="last" action="1" deprecated="1" deprecated-version="1.22">
<doc-deprecated xml:space="preserve">Use gst_webrtc_data_channel_send_data_full() instead</doc-deprecated>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
@ -584,7 +689,8 @@ for more information.</doc>
</parameter>
</parameters>
</glib:signal>
<glib:signal name="send-string" when="last" action="1">
<glib:signal name="send-string" when="last" action="1" deprecated="1" deprecated-version="1.22">
<doc-deprecated xml:space="preserve">Use gst_webrtc_data_channel_send_string_full() instead</doc-deprecated>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
@ -1485,34 +1591,66 @@ stops automatic ICE gathering.</doc>
<record name="WebRTCICECandidateStats" c:type="GstWebRTCICECandidateStats" version="1.22" glib:type-name="GstWebRTCICECandidateStats" glib:get-type="gst_webrtc_ice_candidate_stats_get_type" c:symbol-prefix="webrtc_ice_candidate_stats">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<field name="ipaddr" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h">A string containing the address of the candidate. This value may be
an IPv4 address, an IPv6 address, or a fully-qualified domain name</doc>
<type name="utf8" c:type="gchar*"/>
</field>
<field name="port" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h">The network port number used by the candidate</doc>
<type name="guint" c:type="guint"/>
</field>
<field name="stream_id" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h">A string that uniquely identifies the object that is being
monitored to produce this set of statistics</doc>
<type name="guint" c:type="guint"/>
</field>
<field name="type" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h">The candidate type</doc>
<type name="utf8" c:type="const gchar*"/>
</field>
<field name="proto" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h">A string specifying the protocol (tcp or udp) used to transmit data
on the @port</doc>
<type name="utf8" c:type="const gchar*"/>
</field>
<field name="relay_proto" writable="1">
<type name="utf8" c:type="const gchar*"/>
</field>
<field name="prio" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h">The candidate's priority, corresponding to RTCIceCandidate.priority</doc>
<type name="guint" c:type="guint"/>
</field>
<field name="url" writable="1">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h">For local candidates, the url property is the URL of the ICE server
from which the candidate was received</doc>
<type name="utf8" c:type="gchar*"/>
</field>
<field name="_gst_reserved" writable="1">
<array zero-terminated="0" fixed-size="20">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
<union name="ABI" c:type="ABI">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<record name="abi" c:type="abi">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<field name="foundation" writable="1">
<type name="utf8" c:type="gchar*"/>
</field>
<field name="related_address" writable="1">
<type name="utf8" c:type="gchar*"/>
</field>
<field name="related_port" writable="1">
<type name="guint" c:type="guint"/>
</field>
<field name="username_fragment" writable="1">
<type name="utf8" c:type="gchar*"/>
</field>
<field name="tcp_type" writable="1">
<type name="WebRTCICETcpCandidateType" c:type="GstWebRTCICETcpCandidateType"/>
</field>
</record>
<field name="_gst_reserved" readable="0" private="1">
<array zero-terminated="0" fixed-size="20">
<type name="gpointer" c:type="gpointer"/>
</array>
</field>
</union>
<method name="copy" c:identifier="gst_webrtc_ice_candidate_stats_copy" version="1.22">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/ice.h"/>
<return-value transfer-ownership="full">
@ -2161,6 +2299,25 @@ Get HTTP Proxy to be used when connecting to TURN server.</doc>
</callback>
</field>
</record>
<enumeration name="WebRTCICETcpCandidateType" version="1.28" glib:type-name="GstWebRTCICETcpCandidateType" glib:get-type="gst_webrtc_ice_tcp_candidate_type_get_type" c:type="GstWebRTCICETcpCandidateType">
<member name="active" value="0" c:identifier="GST_WEBRTC_ICE_TCP_CANDIDATE_TYPE_ACTIVE" glib:nick="active" glib:name="GST_WEBRTC_ICE_TCP_CANDIDATE_TYPE_ACTIVE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/webrtc_fwd.h">An "active" TCP candidate is one for which the transport
will attempt to open an outbound connection but will not
receive incoming connection requests.</doc>
</member>
<member name="passive" value="1" c:identifier="GST_WEBRTC_ICE_TCP_CANDIDATE_TYPE_PASSIVE" glib:nick="passive" glib:name="GST_WEBRTC_ICE_TCP_CANDIDATE_TYPE_PASSIVE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/webrtc_fwd.h">A "passive" TCP candidate is one for which the transport
will receive incoming connection attempts but not attempt
a connection.</doc>
</member>
<member name="so" value="2" c:identifier="GST_WEBRTC_ICE_TCP_CANDIDATE_TYPE_SO" glib:nick="so" glib:name="GST_WEBRTC_ICE_TCP_CANDIDATE_TYPE_SO">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/webrtc_fwd.h">An "so" candidate is one for which the transport will attempt
to open a connection simultaneously with its peer.</doc>
</member>
<member name="none" value="3" c:identifier="GST_WEBRTC_ICE_TCP_CANDIDATE_TYPE_NONE" glib:nick="none" glib:name="GST_WEBRTC_ICE_TCP_CANDIDATE_TYPE_NONE">
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/webrtc_fwd.h">Value used for non-TCP candidate type.</doc>
</member>
</enumeration>
<class name="WebRTCICETransport" c:symbol-prefix="webrtc_ice_transport" c:type="GstWebRTCICETransport" parent="Gst.Object" abstract="1" glib:type-name="GstWebRTCICETransport" glib:get-type="gst_webrtc_ice_transport_get_type" glib:type-struct="WebRTCICETransportClass">
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/webrtc/icetransport.h"/>
<virtual-method name="gather_candidates">

View File

@ -52,6 +52,7 @@ done
BASH_COMPLETION_PATHS = [SCRIPTDIR + '/subprojects/gstreamer/data/bash-completion/completions']
BASH_COMPLETION_PATHS += [SCRIPTDIR + '/subprojects/gst-devtools/validate/data/bash-completion/completions']
UPDATED_ENV = dict()
def str_to_bool(value: Any) -> bool:
"""Return whether the provided string (or any value really) represents true. Otherwise false.
@ -80,11 +81,18 @@ def stringify(o):
raise AssertionError('Object {!r} must be a string or a list'.format(o))
def prepend_env_var(env, var, value, sysroot):
def set_env_var(env, var, value, options):
if options.only_environment:
UPDATED_ENV[var] = value
env[var] = value
def prepend_env_var(env, var, value, options):
if var is None:
return
if value.startswith(sysroot):
value = value[len(sysroot):]
if value.startswith(options.sysroot):
value = value[len(options.sysroot):]
# Try not to exceed maximum length limits for env vars on Windows
if os.name == 'nt':
value = win32_get_short_path_name(value)
@ -93,8 +101,8 @@ def prepend_env_var(env, var, value, sysroot):
# Don't add the same value twice
if val in env_val or env_val.startswith(value + os.pathsep):
return
env[var] = val + env_val
env[var] = env[var].replace(os.pathsep + os.pathsep, os.pathsep).strip(os.pathsep)
set_env_var(env, var, val + env_val, options)
set_env_var(env, var, env[var].replace(os.pathsep + os.pathsep, os.pathsep).strip(os.pathsep), options)
def get_target_install_filename(target, filename):
@ -196,15 +204,15 @@ def get_wine_subprocess_env(options, env):
prefix, = [o for o in buildoptions if o['name'] == 'prefix']
path = os.path.normpath(os.path.join(prefix['value'], 'bin'))
prepend_env_var(env, "PATH", path, options.sysroot)
prepend_env_var(env, "PATH", path, options)
wine_path = get_wine_shortpath(
options.wine.split(' '),
[path] + env.get('WINEPATH', '').split(';')
)
if options.winepath:
wine_path += ';' + options.winepath
env['WINEPATH'] = wine_path
env['WINEDEBUG'] = 'fixme-all'
set_env_var(env, 'WINEPATH', wine_path, options)
set_env_var(env, 'WINEDEBUG', 'fixme-all', options)
return env
@ -259,43 +267,46 @@ def is_bash_completion_available(options):
def get_subprocess_env(options, gst_version):
env = os.environ.copy()
env["CURRENT_GST"] = os.path.normpath(SCRIPTDIR)
env["GST_VERSION"] = gst_version
set_env_var(env, "CURRENT_GST", os.path.normpath(SCRIPTDIR), options)
set_env_var(env, "GST_VERSION", gst_version, options)
prepend_env_var(env, "GST_VALIDATE_SCENARIOS_PATH", os.path.normpath(
"%s/subprojects/gst-devtools/validate/data/scenarios" % SCRIPTDIR),
options.sysroot)
env["GST_VALIDATE_PLUGIN_PATH"] = os.path.normpath(
"%s/subprojects/gst-devtools/validate/plugins" % options.builddir)
options)
set_env_var(env, "GST_VALIDATE_PLUGIN_PATH", os.path.normpath(
"%s/subprojects/gst-devtools/validate/plugins" % options.builddir),
options)
prepend_env_var(env, "GST_VALIDATE_APPS_DIR", os.path.normpath(
"%s/subprojects/gst-editing-services/tests/validate" % SCRIPTDIR),
options.sysroot)
env["GST_ENV"] = gst_version
env["GST_REGISTRY"] = os.path.normpath(options.builddir + "/registry.dat")
options)
set_env_var(env, "GST_ENV", gst_version, options)
set_env_var(env, "GST_REGISTRY", os.path.normpath(options.builddir + "/registry.dat"), options)
prepend_env_var(env, "PATH", os.path.normpath(
"%s/subprojects/gst-devtools/validate/tools" % options.builddir),
options.sysroot)
options)
prepend_env_var(env, "GST_VALIDATE_SCENARIOS_PATH", os.path.normpath(
"%s/subprojects/gst-examples/webrtc/check/validate/scenarios" %
SCRIPTDIR), options.sysroot)
SCRIPTDIR), options)
prepend_env_var(env, "GST_VALIDATE_APPS_DIR", os.path.normpath(
"%s/subprojects/gst-examples/webrtc/check/validate/apps" %
SCRIPTDIR), options.sysroot)
env["GST_VALIDATE_LAUNCHER_HTTP_SERVER_PATH"] = os.path.normpath(
SCRIPTDIR), options)
set_env_var(env, "GST_VALIDATE_LAUNCHER_HTTP_SERVER_PATH", os.path.normpath(
"%s/subprojects/gst-devtools/validate/launcher/RangeHTTPServer.py" %
SCRIPTDIR)
SCRIPTDIR), options)
if options.wine:
return get_wine_subprocess_env(options, env)
prepend_env_var(env, "PATH", os.path.join(SCRIPTDIR, 'meson'),
options.sysroot)
options)
env["GST_PLUGIN_SYSTEM_PATH"] = ""
env["GST_PLUGIN_SCANNER"] = os.path.normpath(
"%s/subprojects/gstreamer/libs/gst/helpers/gst-plugin-scanner" % options.builddir)
env["GST_PTP_HELPER"] = os.path.normpath(
"%s/subprojects/gstreamer/libs/gst/helpers/ptp/gst-ptp-helper" % options.builddir)
set_env_var(env, "GST_PLUGIN_SYSTEM_PATH", "", options)
set_env_var(env, "GST_PLUGIN_SCANNER", os.path.normpath(
"%s/subprojects/gstreamer/libs/gst/helpers/gst-plugin-scanner" % options.builddir),
options)
set_env_var(env, "GST_PTP_HELPER", os.path.normpath(
"%s/subprojects/gstreamer/libs/gst/helpers/ptp/gst-ptp-helper" % options.builddir),
options)
if os.name == 'nt':
lib_path_envvar = 'PATH'
@ -311,47 +322,47 @@ def get_subprocess_env(options, gst_version):
prepend_env_var(env, "GST_PLUGIN_PATH", os.path.join(SCRIPTDIR, 'subprojects',
'gst-python', 'plugin'),
options.sysroot)
options)
prepend_env_var(env, "GST_PLUGIN_PATH", os.path.join(PREFIX_DIR, 'lib',
'gstreamer-1.0'),
options.sysroot)
options)
prepend_env_var(env, "GST_PLUGIN_PATH", os.path.join(options.builddir, 'subprojects',
'libnice', 'gst'),
options.sysroot)
options)
prepend_env_var(env, "GST_VALIDATE_SCENARIOS_PATH",
os.path.join(PREFIX_DIR, 'share', 'gstreamer-1.0',
'validate', 'scenarios'),
options.sysroot)
options)
prepend_env_var(env, "GI_TYPELIB_PATH", os.path.join(PREFIX_DIR, 'lib',
'lib', 'girepository-1.0'),
options.sysroot)
options)
prepend_env_var(env, "PKG_CONFIG_PATH", os.path.join(PREFIX_DIR, 'lib', 'pkgconfig'),
options.sysroot)
options)
# tools: gst-launch-1.0, gst-inspect-1.0
prepend_env_var(env, "PATH", os.path.join(options.builddir, 'subprojects',
'gstreamer', 'tools'),
options.sysroot)
options)
# plugin scanner and generator
prepend_env_var(env, "PATH", os.path.join(options.builddir, 'subprojects',
'gstreamer', 'docs'),
options.sysroot)
options)
prepend_env_var(env, "PATH", os.path.join(options.builddir, 'subprojects',
'gst-plugins-base', 'tools'),
options.sysroot)
options)
# Library and binary search paths
prepend_env_var(env, "PATH", os.path.join(PREFIX_DIR, 'bin'),
options.sysroot)
options)
if lib_path_envvar != 'PATH':
prepend_env_var(env, lib_path_envvar, os.path.join(PREFIX_DIR, 'lib'),
options.sysroot)
options)
prepend_env_var(env, lib_path_envvar, os.path.join(PREFIX_DIR, 'lib64'),
options.sysroot)
options)
elif 'QMAKE' in os.environ:
# There's no RPATH on Windows, so we need to set PATH for the qt5 DLLs
prepend_env_var(env, 'PATH', os.path.dirname(os.environ['QMAKE']),
options.sysroot)
options)
meson = get_meson()
targets_s = subprocess.check_output(meson + ['introspect', options.builddir, '--targets'])
@ -385,17 +396,17 @@ def get_subprocess_env(options, gst_version):
if TYPELIB_REG.search(filename):
prepend_env_var(env, "GI_TYPELIB_PATH",
os.path.join(options.builddir, root),
options.sysroot)
options)
elif is_library_target_and_not_plugin(target, filename):
prepend_env_var(env, lib_path_envvar,
os.path.join(options.builddir, root),
options.sysroot)
options)
elif is_binary_target_and_in_path(target, filename, bindir):
paths.add(os.path.join(options.builddir, root))
elif is_gio_module(target, filename, options.builddir):
prepend_env_var(env, 'GIO_EXTRA_MODULES',
os.path.join(options.builddir, root),
options.sysroot)
options)
# Search for the Plugin paths file either in the build directory root
# or check if gstreamer is a subproject of another project
@ -405,16 +416,16 @@ def get_subprocess_env(options, gst_version):
with open(plugin_paths) as f:
for plugin_path in json.load(f):
prepend_env_var(env, 'GST_PLUGIN_PATH', plugin_path,
options.sysroot)
options)
break
# Sort to iterate in a consistent order (`set`s and `hash`es are randomized)
for p in sorted(paths):
prepend_env_var(env, 'PATH', p, options.sysroot)
prepend_env_var(env, 'PATH', p, options)
if os.name != 'nt':
for p in sorted(mono_paths):
prepend_env_var(env, "MONO_PATH", p, options.sysroot)
prepend_env_var(env, "MONO_PATH", p, options)
presets = set()
encoding_targets = set()
@ -456,48 +467,48 @@ def get_subprocess_env(options, gst_version):
os.path.abspath(os.path.join(os.path.dirname(path), '..')))
for p in sorted(presets):
prepend_env_var(env, 'GST_PRESET_PATH', p, options.sysroot)
prepend_env_var(env, 'GST_PRESET_PATH', p, options)
for t in sorted(encoding_targets):
prepend_env_var(env, 'GST_ENCODING_TARGET_PATH', t, options.sysroot)
prepend_env_var(env, 'GST_ENCODING_TARGET_PATH', t, options)
# Check if meson has generated -uninstalled pkgconfig files
meson_uninstalled = pathlib.Path(options.builddir) / 'meson-uninstalled'
if meson_uninstalled.is_dir():
prepend_env_var(env, 'PKG_CONFIG_PATH', str(meson_uninstalled), options.sysroot)
prepend_env_var(env, 'PKG_CONFIG_PATH', str(meson_uninstalled), options)
for python_dir in sorted(python_dirs):
prepend_env_var(env, 'PYTHONPATH', python_dir, options.sysroot)
prepend_env_var(env, 'PYTHONPATH', python_dir, options)
for python_dir in sorted(overrides_dirs):
prepend_env_var(env, '_GI_OVERRIDES_PATH', python_dir, options.sysroot)
prepend_env_var(env, '_GI_OVERRIDES_PATH', python_dir, options)
mesonpath = os.path.join(SCRIPTDIR, "meson")
if os.path.join(mesonpath):
# Add meson/ into PYTHONPATH if we are using a local meson
prepend_env_var(env, 'PYTHONPATH', mesonpath, options.sysroot)
prepend_env_var(env, 'PYTHONPATH', mesonpath, options)
# Ensure that gst-python/gi is used first
prepend_env_var(env, "PYTHONPATH", os.path.join(SCRIPTDIR, 'subprojects', 'gst-python'),
options.sysroot)
options)
# For devhelp books
if 'XDG_DATA_DIRS' not in env or not env['XDG_DATA_DIRS']:
# Preserve default paths when empty
prepend_env_var(env, 'XDG_DATA_DIRS', '/usr/local/share/:/usr/share/', '')
prepend_env_var(env, 'XDG_DATA_DIRS', '/usr/local/share/:/usr/share/', options)
prepend_env_var(env, 'XDG_DATA_DIRS', os.path.join(options.builddir,
'subprojects',
'gst-docs',
'GStreamer-doc'),
options.sysroot)
options)
if 'XDG_CONFIG_DIRS' not in env or not env['XDG_CONFIG_DIRS']:
# Preserve default paths when empty
prepend_env_var(env, 'XDG_CONFIG_DIRS', '/etc/local/xdg:/etc/xdg', '')
prepend_env_var(env, 'XDG_CONFIG_DIRS', '/etc/local/xdg:/etc/xdg', options)
prepend_env_var(env, "XDG_CONFIG_DIRS", os.path.join(PREFIX_DIR, 'etc', 'xdg'),
options.sysroot)
options)
return env
@ -509,6 +520,15 @@ def get_windows_shell():
return result.decode().strip()
def macos_sip_enabled():
if platform.system() != 'Darwin':
return False
ret = subprocess.run(["csrutil", "status"], text=True, capture_output=True)
if not ret.stdout:
return True
return 'enabled' in ret.stdout
if __name__ == "__main__":
parser = argparse.ArgumentParser(prog="gst-env")
@ -572,6 +592,7 @@ if __name__ == "__main__":
else:
new_args += ['/c', 'start', '/b', '/wait'] + args
args = new_args
prompt_export = None
if not args:
if os.name != 'nt':
args = [os.environ.get("SHELL", os.path.realpath("/bin/sh"))]
@ -601,7 +622,7 @@ if __name__ == "__main__":
# Ignore SIGINT while using fish as the shell to make it behave
# like other shells such as bash and zsh.
# See: https://gitlab.freedesktop.org/gstreamer/gst-build/issues/18
signal.signal(signal.SIGINT, lambda x, y: True)
signal.signal(signal.SIGINT, lambda _, __: True)
# Set the prompt
args.append('--init-command')
prompt_cmd = '''functions --copy fish_prompt original_fish_prompt
@ -620,10 +641,10 @@ if __name__ == "__main__":
shutil.copyfileobj(src, tmprc)
tmprc.write('\n' + prompt_export)
tmprc.flush()
env['ZDOTDIR'] = tmpdir.name
set_env_var(env, 'ZDOTDIR', tmpdir.name, options)
try:
if options.only_environment:
for name, value in env.items():
for name, value in UPDATED_ENV.items():
print('{}={}'.format(name, shlex.quote(value)))
print('export {}'.format(name))
if prompt_export:
@ -633,6 +654,9 @@ if __name__ == "__main__":
print("Ignoring SIGINT when running on the CI,"
" as we get spurious sigint in there for some reason.")
signal.signal(signal.SIGINT, signal.SIG_IGN)
if macos_sip_enabled():
print('macOS System Integrity Protection is enabled: DYLD_LIBRARY_PATH cannot be set in the subshell')
print('To fix that, use `./gst-env.py --only-environment > gst.env && source gst.env`')
exit(subprocess.call(args, close_fds=False, env=env))
except subprocess.CalledProcessError as e:

View File

@ -1,5 +1,5 @@
project('gstreamer-full', 'c',
version : '1.27.0.1',
version : '1.27.1.1',
meson_version : '>= 1.4',
default_options : ['buildtype=debugoptimized',
# Needed due to https://github.com/mesonbuild/meson/issues/1889,
@ -35,9 +35,16 @@ endif
gitlint_req = '>= 0.18'
gitlint = find_program('gitlint', version: gitlint_req, required: false)
if gitlint.found()
gitlint_status = run_command(gitlint, 'install-hook', check: false)
if gitlint_status.returncode() != 0
warning(gitlint_status.stderr().strip())
git = find_program('git', required: false)
if git.found() and fs.is_dir(meson.current_source_dir() / '.git')
gitlint_status = run_command(git, 'hook', 'run', 'commit-msg', check: false)
# exit code 253 means "wrong invocation" in Gitlint
if gitlint_status.returncode() != 253
gitlint_status = run_command(gitlint, 'install-hook', check: false)
if gitlint_status.returncode() != 0
warning(gitlint_status.stderr().strip())
endif
endif
endif
else
warning('gitlint not found or too old, please install it with your package manager or `python3 -m pip install gitlint` to enable the commit message hook')
@ -138,7 +145,6 @@ subprojects = [
['gst-devtools', { 'option': get_option('devtools'), 'build-hotdoc': true}],
['gst-integration-testsuites', { 'option': get_option('devtools') }],
['gst-editing-services', { 'option': get_option('ges'), 'build-hotdoc': true}],
['gstreamer-vaapi', { 'option': get_option('vaapi'), 'build-hotdoc': true}],
['gstreamer-sharp', { 'option': get_option('sharp') }],
['pygobject', { 'option': get_option('python'), 'match_gst_version': false, 'sysdep': 'pygobject-3.0', 'sysdep_version': '>= 3.8' }],
['gst-python', { 'option': gst_python_option}],
@ -166,7 +172,7 @@ endif
orc_option = get_option('orc')
# There is a check below to keep this in sync with subprojects/gst-plugins-base/meson.build
orc_req = '>= 0.4.24'
orc_req = '>= 0.4.34'
orc_source_option = get_option('orc-source')
orc_subproject = disabler()
if orc_option.allowed()
@ -413,12 +419,12 @@ if building_full
init_static_plugins_c = configure_file(
output: 'gstinitstaticplugins.c',
command : [generate_init_static_plugins,
'-o ' + '@OUTPUT@',
'-p ' + all_plugin_names,
'-e ' + get_option('gst-full-elements'),
'-t ' + get_option('gst-full-typefind-functions'),
'-d ' + get_option('gst-full-device-providers'),
'-T ' + get_option('gst-full-dynamic-types'),
'-o', '@OUTPUT@',
'-p', all_plugin_names,
'-e', get_option('gst-full-elements'),
'-t', get_option('gst-full-typefind-functions'),
'-d', get_option('gst-full-device-providers'),
'-T', get_option('gst-full-dynamic-types'),
'--giomodules', ';'.join(giomodules),
]
)

View File

@ -8,7 +8,6 @@ option('devtools', type : 'feature', value : 'auto')
option('ges', type : 'feature', value : 'auto')
option('rtsp_server', type : 'feature', value : 'auto')
option('rs', type : 'feature', value : 'disabled')
option('vaapi', type : 'feature', value : 'disabled')
option('gst-examples', type : 'feature', value : 'auto', description : 'Build gst-examples subproject')
# Bindings
option('python', type : 'feature', value : 'auto')
@ -61,6 +60,8 @@ option('extra-checks', type : 'feature', value : 'enabled', description : 'Enabl
option('benchmarks', type : 'feature', value : 'auto')
option('tools', type : 'feature', value : 'auto', yield : true, description : 'Build command line tools')
option('orc', type : 'feature', value : 'auto', description : 'Optimized Inner Loop Runtime Compiler (SIMD)')
option('qt-method', type: 'combo', value: 'auto', choices: ['auto', 'pkg-config', 'qmake'],
description: 'Method to use to find Qt')
option('qt5', type : 'feature', value : 'auto', description : 'Qt5 toolkit support')
option('qt6', type : 'feature', value : 'auto', description : 'Qt6 toolkit support')
option('webrtc', type : 'feature', value : 'auto', description : 'WebRTC support')

View File

@ -18,6 +18,7 @@ if os.name == 'nt':
_GetShortPathNameW.argtypes = [wintypes.LPCWSTR, wintypes.LPWSTR, wintypes.DWORD]
_GetShortPathNameW.restype = wintypes.DWORD
def win32_get_short_path_name(long_name):
"""
Gets the short path name of a given long path.
@ -44,8 +45,7 @@ def get_wine_shortpath(winecmd, wine_paths):
try:
with open(os.devnull, 'w') as stderr:
wine_path = subprocess.check_output(
winecmd +
['cmd', '/C', getShortPathScript] + wine_paths,
winecmd + ['cmd', '/C', getShortPathScript] + wine_paths,
stderr=stderr).decode('utf-8')
except subprocess.CalledProcessError as e:
print("Could not get short paths: %s" % e)
@ -54,8 +54,8 @@ def get_wine_shortpath(winecmd, wine_paths):
os.remove(getShortPathScript)
if len(wine_path) > 2048:
raise AssertionError('WINEPATH size {} > 2048'
' this will cause random failure.'.format(
len(wine_path)))
' this will cause random failure.'.format(
len(wine_path)))
return wine_path
@ -112,7 +112,6 @@ class Colors:
cls.ENDC = '\033[0m'
def git(*args, repository_path='.', fatal=True):
try:
ret = subprocess.check_output(["git"] + list(args), cwd=repository_path,
@ -122,9 +121,10 @@ def git(*args, repository_path='.', fatal=True):
if fatal:
raise e
print("Non-fatal error running git {}:\n{}".format(' '.join(args), e))
return None
return ''
return ret
def accept_command(commands):
"""Search @commands and returns the first found absolute path."""
for command in commands:
@ -133,16 +133,17 @@ def accept_command(commands):
return command
return None
def get_meson():
meson = os.path.join(ROOTDIR, 'meson', 'meson.py')
if os.path.exists(meson):
return [sys.executable, meson]
mesonintrospect = os.environ.get('MESONINTROSPECT', '')
for comp in shlex.split (mesonintrospect):
for comp in shlex.split(mesonintrospect):
# mesonintrospect might look like "/usr/bin/python /somewhere/meson introspect",
# let's not get tricked
if 'python' in os.path.basename (comp):
if 'python' in os.path.basename(comp):
continue
if os.path.exists(comp):
if comp.endswith('.py'):

View File

@ -2,4 +2,5 @@
set -e
rustfmt --version
find -name "*.rs" -exec rustfmt "$@" --edition 2021 {} +

View File

@ -28,7 +28,6 @@ changelog_starts = {
'gst-rtsp-server': '5029c85a46a8c366c4bf272d503e22bbcd624ece',
'gst-editing-services': 'ee8bf88ebf131cf7c7161356540efc20bf411e14',
'gst-python': 'b3e564eff577e2f577d795051bbcca85d47c89dc',
'gstreamer-vaapi': 'c89e9afc5d43837c498a55f8f13ddf235442b83b',
'gst-devtools': 'da962d096af9460502843e41b7d25fdece7ff1c2',
'gstreamer-sharp': 'b94528f8e7979df49fedf137dfa228d8fe475e1b',
}

View File

@ -48,14 +48,6 @@ gst_init_static_plugins (void)
''')
# Retrieve the plugin name as it can be a plugin filename
def get_plugin_name(name):
for p in plugins:
if name in p:
return p
return ''
def process_features(features_list, plugins, feature_prefix):
plugins_list = plugins
feature_declaration = []
@ -66,8 +58,13 @@ def process_features(features_list, plugins, feature_prefix):
split = plugin.split(':')
plugin_name = split[0].strip()
if len(split) == 2:
if (get_plugin_name(plugin_name)) != '':
plugins_list.remove(get_plugin_name(plugin_name))
if plugin_name in plugins_list:
plugins_list.remove(plugin_name)
else:
# The plugin name can be a filename
fname = f'libgst{plugin_name}.a'
if fname in plugins_list:
plugins_list.remove(fname)
features = split[1].split(',')
for feature in features:
feature = feature.replace("-", "_")

View File

@ -125,6 +125,11 @@ def build_cache(builddir, subproject, targets, subdir):
os.path.join(builddir, f'subprojects/{subproject}/docs/gst_plugins_cache.json'),
] + targets
env = os.environ.copy()
try:
del env['GST_PLUGIN_FEATURE_RANK'] # Ensure default ranks are applied
except KeyError:
pass
subprocess.run(cmd)
class StashManager:
@ -190,6 +195,64 @@ def run_doc_checks(modified_files):
for conf_path in confs_need_rebuild:
subprocess.run(['hotdoc', 'run', '--fatal-warnings', '--disable-warnings', '--enabled-warnings', 'missing-since-marker', '--conf-file', conf_path, '--previous-symbol-index', 'subprojects/gst-docs/symbols/symbol_index.json'], check=True)
def check_ges_children_props_docs(modified_files):
"""Check if GES children properties documentation is up to date"""
# Check if any GES source files were modified
ges_source_modified = any(
('subprojects/gst-editing-services/ges/' in f and (f.endswith('.c') or f.endswith('.h')) or f.endswith('document-children-props.py'))
for f in modified_files
)
if not ges_source_modified:
return
print('GES source files modified, checking children properties documentation...')
# Path to the script relative to git root
srcdir = Path(os.getcwd())
script_path = srcdir / 'subprojects/gst-editing-services/docs/libs/document-children-props.py'
if not script_path.exists():
print('WARNING: document-children-props.py script not found, skipping check')
return
# Run the script in gst-env (needs build environment)
builddir = find_builddir()
if builddir is None:
print('WARNING: No build directory found, cannot run document-children-props.py')
return
try:
# Generate environment file to be sourced
with tempfile.NamedTemporaryFile(mode='w', suffix='.sh', delete=False) as env_file:
env_temp_name = env_file.name
cmd = f'./gst-env.py --builddir {builddir} --only-environment > {env_temp_name} && source {env_temp_name} && cd {script_path.parent} && python3 document-children-props.py && rm {env_temp_name}'
subprocess.run(cmd, shell=True, check=True)
# Check if there are any diffs in the children-props markdown files
script_dir = script_path.parent
docs_files = list(script_dir.glob('*-children-props.md'))
if docs_files:
# Convert paths to be relative to git root for git diff
relative_docs_files = [str(f.relative_to(srcdir)) for f in docs_files]
try:
subprocess.run(['git', 'diff', '--ignore-submodules', '--exit-code'] + relative_docs_files, check=True)
print('GES children properties documentation is up to date')
except subprocess.CalledProcessError:
print('WARNING: You have changes in GES children properties documentation')
# Automatically stage the updated documentation files
subprocess.run(['git', 'add'] + relative_docs_files, check=True)
print('Updated documentation files have been automatically staged.')
print('Please verify the changes and proceed with your commit.')
else:
print('No GES children properties documentation files found')
except subprocess.CalledProcessError as e:
print(f'WARNING: Failed to run document-children-props.py: {e}')
print('Please check the script manually if you modified GES properties')
except Exception as e:
print(f'WARNING: Error checking GES children properties documentation: {e}')
def main():
modified_files = system('git', 'diff-index', '--cached',
'--name-only', 'HEAD', '--diff-filter=ACMR').split("\n")[:-1]
@ -198,6 +261,7 @@ def main():
with StashManager():
try:
run_doc_checks(modified_files)
check_ges_children_props_docs(modified_files)
except Exception as e:
print (e)
sys.exit(1)

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3
from itertools import filterfalse
import os
@ -6,6 +6,7 @@ import re
import subprocess
from gst_indent_common import indent
def readfile(f):
if os.path.exists(f):
expressions = open(f, 'r', encoding='utf-8').read().splitlines()

View File

@ -1,8 +1,8 @@
#!/usr/bin/env python
#!/usr/bin/env python3
from sys import argv
from gst_indent_common import indent
if __name__ == '__main__':
indent(argv[1:])
indent(*argv[1:])

View File

@ -12,7 +12,6 @@ release_modules = [
'gst-editing-services',
'gst-devtools',
'gst-python',
'gstreamer-vaapi',
'gst-docs',
'gstreamer-sharp',
]
@ -43,7 +42,7 @@ if out_of_sync_list.length() > 0
Run
for m in @1@; do cp scripts/gen-changelog.py subprojects/$m/scripts/gen-changelog.py; done
for m in @1@; do cp scripts/gen-changelog.py subprojects/$m/scripts/gen-changelog.py; done
from the top-level git source directory to sync them up.

View File

@ -0,0 +1,46 @@
# Security Advisory 2025-0001 (ZDI-CAN-26596, CVE-2025-3887)
<div class="vertical-table">
| | |
| ----------------- | ----------------------------------------- |
| Summary | Stack buffer-overflow in H.265 codec parser during slice header parsing |
| Date | 2025-04-24 18:00 |
| Affected Versions | GStreamer gst-plugins-bad 1.x < 1.26.1 |
| IDs | GStreamer-SA-2025-0001<br/>ZDI-CAN-26596<br/>CVE-2025-3887 |
</div>
## Details
Stack buffer-overflow in H.265 codec parser when handling malformed streams
before GStreamer 1.26.1.
## Impact
It is possible for a malicious third party to trigger stack buffer-overflows that
can result in a crash of the application.
## Solution
The gst-plugins-bad 1.26.1 release addresses the issue. People using older
branches of GStreamer should apply the patch and recompile.
## References
### The GStreamer project
- [https://gstreamer.freedesktop.org](https://gstreamer.freedesktop.org)
### CVE Database Entries
- [CVE-2025-3887](https://www.cve.org/CVERecord?id=CVE-2025-3887)
### GStreamer 1.26.1 release
- [Release Notes](/releases/1.26/#1.26.1)
- [GStreamer Plugins Bad 1.26.1](/src/gst-plugins-bad/gst-plugins-bad-1.26.1.tar.xz)
### Patches
- [Patch](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8884.patch)

View File

@ -0,0 +1,48 @@
# Security Advisory 2025-0002 (CVE-2025-47807)
<div class="vertical-table">
| | |
| ----------------- | --- |
| Summary | NULL-pointer dereference in SubRip subtitle parser|
| Date | 2025-05-29 23:30 |
| Affected Versions | GStreamer gst-plugins-base < 1.26.2 |
| IDs | GStreamer-SA-2025-0002<br/>CVE-2025-47807 |
</div>
## Details
A NULL-pointer dereference in the SubRip subtitle parser that can cause crashes
for certain input files.
## Impact
It is possible for a malicious third party to trigger a NULL-pointer dereference
that can result in a crash of the application.
## Solution
The gst-plugins-base 1.26.2 release addresses the issue. People using older
branches of GStreamer should apply the patch and recompile.
## References
### The GStreamer project
- [https://gstreamer.freedesktop.org](https://gstreamer.freedesktop.org)
### CVE Database Entries
- [CVE-2025-47807](https://www.cve.org/CVERecord?id=CVE-2025-47807)
### GStreamer releases
#### 1.26 (current stable)
- [GStreamer 1.26.2 release notes](/releases/1.26/#1.26.2)
- [GStreamer Plugins Base 1.26.2](/src/gst-plugins-base/gst-plugins-base-1.26.2.tar.xz)
### Patches
- [Patch](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9132.patch) (3-in-1)

View File

@ -0,0 +1,48 @@
# Security Advisory 2025-0003 (CVE-2025-47808)
<div class="vertical-table">
| | |
| ----------------- | --- |
| Summary | NULL-pointer dereference in TMPlayer subtitle parser|
| Date | 2025-05-29 23:30 |
| Affected Versions | GStreamer gst-plugins-base < 1.26.2 |
| IDs | GStreamer-SA-2025-0003<br/>CVE-2025-47808 |
</div>
## Details
A NULL-pointer dereference in the TMPlayer subtitle parser that can cause crashes
for certain input files.
## Impact
It is possible for a malicious third party to trigger a NULL-pointer dereference
that can result in a crash of the application.
## Solution
The gst-plugins-base 1.26.2 release addresses the issue. People using older
branches of GStreamer should apply the patch and recompile.
## References
### The GStreamer project
- [https://gstreamer.freedesktop.org](https://gstreamer.freedesktop.org)
### CVE Database Entries
- [CVE-2025-47808](https://www.cve.org/CVERecord?id=CVE-2025-47808)
### GStreamer releases
#### 1.26 (current stable)
- [GStreamer 1.26.2 release notes](/releases/1.26/#1.26.2)
- [GStreamer Plugins Base 1.26.2](/src/gst-plugins-base/gst-plugins-base-1.26.2.tar.xz)
### Patches
- [Patch](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9132.patch) (3-in-1)

View File

@ -0,0 +1,56 @@
# Security Advisory 2025-0004 (CVE-2025-47219)
<div class="vertical-table">
| | |
| ----------------- | --- |
| Summary | Out-of-bounds read in MOV/MP4 demuxer|
| Date | 2025-05-29 23:30 |
| Affected Versions | GStreamer gst-plugins-good < 1.26.2 |
| IDs | GStreamer-SA-2025-0004<br/>CVE-2025-47219 |
</div>
## Details
An Out-of-bounds read in the MOV/MP4 demuxer that can cause crashes or
potentially information leaks for certain input files.
## Impact
It is possible for a malicious third party to trigger an Out-of-bounds read
that can result in a crash of the application or potentially information leaks.
## Solution
The gst-plugins-good 1.26.2 release addresses the issue.
People using older versions of GStreamer should either upgrade or apply the
minimal patch and recompile.
Note that the minimal patch is not included in the 1.26.2 release in that form
since this issue was solved independently [in a different way][MR-8929] as part
of a bigger refactoring that solved this and many other issues.
[MR-8929]: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8929
## References
### The GStreamer project
- [https://gstreamer.freedesktop.org](https://gstreamer.freedesktop.org)
### CVE Database Entries
- [CVE-2025-47219](https://www.cve.org/CVERecord?id=CVE-2025-47219)
### GStreamer releases
#### 1.26 (current stable)
- [GStreamer 1.26.2 release notes](/releases/1.26/#1.26.2)
- [GStreamer Plugins Good 1.26.2](/src/gst-plugins-good/gst-plugins-good-1.26.2.tar.xz)
### Patches
- [Patch for 1.26.1 and earlier versions](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9137.patch)

View File

@ -0,0 +1,49 @@
# Security Advisory 2025-0005 (CVE-2025-47183)
<div class="vertical-table">
| | |
| ----------------- | --- |
| Summary | Out-of-bounds read in MOV/MP4 demuxer|
| Date | 2025-05-29 23:30 |
| Affected Versions | GStreamer gst-plugins-good < 1.26.2 |
| IDs | GStreamer-SA-2025-0005<br/>CVE-2025-47183 |
</div>
## Details
An Out-of-bounds read in the MOV/MP4 demuxer that can cause crashes or
potentially information leaks for certain input files.
## Impact
It is possible for a malicious third party to trigger an Out-of-bounds read
that can result in a crash of the application or potentially information leaks.
## Solution
The gst-plugins-good 1.26.2 release addresses the issue. People using older
branches of GStreamer should apply the patch and recompile.
## References
### The GStreamer project
- [https://gstreamer.freedesktop.org](https://gstreamer.freedesktop.org)
### CVE Database Entries
- [CVE-2025-47183](https://www.cve.org/CVERecord?id=CVE-2025-47183)
### GStreamer releases
#### 1.26 (current stable)
- [GStreamer 1.26.2 release notes](/releases/1.26/#1.26.2)
- [GStreamer Plugins Good 1.26.2](/src/gst-plugins-good/gst-plugins-good-1.26.2.tar.xz)
### Patches
- [Patch](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9131.patch)

View File

@ -0,0 +1,48 @@
# Security Advisory 2025-0006 (CVE-2025-47806)
<div class="vertical-table">
| | |
| ----------------- | --- |
| Summary | Stack buffer overflow in SubRip subtitle parser|
| Date | 2025-05-29 23:30 |
| Affected Versions | GStreamer gst-plugins-base < 1.26.2 |
| IDs | GStreamer-SA-2025-0006<br/>CVE-2025-47806 |
</div>
## Details
A stack buffer overflow in the SubRip subtitle parser that can cause crashes for
certain input files.
## Impact
It is possible for a malicious third party to trigger a stack buffer overflow
that can result in a crash of the application.
## Solution
The gst-plugins-base 1.26.2 release addresses the issue. People using older
branches of GStreamer should apply the patch and recompile.
## References
### The GStreamer project
- [https://gstreamer.freedesktop.org](https://gstreamer.freedesktop.org)
### CVE Database Entries
- [CVE-2025-47806](https://www.cve.org/CVERecord?id=CVE-2025-47806)
### GStreamer releases
#### 1.26 (current stable)
- [GStreamer 1.26.2 release notes](/releases/1.26/#1.26.2)
- [GStreamer Plugins Base 1.26.2](/src/gst-plugins-base/gst-plugins-base-1.26.2.tar.xz)
### Patches
- [Patch](https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9132.patch) (3-in-1)

View File

@ -1,9 +1,10 @@
[wrap-file]
directory = fontconfig-2.14.2
source_url = https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.14.2.tar.xz
source_filename = fontconfig-2.14.2.tar.xz
source_hash = dba695b57bce15023d2ceedef82062c2b925e51f5d4cc4aef736cf13f60a468b
diff_files = fontconfig-2.14.2/0001-meson-Always-use-posix-path-even-on-Windows.patch, fontconfig-2.14.2/0001-meson-Always-write-utf-8-files-with-LF-newlines.patch
directory = fontconfig-2.15.0
source_url = https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.15.0.tar.xz
source_fallback_url = https://deb.debian.org/debian/pool/main/f/fontconfig/fontconfig_2.15.0.orig.tar.xz
source_filename = fontconfig-2.15.0.tar.xz
source_hash = 63a0658d0e06e0fa886106452b58ef04f21f58202ea02a94c39de0d3335d7c0e
diff_files = fontconfig-2.15.0/0001-meson-Always-use-posix-path-even-on-Windows.patch
[provide]
fontconfig = fontconfig_dep

View File

@ -1,5 +1,5 @@
[wrap-git]
directory=gl-headers
url=https://gitlab.freedesktop.org/gstreamer/meson-ports/gl-headers.git
push-url=git@gitlab.freedesktop.org:gstreamer/meson-ports/gl-headers.git
revision=5c8c7c0d3ca1f0b783272dac0b95e09414e49bc8
directory = gl-headers
url = https://gitlab.freedesktop.org/gstreamer/meson-ports/gl-headers.git
push-url = git@gitlab.freedesktop.org:gstreamer/meson-ports/gl-headers.git
revision = 1d237e348de930f9f561620d2e6a31d94019525f

View File

@ -1,6 +1,6 @@
[wrap-file]
directory = glib-networking-2.78.1
source_url = https://download.gnome.org/sources/glib-networking/2.78/glib-networking-2.78.1.tar.xz
source_fallback_url = https://ftp.acc.umu.se/pub/gnome/sources/glib-networking/2.78/glib-networking-2.78.1.tar.xz
source_filename = glib-networking-2.78.1.tar.xz
source_hash = e48f2ddbb049832cbb09230529c5e45daca9f0df0eda325f832f7379859bf09f
directory = glib-networking-2.80.1
source_url = https://download.gnome.org/sources/glib-networking/2.80/glib-networking-2.80.1.tar.xz
source_fallback_url = https://deb.debian.org/debian/pool/main/g/glib-networking/glib-networking_2.80.1.orig.tar.xz
source_filename = glib-networking-2.80.1.tar.xz
source_hash = b80e2874157cd55071f1b6710fa0b911d5ac5de106a9ee2a4c9c7bee61782f8e

View File

@ -1,10 +1,11 @@
[wrap-file]
directory = glib-2.82.4
source_url = https://download.gnome.org/sources/glib/2.82/glib-2.82.4.tar.xz
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/glib_2.82.4-1/glib-2.82.4.tar.xz
source_filename = glib-2.82.4.tar.xz
source_hash = 37dd0877fe964cd15e9a2710b044a1830fb1bd93652a6d0cb6b8b2dff187c709
wrapdb_version = 2.82.4-1
directory = glib-2.82.5
source_url = https://download.gnome.org/sources/glib/2.82/glib-2.82.5.tar.xz
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/glib_2.82.5-1/glib-2.82.5.tar.xz
source_filename = glib-2.82.5.tar.xz
source_hash = 05c2031f9bdf6b5aba7a06ca84f0b4aced28b19bf1b50c6ab25cc675277cbc3f
wrapdb_version = 2.82.5-1
diff_files = glib-2.82.5/0001-Windows-fix-Python-path-cannot-contain-spaces.patch
[provide]
dependency_names = gthread-2.0, gobject-2.0, gmodule-no-export-2.0, gmodule-export-2.0, gmodule-2.0, glib-2.0, gio-2.0, gio-windows-2.0, gio-unix-2.0

View File

@ -1,11 +1,11 @@
[wrap-file]
directory = gobject-introspection-1.74.0
source_url = https://download.gnome.org/sources/gobject-introspection/1.74/gobject-introspection-1.74.0.tar.xz
source_fallback_url = https://ftp.acc.umu.se/pub/gnome/sources/gobject-introspection/1.74/gobject-introspection-1.74.0.tar.xz
source_filename = gobject-introspection-1.74.0.tar.xz
source_hash = 347b3a719e68ba4c69ff2d57ee2689233ea8c07fc492205e573386779e42d653
wrapdb_version = 1.74.0-0
diff_files = gobject-introspection-1.74.0/0001-Fix-gir-build-when-using-subprojects-dependencies.patch, gobject-introspection-1.74.0/0001-gir-stop-assuming-glib-source-and-build-dirs-using-v.patch, gobject-introspection-1.74.0/0001-build-Work-around-an-undocumented-GLib-variable-rena.patch
directory = gobject-introspection-1.84.0
source_url = https://download.gnome.org/sources/gobject-introspection/1.84/gobject-introspection-1.84.0.tar.xz
source_fallback_url = https://ftp.acc.umu.se/pub/gnome/sources/gobject-introspection/1.84/gobject-introspection-1.84.0.tar.xz
source_filename = gobject-introspection-1.84.0.tar.xz
source_hash = 945b57da7ec262e5c266b89e091d14be800cc424277d82a02872b7d794a84779
wrapdb_version = 1.84.0-0
diff_files = gobject-introspection-1.84.0/0003-girepository-Load-typelibs-from-a-relocatable-prefix.patch, gobject-introspection-1.84.0/0004-build-Fix-b_vscrt-value-use-without-converting-it-to.patch, gobject-introspection-1.84.0/0006-tests-Fix-path-parsing-for-Windows.patch, gobject-introspection-1.84.0/0007-g-ir-tools-Support-reading-rspfiles-for-arguments.patch, gobject-introspection-1.84.0/0008-meson-Fix-fs.copyfile-semantics-breaking-GIR-build-w.patch, gobject-introspection-1.84.0/0009-giscanner-Deduplicate-arguments-and-use-response-fil.patch, gobject-introspection-1.84.0/0010-dumper-Fix-introspection-binaries-missing-rpaths-for.patch
[provide]
dependency_names = gobject-introspection-1.0

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
This is GStreamer gst-devtools 1.27.0.1.
This is GStreamer gst-devtools 1.27.1.
GStreamer 1.27 is the unstable development branch leading up to the next major
stable version which will be 1.28.
The 1.27 development series adds new features on top of the 1.24 series and is
The 1.27 development series adds new features on top of the 1.26 series and is
part of the API and ABI-stable 1.x release series of the GStreamer multimedia
framework.
@ -40,10 +40,6 @@ with other GStreamer modules for a complete multimedia experience.
where you can find audio and video decoders and encoders
for a wide variety of formats including H.264, AAC, etc.
- gstreamer-vaapi: hardware-accelerated video decoding and encoding using
VA-API on Linux. Primarily for Intel graphics hardware.
(Deprecated, use the new "va" plugin instead)
- gst-rtsp-server: library to serve files or streaming pipelines via RTSP
- gst-editing-services: library an plugins for non-linear editing

View File

@ -0,0 +1,3 @@
target/
node_modules/

File diff suppressed because it is too large Load Diff

View File

@ -20,17 +20,17 @@ once_cell = "1"
clap = { version = "4", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
actix-web-static-files = "4.0"
static-files = "0.2.1"
static-files = { version = "0.2.5", features = ["sort"] }
glob = "0.3"
single-instance = "0.3.3"
opener = "0.7.1"
opener = "0.8"
anyhow = "1.0"
[target.'cfg(windows)'.dependencies]
windows = { version = "0.60", features = ["Win32_UI_Shell"] }
windows = { version = "0.61", features = ["Win32_UI_Shell"] }
[build-dependencies]
static-files = "0.2.1"
static-files = { version = "0.2.5", features = ["sort"] }
[[bin]]
name = "gst-dots-viewer"

View File

@ -0,0 +1,18 @@
// Import all dependencies first
import $ from 'jquery';
import 'jquery-mousewheel';
import 'jquery-color';
import 'bootstrap';
import 'dragscroll';
import * as vizModule from '@viz-js/viz';
import FuseModule from 'fuse.js';
// Make required libraries available globally
window.$ = window.jQuery = $;
window.viz = vizModule;
window.instance = vizModule.instance;
window.Fuse = FuseModule;
// Import Bootstrap CSS
import 'bootstrap/dist/css/bootstrap.min.css';

View File

@ -1,4 +1,4 @@
if not add_languages('rust', required: get_option('dots_viewer'))
if not add_languages('rust', required: get_option('dots_viewer'), native: false)
subdir_done()
endif

File diff suppressed because it is too large Load Diff

View File

@ -4,12 +4,30 @@
"description": "GStreamer dot files viewer",
"main": "static/js/gstdots.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"build:dev": "webpack --config webpack.config.js --mode development"
},
"author": "Thibault Saunier <tsaunier@igalia.com>",
"license": "MPL-2.0",
"dependencies": {
"@viz-js/viz": "^3.4.0",
"fuse.js": "^7.0.0"
"bootstrap": "^3.3.4",
"dragscroll": "0.0.8",
"fuse.js": "^7.0.0",
"jquery": "^2.2.4",
"jquery-color": "^2.2.0",
"jquery-mousewheel": "^3.2.2"
},
"devDependencies": {
"copy-webpack-plugin": "^11.0.0",
"css-loader": "^7.1.2",
"css-minimizer-webpack-plugin": "^7.0.2",
"file-loader": "^6.2.0",
"mini-css-extract-plugin": "^2.9.2",
"style-loader": "^4.0.0",
"terser-webpack-plugin": "^5.3.14",
"webpack": "^5.98.0",
"webpack-cli": "^5.1.4"
}
}

View File

@ -30,13 +30,13 @@
white-space: nowrap;
}
/* stop people selecting text on nodes */
/* allow text selection for copying */
.graphviz-svg text {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
cursor: default;
-webkit-touch-callout: text;
-webkit-user-select: text;
-khtml-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
user-select: text;
cursor: text;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,40 @@
/*!
* Sizzle CSS Selector Engine v2.2.1
* http://sizzlejs.com/
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license
* http://jquery.org/license
*
* Date: 2015-10-17
*/
/*!
* jQuery Color Animations v2.2.0
* https://github.com/jquery/jquery-color
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* Date: Sun May 10 09:02:36 2020 +0200
*/
/*!
* jQuery JavaScript Library v2.2.4
* http://jquery.com/
*
* Includes Sizzle.js
* http://sizzlejs.com/
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license
* http://jquery.org/license
*
* Date: 2016-05-20T17:23Z
*/
/*!
* jQuery Mousewheel 3.2.2
* Copyright OpenJS Foundation and other contributors
*/

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,4 @@
import { instance } from "/js/viz-standalone.mjs";
import Fuse from '/js/fuse.min.mjs'
import "/dist/bundle.js";
let ws = null;
@ -54,7 +53,7 @@ async function generateSvg(img) {
img.creating_svg = true;
try {
let viz = await instance();
let viz = await window.instance();
const svg = viz.renderSVGElement(img.dot_info.content);
img.src = URL.createObjectURL(new Blob([svg.outerHTML], { type: 'image/svg+xml' }));
img.creating_svg = false;
@ -303,7 +302,7 @@ function updateSearch() {
title: div.querySelector('h2').textContent
}));
const fuse = new Fuse(list, options);
const fuse = new window.Fuse(list, options);
const results = fuse.search(input.value);
for (let div of allDivs) {

View File

@ -0,0 +1,125 @@
/**
* Pipeline dot navigation functionality
*
* Makes pipeline-dot references clickable for navigation between pipeline views.
* Handles URL generation and navigation for pipeline dot references.
*/
class PipelineNavigationManager {
constructor(tooltipManager) {
this.tooltipManager = tooltipManager;
}
/**
* Processes all pipeline-dot references in SVG to make them clickable
* @param {jQuery} $svg - jQuery object containing the SVG element
*/
setupPipelineDotNavigation($svg) {
$svg.find(".cluster").each((index, cluster) => {
$(cluster).find("text, tspan").each((index, element) => {
const text = element.textContent;
if (this.isPipelineDotReference(text)) {
this.makePipelineDotClickable(element, text);
}
});
});
}
/**
* Checks if text content is a pipeline-dot reference
* @param {string} text - Text content to check
* @returns {boolean} True if text is a pipeline-dot reference
*/
isPipelineDotReference(text) {
return text && text.startsWith("pipeline-dot=") && text.includes(".dot");
}
/**
* Makes a pipeline-dot element clickable with proper styling and handlers
* @param {Element} element - DOM element to make clickable
* @param {string} text - Original text content
*/
makePipelineDotClickable(element, text) {
const pipelineDot = this.extractPipelineDotFilename(text);
// Style as a clickable link
$(element).css({
'text-decoration': 'underline',
'cursor': 'pointer',
'color': '#007acc'
});
// Add click handler for navigation
$(element).off('click.pipeline-nav').on('click.pipeline-nav', (evt) => {
evt.preventDefault();
evt.stopPropagation();
// Only hide tooltip if it's not in interactive mode
if (this.tooltipManager && !this.tooltipManager.isInteractive()) {
this.tooltipManager.hideTooltip();
}
this.navigateToPipeline(pipelineDot);
});
// Add hover effects
this.setupHoverEffects(element);
}
/**
* Extracts the pipeline dot filename from the full text
* @param {string} text - Full pipeline-dot text
* @returns {string} Extracted filename
*/
extractPipelineDotFilename(text) {
let pipelineDot = text;
if (pipelineDot.includes("pipeline-dot=\"")) {
pipelineDot = pipelineDot.replace(/pipeline-dot="([^"]+)"/, "$1");
} else {
pipelineDot = pipelineDot.replace(/pipeline-dot=([^\s]+)/, "$1");
}
return pipelineDot;
}
/**
* Sets up hover effects for clickable pipeline-dot links
* @param {Element} element - DOM element to add hover effects to
*/
setupHoverEffects(element) {
$(element).on('mouseenter', function () {
$(this).css({
'color': '#0056b3',
'cursor': 'pointer'
});
}).on('mouseleave', function () {
$(this).css({
'color': '#007acc',
'cursor': 'pointer'
});
});
}
/**
* Navigates to the specified pipeline
* @param {string} pipelineDot - Pipeline dot filename to navigate to
*/
navigateToPipeline(pipelineDot) {
// Check if we're in an iframe (overlay.html context)
if (window.parent !== window) {
// We're in an iframe, navigate the parent window
const newUrl = window.parent.location.origin + "/?pipeline=" + encodeURIComponent(pipelineDot);
window.parent.location.href = newUrl;
} else {
// We're in the main window
const newUrl = window.location.origin + "/?pipeline=" + encodeURIComponent(pipelineDot);
window.location.href = newUrl;
}
}
}
// Export for module usage
if (typeof module !== 'undefined' && module.exports) {
module.exports = PipelineNavigationManager;
} else {
window.PipelineNavigationManager = PipelineNavigationManager;
}

View File

@ -0,0 +1,173 @@
/**
* SVG Overlay Manager
*
* Main coordinator for all SVG overlay functionality including tooltips,
* text ellipsizing, pipeline navigation, and drag-to-pan interaction.
*/
class SvgOverlayManager {
constructor() {
this.tooltipManager = null;
this.pipelineNavigationManager = null;
this.textEllipsizerManager = null;
this.gv = null;
}
/**
* Initializes all managers and sets up the SVG overlay functionality
*/
init() {
// Initialize managers
this.tooltipManager = new TooltipManager();
this.pipelineNavigationManager = new PipelineNavigationManager(this.tooltipManager);
this.textEllipsizerManager = new TextEllipsizerManager(this.tooltipManager, this.pipelineNavigationManager);
// Set up GraphViz SVG functionality
this.setupGraphvizSvg();
}
/**
* Sets up GraphViz SVG functionality and event handlers
*/
setupGraphvizSvg() {
$("#graph").graphviz({
url: this.getSvgUrl(),
ready: () => {
this.onSvgReady();
}
});
}
/**
* Called when SVG is loaded and ready
*/
onSvgReady() {
this.gv = $("#graph").data('graphviz.svg');
const $svg = $("#graph svg");
// Set up node click functionality for highlighting
this.setupNodeHighlighting();
// Set up smart drag-to-pan behavior that doesn't interfere with text selection
this.setupSmartDragBehavior();
// Set up keyboard shortcuts
this.setupKeyboardShortcuts();
// Set up save SVG functionality
this.setupSaveSvg();
// Process SVG content
this.processSvgContent($svg);
}
/**
* Processes SVG content with all managers
* @param {jQuery} $svg - jQuery object containing the SVG element
*/
processSvgContent($svg) {
// Set up pipeline-dot navigation
this.pipelineNavigationManager.setupPipelineDotNavigation($svg);
// Process text ellipsizing (this must come after pipeline navigation setup)
this.textEllipsizerManager.ellipsizeLongText($svg);
}
/**
* Sets up node click functionality for highlighting connected nodes
*/
setupNodeHighlighting() {
this.gv.nodes().on('click', function () {
const gv = $("#graph").data('graphviz.svg');
let $set = $();
$set.push(this);
$set = $set.add(gv.linkedFrom(this, true));
$set = $set.add(gv.linkedTo(this, true));
gv.highlight($set, true);
gv.bringToFront($set);
});
}
/**
* Sets up smart drag behavior that allows text selection while preserving pan functionality
*/
setupSmartDragBehavior() {
const graphDiv = document.getElementById('graph');
// Intercept mousedown events to prevent dragscroll on text elements
graphDiv.addEventListener('mousedown', (e) => {
if (e.target.tagName === 'text' || e.target.tagName === 'tspan') {
if (e.target.textContent &&
e.target.textContent.startsWith("pipeline-dot=") &&
e.target.textContent.includes(".dot")) {
return; // Let pipeline dot click handler take precedence
}
e.stopPropagation(); // Stop dragscroll for regular text
return true;
}
}, true);
}
/**
* Sets up keyboard shortcuts for the SVG viewer
*/
setupKeyboardShortcuts() {
$(document).on('keyup', (evt) => {
if (evt.key == "Escape") {
this.gv.highlight();
} else if (evt.key == "w") {
this.gv.scaleInView((this.gv.zoom.percentage + 100));
} else if (evt.key == "s") {
this.gv.scaleInView((this.gv.zoom.percentage - 100) || 100);
}
});
}
/**
* Sets up SVG save functionality
*/
setupSaveSvg() {
$("#save-svg").on('click', () => {
const svgElement = $("#graph svg")[0];
const svgData = new XMLSerializer().serializeToString(svgElement);
const blob = new Blob([svgData], { type: "image/svg+xml;charset=utf-8" });
const url = URL.createObjectURL(blob);
const title = document.getElementById("title").textContent.trim();
const downloadLink = document.createElement("a");
downloadLink.href = url;
downloadLink.download = title + ".svg";
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
URL.revokeObjectURL(url);
});
}
/**
* Gets the SVG URL from query parameters
* @returns {string} SVG URL
*/
getSvgUrl() {
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get('svg');
}
/**
* Gets the title from query parameters and sets it in the document
*/
setTitle() {
const urlParams = new URLSearchParams(window.location.search);
const title = urlParams.get('title');
if (title) {
document.getElementById("title").textContent = title;
document.title = "Dots viewer: " + title;
}
}
}
// Export for module usage
if (typeof module !== 'undefined' && module.exports) {
module.exports = SvgOverlayManager;
} else {
window.SvgOverlayManager = SvgOverlayManager;
}

View File

@ -0,0 +1,160 @@
/**
* Text ellipsizing functionality for SVG elements
*
* Ellipsizes long text content (>80 chars) and provides tooltips with full content.
* Integrates with tooltip system for interactive copy/paste functionality.
*/
class TextEllipsizerManager {
constructor(tooltipManager, pipelineNavigationManager) {
this.tooltipManager = tooltipManager;
this.pipelineNavigationManager = pipelineNavigationManager;
this.maxLength = 80;
}
/**
* Processes all text elements in SVG to ellipsize long content
* @param {jQuery} $svg - jQuery object containing the SVG element
*/
ellipsizeLongText($svg) {
$svg.find("text, tspan").each((index, element) => {
const text = element.textContent;
if (this.shouldEllipsize(text)) {
this.ellipsizeElement(element, text);
}
});
}
/**
* Determines if text should be ellipsized
* @param {string} text - Text content to check
* @returns {boolean} True if text should be ellipsized
*/
shouldEllipsize(text) {
return text && text.length > this.maxLength;
}
/**
* Ellipsizes an element and sets up tooltip functionality
* @param {Element} element - DOM element to ellipsize
* @param {string} originalText - Original full text content
*/
ellipsizeElement(element, originalText) {
const ellipsizedText = originalText.substring(0, 77) + "...";
// Update the text content
$(element).text(ellipsizedText);
// Store original text and mark as having tooltip
$(element).data('original-text', originalText);
$(element).attr('data-has-tooltip', 'true');
// Style to indicate there's more content
$(element).css({
'cursor': 'help'
});
this.setupTooltipHandlers(element, originalText);
}
/**
* Sets up tooltip handlers for ellipsized elements
* @param {Element} element - DOM element to add handlers to
* @param {string} originalText - Original full text content
*/
setupTooltipHandlers(element, originalText) {
const isPipelineDot = this.pipelineNavigationManager.isPipelineDotReference(originalText);
if (!isPipelineDot) {
this.setupRegularTooltipHandlers(element, originalText);
} else {
this.setupPipelineDotTooltipHandlers(element, originalText);
}
}
/**
* Sets up tooltip handlers for regular (non-pipeline-dot) elements
* @param {Element} element - DOM element to add handlers to
* @param {string} originalText - Original full text content
*/
setupRegularTooltipHandlers(element, originalText) {
$(element).on('mouseenter', (e) => {
this.tooltipManager.showTooltip(element, originalText, e);
});
$(element).on('mousemove', (e) => {
if (!this.tooltipManager.isInteractive()) {
this.tooltipManager.showTooltip(element, originalText, e);
}
});
$(element).on('mouseleave.tooltip', () => {
// Don't hide tooltip on mouseleave if it's interactive
if (!this.tooltipManager.isInteractive()) {
this.tooltipManager.hideTooltip();
}
});
// Double-click to make tooltip interactive
$(element).on('dblclick', (e) => {
e.preventDefault();
e.stopPropagation();
if (this.tooltipManager.$tooltip.hasClass('show')) {
this.tooltipManager.makeTooltipInteractive();
}
});
}
/**
* Sets up tooltip handlers for pipeline-dot elements (with navigation functionality)
* @param {Element} element - DOM element to add handlers to
* @param {string} originalText - Original full text content
*/
setupPipelineDotTooltipHandlers(element, originalText) {
// Make it clickable for navigation
this.pipelineNavigationManager.makePipelineDotClickable(element, originalText);
// Add tooltip functionality
$(element).on('mouseenter', (e) => {
$(element).css({
'color': '#0056b3',
'cursor': 'pointer'
});
this.tooltipManager.showTooltip(element, originalText, e);
});
$(element).on('mousemove', (e) => {
if (!this.tooltipManager.isInteractive()) {
this.tooltipManager.showTooltip(element, originalText, e);
}
});
$(element).on('mouseleave.tooltip', () => {
$(element).css({
'color': '#007acc',
'cursor': 'pointer'
});
// Don't hide tooltip on mouseleave if it's interactive
if (!this.tooltipManager.isInteractive()) {
this.tooltipManager.hideTooltip();
}
});
// Right-click to make tooltip interactive (since left-click navigates)
$(element).on('contextmenu', (e) => {
if (this.tooltipManager.$tooltip.hasClass('show')) {
e.preventDefault();
e.stopPropagation();
this.tooltipManager.makeTooltipInteractive();
}
});
}
}
// Export for module usage
if (typeof module !== 'undefined' && module.exports) {
module.exports = TextEllipsizerManager;
} else {
window.TextEllipsizerManager = TextEllipsizerManager;
}

View File

@ -0,0 +1,118 @@
/**
* Custom tooltip functionality for SVG elements
*
* Provides hoverable tooltips with interactive copy/paste mode for ellipsized text.
* Interactive mode allows users to select and copy tooltip content.
*/
class TooltipManager {
constructor() {
this.$tooltip = null;
this.tooltipText = '';
this.isTooltipInteractive = false;
this.currentTooltipElement = null;
this.init();
}
init() {
// Create custom tooltip element
this.$tooltip = $('<div class="custom-tooltip"></div>').appendTo('body');
// Set up document click handler for hiding tooltips
this.setupDocumentClickHandler();
}
/**
* Shows tooltip with given text at event position
* @param {Element} element - Element that triggered the tooltip
* @param {string} text - Text to display in tooltip
* @param {Event} event - Mouse event for positioning
*/
showTooltip(element, text, event) {
this.tooltipText = text;
this.currentTooltipElement = element;
this.$tooltip.text(text);
this.$tooltip.css({
left: event.pageX + 10 + 'px',
top: event.pageY - 30 + 'px'
}).removeClass('interactive').addClass('show');
this.isTooltipInteractive = false;
}
/**
* Makes tooltip interactive (selectable and fixed position)
*/
makeTooltipInteractive() {
if (!this.isTooltipInteractive && this.currentTooltipElement) {
this.$tooltip.addClass('interactive');
this.isTooltipInteractive = true;
// Position tooltip in a fixed position relative to the element
const elementOffset = $(this.currentTooltipElement).offset();
this.$tooltip.css({
left: Math.min(elementOffset.left + 20, window.innerWidth - 420) + 'px',
top: Math.max(elementOffset.top - 80, 10) + 'px',
'pointer-events': 'auto'
});
// Prevent mouseleave from hiding the tooltip by removing the handler temporarily
$(this.currentTooltipElement).off('mouseleave.tooltip');
// Select all text when made interactive
setTimeout(() => {
const range = document.createRange();
range.selectNodeContents(this.$tooltip[0]);
const selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
}, 10);
}
}
/**
* Hides the tooltip and resets state
*/
hideTooltip() {
this.$tooltip.removeClass('show interactive');
this.isTooltipInteractive = false;
this.currentTooltipElement = null;
}
/**
* Sets up document click handler to hide tooltips when clicking outside
*/
setupDocumentClickHandler() {
$(document).on('click', (e) => {
if (this.isTooltipInteractive) {
// Only hide interactive tooltip when clicking outside both tooltip and original element
if (!$(e.target).closest('.custom-tooltip').length &&
!$(e.target).is('[data-has-tooltip]') &&
e.target !== this.currentTooltipElement) {
this.hideTooltip();
}
} else {
// Hide non-interactive tooltip when clicking anywhere except on elements with tooltips
if (!$(e.target).is('[data-has-tooltip]')) {
this.hideTooltip();
}
}
});
}
/**
* Checks if tooltip is currently in interactive mode
* @returns {boolean} True if tooltip is interactive
*/
isInteractive() {
return this.isTooltipInteractive;
}
}
// Export for module usage
if (typeof module !== 'undefined' && module.exports) {
module.exports = TooltipManager;
} else {
window.TooltipManager = TooltipManager;
}

File diff suppressed because one or more lines are too long

View File

@ -22,7 +22,7 @@ furnished to do so, subject to the following conditions:
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" href="/dist/bundle.css">
<link rel="stylesheet" href="/css/graphviz.svg.css">
</head>
@ -39,71 +39,68 @@ furnished to do so, subject to the following conditions:
text-align: left;
}
.custom-tooltip {
position: absolute;
background-color: #333;
color: white;
padding: 8px 12px;
border-radius: 4px;
font-size: 12px;
white-space: nowrap;
z-index: 10000;
pointer-events: none;
opacity: 0;
transition: opacity 0.2s;
max-width: 400px;
word-wrap: break-word;
white-space: normal;
user-select: text;
-webkit-user-select: text;
-moz-user-select: text;
-ms-user-select: text;
}
.custom-tooltip.show {
opacity: 1;
}
.custom-tooltip.interactive {
pointer-events: auto;
cursor: text;
border: 2px solid #555;
}
.custom-tooltip.interactive::after {
content: " (Text selected - Ctrl+C to copy)";
font-size: 10px;
color: #aaa;
font-style: italic;
}
</style>
<body>
<h1 style="text-align: center" id="title"> {{ TITLE }}</h1>
<div id="graph" class="dragscroll" style="width: 100%; height: 100%; overflow: scroll;"></div>
<div class="floating-rectangle" id="instructions">
Click node to highlight<br/>Shift-Ctrl-scroll or w/s to zoom<br/>Esc to unhighlight
Click node to highlight<br/>Shift-Ctrl-scroll or w/s to zoom<br/>Esc to unhighlight<br/>Double-click ellipsized text to copy
</div>
<div class="floating-rectangle" id="actions" style="top: auto; bottom: 100px; left: 10px;">
<button id="save-svg" class="btn btn-primary btn-sm" style="margin-right: 5px;">Save SVG</button>
</div>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/jquery/jquery-mousewheel/master/jquery.mousewheel.min.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/jquery/jquery-color/master/jquery.color.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="http://asvd.github.io/dragscroll/dragscroll.js"></script>
<script src='/dist/bundle.js'></script>
<script type="text/javascript" src="/js/jquery.graphviz.svg.js"></script>
<script type="text/javascript" src="/js/tooltip.js"></script>
<script type="text/javascript" src="/js/pipeline-navigation.js"></script>
<script type="text/javascript" src="/js/text-ellipsizer.js"></script>
<script type="text/javascript" src="/js/svg-overlay-manager.js"></script>
<script type="text/javascript">
let url = new URL(window.location.href);
let searchParams = new URLSearchParams(url.search);
document.getElementById("title").innerHTML = searchParams.get("title");
$(document).ready(function(){
$("#graph").graphviz({
url: searchParams.get("svg"),
ready: function() {
var gv = this;
gv.nodes().click(function () {
var $set = $();
$set.push(this);
$set = $set.add(gv.linkedFrom(this, true));
$set = $set.add(gv.linkedTo(this, true));
gv.highlight($set, true);
gv.bringToFront($set);
});
$(document).keydown(function (evt) {
if (evt.key == "Escape") {
gv.highlight();
} else if (evt.key == "w") {
gv.scaleInView((gv.zoom.percentage + 100));
} else if (evt.key == "s") {
gv.scaleInView((gv.zoom.percentage - 100) || 100);
}
});
$("#save-svg").click(function() {
const svgElement = $("#graph svg")[0];
const svgData = new XMLSerializer().serializeToString(svgElement);
const blob = new Blob([svgData], {type: "image/svg+xml;charset=utf-8"});
const url = URL.createObjectURL(blob);
const title = document.getElementById("title").textContent.trim();
const downloadLink = document.createElement("a");
downloadLink.href = url;
downloadLink.download = title + ".svg";
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
URL.revokeObjectURL(url);
});
}
});
$(document).ready(() => {
const svgOverlayManager = new SvgOverlayManager();
svgOverlayManager.setTitle();
svgOverlayManager.init();
});
</script>
</body>

View File

@ -0,0 +1,13 @@
#!/bin/bash
set -e
if ! command -v npm &> /dev/null; then
echo "npm is not installed. Please install Node.js and npm first."
exit 1
fi
echo "Installing dependencies..."
npm install
echo "Building bundles..."
npm run build

View File

@ -0,0 +1,72 @@
const path = require('path');
const webpack = require('webpack');
const TerserPlugin = require('terser-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
module.exports = {
mode: 'production',
entry: {
bundle: './bundle-entry.js'
},
output: {
path: path.resolve(__dirname, 'static/dist'),
filename: '[name].js',
},
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader'
]
},
// For Bootstrap fonts
{
test: /\.(woff|woff2|eot|ttf|svg)$/,
type: 'asset/resource',
generator: {
filename: 'fonts/[name][ext]'
}
}
]
},
optimization: {
minimize: true,
minimizer: [
new TerserPlugin({
terserOptions: {
compress: {
drop_console: true,
passes: 2
},
mangle: true,
output: {
comments: false
}
}
}),
new CssMinimizerPlugin() // For CSS optimization
],
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
}),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
}),
new MiniCssExtractPlugin({
filename: '[name].css'
})
],
resolve: {
alias: {
'jquery': path.resolve(__dirname, 'node_modules/jquery/dist/jquery.js'),
'/js/vendor/viz-standalone.mjs': path.resolve(__dirname, 'node_modules/@viz-js/viz/lib/viz-standalone.mjs'),
'/js/vendor/fuse.min.mjs': path.resolve(__dirname, 'node_modules/fuse.js/dist/fuse.mjs')
}
}
};

View File

@ -53,6 +53,16 @@
</GitRepository>
</repository>
<release>
<Version>
<revision>1.27.1</revision>
<branch>main</branch>
<name></name>
<created>2025-07-08</created>
<file-release rdf:resource="https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-1.27.1.tar.xz" />
</Version>
</release>
<release>
<Version>
<revision>1.26.0</revision>

View File

@ -1,5 +1,5 @@
project('gst-devtools', 'c',
version : '1.27.0.1',
version : '1.27.1.1',
meson_version : '>= 1.4',
default_options : [ 'warning_level=1',
'buildtype=debugoptimized' ])

View File

@ -28,7 +28,6 @@ changelog_starts = {
'gst-rtsp-server': '5029c85a46a8c366c4bf272d503e22bbcd624ece',
'gst-editing-services': 'ee8bf88ebf131cf7c7161356540efc20bf411e14',
'gst-python': 'b3e564eff577e2f577d795051bbcca85d47c89dc',
'gstreamer-vaapi': 'c89e9afc5d43837c498a55f8f13ddf235442b83b',
'gst-devtools': 'da962d096af9460502843e41b7d25fdece7ff1c2',
'gstreamer-sharp': 'b94528f8e7979df49fedf137dfa228d8fe475e1b',
}

View File

@ -0,0 +1,25 @@
The `overrides` field is an array of override structures.
At the moment, these overrides allow you to change the severity level of specific issues,
for example changing a critical issue to a warning to allow tests to pass
when encountering known issues.
Use `gst-validate-1.0 --print-issue-types` to print information about all issue types.
For example:
``` yaml
overrides = {
[change-severity, issue-id=runtime::not-negotiated, new-severity=warning],
[change-severity, issue-id=g-log::critical, new-severity=info],
}
```
**Each override has the following fields**:
* `issue-id`: (string): Issue ID to override - Mandatory
* `new-severity`: (string): New severity level (critical, warning, issue, ignore) - Mandatory
Currently only `change-severity` overrides are supported.
**Warning**: This field is validate only for [`.validatetest`](gst-validate-test-file.md) files, and not `.scenario`.

View File

@ -367,6 +367,7 @@ validate_flow_format_buffer (GstBuffer * buffer, gint checksum_type,
g_string_append_c (content, ' ');
g_string_append_printf (content, "0x%02x", map.data[i]);
}
gst_buffer_unmap (buffer, &map);
buffer_parts[buffer_parts_index++] = g_string_free (content, FALSE);
} else {
@ -436,6 +437,7 @@ validate_flow_format_buffer (GstBuffer * buffer, gint checksum_type,
buffer_parts_index > 0 ? g_strjoinv (", ",
buffer_parts) : g_strdup ("(empty)");
g_strfreev (logged_fields);
g_strfreev (ignored_fields);
g_free (meta_str);
g_free (flags_str);

View File

@ -709,3 +709,9 @@ gst_validate_flow_init (void)
return TRUE;
}
void
_priv_validate_flow_deinit (void)
{
g_clear_list (&all_overrides, gst_object_unref);
}

Some files were not shown because too many files have changed in this diff Show More