1637 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Ognyan Tonchev
6db576f033 gstrtpsession: Do not push events while holding SESSION_LOCK
Doing so can trigger deadlocks

Fixes: #4328
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8695>
2025-04-05 08:43:06 +00:00
Ognyan Tonchev
ebb1d1a4ae gstrtpsession: protect recv_rtcp_segment_seqnum with a lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8695>
2025-04-05 08:43:05 +00:00
Ognyan Tonchev
961fc87168 gstrtpsession: use correct seqnum for the STREAM_START ans SEGMENT events
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8695>
2025-04-05 08:43:05 +00:00
dukesook
daa1ee84b9 qtdemux: Extend Uncompressed Lookup Table
- LUT now supports various subsampling, interleaves, and bit depths.

 - Replaces stride with GstVideoInfo pre_info to represent original data.

 - Simplifies gst_row_align_buffer() with gst_video_frame_copy().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8598>
2025-04-05 07:59:32 +00:00
Doug Nazar
6e9667b65c matroskademux: Add support for relative position cues
Cueing data can contain the block number within a cluster and/or
a relative offset into the cluster.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5535>
2025-03-28 17:47:27 -04:00
Doug Nazar
3578b23ba2 matroskamux: Add support for chroma siting
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5534>
2025-03-28 11:44:13 -04:00
Doug Nazar
123a7a515f matroskamux: Add support for interlaced field order
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5534>
2025-03-28 11:44:13 -04:00
Doug Nazar
671dd6a61e matroskamux: Always use v4 for DocType version
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5534>
2025-03-28 11:43:50 -04:00
Doug Nazar
8e6ec1fc34 matroskademux: Handle chroma site color information
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5534>
2025-03-28 11:22:39 -04:00
Víctor Manuel Jáquez Leal
03c129d4d3 tests: y4menc: padded frame test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8654>
2025-03-27 14:29:40 +01:00
Víctor Manuel Jáquez Leal
d59ce45789 y4menc: use start() vmethod rather than change_state()
Also it wil call negotiate() vmethod at set_format()

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8654>
2025-03-27 14:29:40 +01:00
Víctor Manuel Jáquez Leal
0f0a4d6ab3 y4menc: enable y4menc debugging category
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8654>
2025-03-27 14:29:40 +01:00
Víctor Manuel Jáquez Leal
2fb3dddd51 y4menc: handle padded frames
Since y4menc inherits from GstVideoEncoder, it negotiates upstream buffer pools
with GstVideoMeta support. Thus, certain decoders might use that meta for
frames with padded memory. Nonetheless y4menc assumes only linear memory video
frames, without padding.

This patch will copy frames using gst_video_frame_copy() if buffer has
GstVideoMeta or its video info is padded with its custom video info. Otherwise,
it ill call the agnostic gst_buffer_copy() for a shallow copy.

Supersedes: !5042

Fixes: #2765
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8654>
2025-03-27 14:28:03 +01:00
Víctor Manuel Jáquez Leal
fb0bea8fef y4menc: create an output video info without padding
The unpadded strides and offsets calculations for the video info are inspired
from y4mdec.

A boolean flags is toggled if the video info is padded for the given resolution.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8654>
2025-03-27 14:05:43 +01:00
Arun Raghavan
c5733c84b1 qt6: Add a missing newline in unsupported platform message
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8702>
2025-03-27 10:02:47 +00:00
Doug Nazar
a33e1c7563 rtspsrc: Free various props during cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Doug Nazar
1d2bd1df6c ximagesrc: Free various props during cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Doug Nazar
e3818d0e1b qtmoovrecover: Free various props during cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Doug Nazar
b808153d15 jack: Free various props during cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Doug Nazar
6279c4bab7 dash: Free various props before set & during cleanup
In addition several members were being freed via xmlFree() even though
being created via g_value_dup_string(). Switch to g_free().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Doug Nazar
5f90a4ae67 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_string() as they can only be called once during construction.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Stéphane Cerveau
9183df0226 v4l2object: fix memory leak
The tmp caps should be unreffed as the template structure.

The leaks can be reproduced with
gst-launch-1.0 v4l2src num-buffers=1 ! autovideosink

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8669>
2025-03-26 15:43:56 +00:00
Jakub Adam
5aaa4c2c5a qml6glsrc: update buffer pool on renegotiation
When dynamic caps change in the pipeline leads to a new buffer pool
getting negotiated, the change is not propagated to Qt6GLWindow, which
keeps using the old, now defunct, pool.

Unset current pool on Qt6GLWindow in decide_allocation(). This will
trigger a switch to the new pool inside create().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8676>
2025-03-26 12:40:42 +00:00