Tim-Philipp Müller [Sun, 26 Mar 2023 15:40:28 +0000 (16:40 +0100)]
taglist, plugins: fix compiler warnings with GLib >= 2.76
Fix compiler warnings about not using the return value when
freeing the GString segment with g_string_free(.., FALSE):
ignoring return value of ‘g_string_free_and_steal’ declared with attribute ‘warn_unused_result’
which we get with newer GLib versions. These were all harmless.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5015>
Seungha Yang [Mon, 26 Jun 2023 20:09:49 +0000 (05:09 +0900)]
d3d11bufferpool: Fix heavy CPU usage in case of fixed-size pool
There's no reason to release GstMemory manually at all.
If we do release GstMemory, corresponding GstBuffer will be
discarded by GstBufferPool baseclass because the size is changed
to zero.
Actual cause of heavy CPU usage in case of fixed-size pool
(i.e., decoder output buffer pool) and if we remove GstMemory from
GstBuffer is that GstBufferPool baseclass is doing busy wait in acquire_buffer()
for some reason. That needs to be investigated though, discarding
and re-alloc every GstBuffer is not ideal already.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4943>
Seungha Yang [Mon, 10 Jul 2023 13:45:49 +0000 (22:45 +0900)]
qt6: Set sampler filtering method
QQuickItem::smooth property doesn't seem to be propagated to
newly created QSGSimpleTextureNode automatically.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2793
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5016>
Philippe Normand [Mon, 10 Jul 2023 11:03:25 +0000 (12:03 +0100)]
webrtcbin: Prevent critical warning when creating an additional data channel
The max_channels value wasn't clamped to 65534 in all situations.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5012>
David Craven [Sun, 9 Jul 2023 15:44:03 +0000 (17:44 +0200)]
matroska: demux: Strip signal byte from encrypted blocks
Removes the signal byte when the frame is unencrypted to
be consistent with when the frame is encrypted.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5014>
Maksym Khomenko [Fri, 7 Jul 2023 13:01:33 +0000 (16:01 +0300)]
appsink: add missing make_writable call
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5013>
Thibault Saunier [Wed, 5 Jul 2023 18:27:22 +0000 (14:27 -0400)]
bad: audioaggregator: Do not post message before being constructed
`gst_aggregator_set_latency` will post a message on the bus which
triggers traces for not constructed objects which fails in rust tracers
as object should have names in all traces.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4984>
Thibault Saunier [Wed, 5 Jul 2023 18:23:50 +0000 (14:23 -0400)]
nle: composition: Avoid running query before being constructed
`gst_pad_create_stream_id` runs a URI query on the element which
triggers traces for not constructed objects which fails in rust tracers
as object should have names in all traces.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4984>
Thibault Saunier [Wed, 5 Jul 2023 18:22:59 +0000 (14:22 -0400)]
ges: pipeline: Avoid setting state before being constructed
It means setting state which triggers traces for not constructed objects
which fails in rust tracers as object should have names in all traces.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4984>
Nicolas Dufresne [Mon, 26 Jun 2023 21:10:33 +0000 (17:10 -0400)]
v4l2: videodec: Don't wait for src_ch if active
If the capture pool is already active, like when handling gaps at the
start of a stream, do not setup the decoder to wait for src_ch event.
Otherwise the decoder will endup waiting for that at the wrong moment
and exit the decoding thread unexpectedly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4996>
Nicolas Dufresne [Mon, 26 Jun 2023 21:08:57 +0000 (17:08 -0400)]
v4l2: videodec: Move pool setup inside negotiate()
Move all the pool configuration inside the negotiate() virtual function.
This allow settting up a pool with default format whenever the base
class wants to start without input data, like gaps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4996>
Hou Qi [Thu, 6 Jul 2023 09:44:48 +0000 (17:44 +0800)]
v4l2videodec: correctly register v4l2mpeg2dec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4992>
Guillaume Desmottes [Fri, 7 Jul 2023 10:33:37 +0000 (12:33 +0200)]
videoflip: fix critical when tag list is not writable
Fix this pipeline where the tag list is not writable:
gst-launch-1.0 videotestsrc ! taginject tags="image-orientation=rotate-90" ! videoflip video-direction=auto \
! autovideosink
GStreamer-CRITICAL **: 12:34:36.310: gst_tag_list_add: assertion 'gst_tag_list_is_writable (list)' failed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4990>
Théo Maillart [Thu, 6 Jul 2023 16:08:57 +0000 (18:08 +0200)]
inputselector: fix playing variable is never set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4988>
Michael Olbrich [Thu, 6 Jul 2023 12:27:42 +0000 (14:27 +0200)]
v4l2src: handle resolution change when buffers are copied
When buffers are copied then GST_V4L2_FLOW_RESOLUTION_CHANGE is returned by
gst_v4l2_buffer_pool_process() so do renegotiation here as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4985>
Guillaume Desmottes [Tue, 4 Jul 2023 13:37:16 +0000 (15:37 +0200)]
subtitleoverlay: fix mutex error if sink caps is not video
We were trying to unlock a mutex that was not locked.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4972>
Seungha Yang [Tue, 4 Jul 2023 14:11:53 +0000 (23:11 +0900)]
rtspsrc: Fix crash when is-live=false
The pad's parent (i.e., rtspsrc) can be nullptr since we add pads
later.
Co-authored-by: Jan Schmidt <jan@centricular.com>
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2751
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4971>
Edward Hervey [Tue, 4 Jul 2023 08:57:01 +0000 (10:57 +0200)]
hlsdemux2: Ensure processed webvtt ends with empty new line
Parsers downstream will use empty new lines to detect where an entry
ends. Failure to have a newline would cause the entry to be either
discarded or (wrongly) concatenated with the next entry
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2752
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4970>
Philippe Normand [Fri, 30 Jun 2023 17:30:46 +0000 (18:30 +0100)]
webrtcstats: Properly report IceCandidate type
strcmp returns a positive value if s1 is greater than s2, while we actually
needed to check equality here.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4957>
Guillaume Desmottes [Thu, 16 Feb 2023 12:44:50 +0000 (13:44 +0100)]
tracerutils: allow casting parameters types
It was impossible to have an u32 parameter such as
'max-buffer-size=(uint)5' because the parentheses were not properly
parsed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4941>
Edward Hervey [Wed, 21 Jun 2023 15:05:47 +0000 (17:05 +0200)]
matroska-demux: Properly handle early time-based segments
Refusing an incoming segment in < GST_MATROSKA_READ_STATE_DATA should only be
done if the incoming segment is not in GST_FORMAT_TIME.
In GST_FORMAT_TIME, we are just storing the values and returning, so we can
invert the order of the checks.
Fixes proper segment propagation in matroska/webm DASH use-cases
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>
Edward Hervey [Fri, 10 Feb 2023 14:26:20 +0000 (15:26 +0100)]
adaptivedemux2: Handle early SEEKING query
No pads are present yet, but we can still answer the query
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>
Edward Hervey [Thu, 9 Feb 2023 16:22:34 +0000 (17:22 +0100)]
adaptivedemux2: Fix non-accurate seeking
If no accurate positioning was required, default to snap to the previous segment
for improved responsiveness
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>
Edward Hervey [Thu, 9 Feb 2023 13:54:27 +0000 (14:54 +0100)]
adaptivedemux2: Handle return in seek handling
Various code path were repeating the same logic, and risk forgetting a lock
release.
Unify all of them
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>
Edward Hervey [Thu, 9 Feb 2023 13:45:01 +0000 (14:45 +0100)]
adaptivedemux2: Move API lock usage
It is not needed so early
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>
Edward Hervey [Wed, 8 Feb 2023 16:24:18 +0000 (17:24 +0100)]
adaptivedemux2: Handle early key-unit seek
Is a seek is done on stream-collection post, there are no selected streams
yet. Therefore none would be chosen to adjust the key-unit seek.
If no streams are selected, fallback to a default stream (i.e. one which has
track(s) with GST_STREAM_FLAG_SELECT).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>
Edward Hervey [Wed, 8 Feb 2023 11:02:45 +0000 (12:02 +0100)]
adaptivedemux2: Fix early seeking
When seeking is handled by the collection posting thread, there is a possibility
that some leftover data will be pushed by the stream thread.
Properly detect and reject those early segments (and buffers) by comparing it to
the main segment seqnum
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>
Guillaume Desmottes [Tue, 6 Jun 2023 09:34:03 +0000 (11:34 +0200)]
videoflip: update orientation tag in auto mode
The frames are flipped according to the tag orientation so it's no longer accurate.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4796>
François Laignel [Tue, 20 Jun 2023 12:56:44 +0000 (14:56 +0200)]
qtdemux: opus: set entry as sampled
... otherwise streams with constant size samples defined with a single
`sample_size` for all samples in the `stsz` box fall in the category
`chunks_are_samples` in `qtdemux_stbl_init`, overriding the actual
sample count.
`FOURCC_soun` would set this automatically for `compression_id == 0xfffe`,
however `compression_id` is read from the Audio Sample Entry box at an offset
marked as "pre-defined" in some version of the spec and set to 0 both by
GStreamer and FFmpeg for opus streams.
Considering the stream `sampled` flag is set explicitely by other fourcc
variants, doing so for opus seems consistent.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4908>
Tim-Philipp Müller [Tue, 20 Jun 2023 18:10:38 +0000 (19:10 +0100)]
Back to development
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4907>
Tim-Philipp Müller [Tue, 20 Jun 2023 16:42:25 +0000 (17:42 +0100)]
Release 1.22.4
Jonas Kvinge [Thu, 8 Jun 2023 17:12:54 +0000 (19:12 +0200)]
adaptivedemux2: Allow data dash+xml manifest for uri
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4853>
Sebastian Dröge [Tue, 13 Jun 2023 11:25:04 +0000 (14:25 +0300)]
dvdspu: Avoid integer overflow when checking if enough data is available
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4899>
Sebastian Dröge [Tue, 13 Jun 2023 11:23:47 +0000 (14:23 +0300)]
dvdspu: Make sure enough data is allocated for the available data
If the size read from the stream is smaller than the currently available
data then the size is bogus and the data should simply be discarded.
Fixes ZDI-CAN-20994
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2660
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4899>
Sebastian Dröge [Tue, 13 Jun 2023 09:58:26 +0000 (12:58 +0300)]
subparse: Skip after the end of a valid closing tag instead of only skipping `<`
This is a small optimization and avoids restarting the next parsing
iteration on already accepted data.
On its own it would also fix ZDI-CAN-20968 (see previous commit) but the
previous commit independently is also a valid fix for it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4898>
Sebastian Dröge [Tue, 13 Jun 2023 09:53:13 +0000 (12:53 +0300)]
subparse: Look for the closing `>` of a tag after the opening `<`
Previously when fixing up subrip markip, we were looking from the start
of the remaining buffer instead. Due to how skipping over closing tags
works, the remaining buffer will still contain the closing `>` of the
previous tag so if a unexpected closing tag is found after another
closing tag, we would potentially do an out of bounds memmove().
Fixes ZDI-CAN-20968
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2662
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4898>
Sebastian Dröge [Tue, 13 Jun 2023 10:22:57 +0000 (13:22 +0300)]
tags: Don't allow image tags with G_MAXUINT32 length
This will cause an integer overflow a little bit further down because we
allocate a bit more memory to allow for a NUL-terminator.
The caller should've avoided passing that much data in already as it's
not going to be a valid image and there's likely not even that much data
available.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4897>
Sebastian Dröge [Tue, 13 Jun 2023 10:20:16 +0000 (13:20 +0300)]
flacparse: Avoid integer overflow in available data check for image tags
If the image length as stored in the file is some bogus integer then
adding it to the current byte readers position can overflow and wrongly
have the check for enough available data succeed.
This then later can cause NULL pointer dereferences or out of bounds
reads/writes when actually reading the image data.
Fixes ZDI-CAN-20775
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4897>
François Laignel [Mon, 19 Jun 2023 13:11:30 +0000 (15:11 +0200)]
qtdemux: parse Opus and dOps as qtdemux nodes and add size checks
This allows checking the nodes conformity and dumping parsed values.
Note: Audio Sample Entry version parsing and offset handling is handled as part
of `FOURCC_soun` common processing and in `qtdemux_parse_node`.
Also, only read `stream_count` and `coupled_count` when
`channel_mapping_family` != 0. See:
https://opus-codec.org/docs/opus_in_isobmff.html#4.3.2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4891>
François Laignel [Fri, 16 Jun 2023 08:29:28 +0000 (10:29 +0200)]
qtdemux: fix byte order for opus extension and version field type
The "Encapsulation of Opus in ISO Base Media File Format" [1] specifications,
§ 4.3.2 Opus Specific Box, indicates that data must be stored as big-endian.
[1] https://opus-codec.org/docs/opus_in_isobmff.html#4.3.2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4891>
François Laignel [Fri, 16 Jun 2023 08:02:16 +0000 (10:02 +0200)]
qtmux: fix byte order for opus extension
The "Encapsulation of Opus in ISO Base Media File Format" [1] specifications,
§ 4.3.2 Opus Specific Box, indicates that data must be stored as big-endian.
In `build_opus_extension`, `gst_byte_writer_put*_le ()` variants were used,
causing audio streams conversion to Opus in mp4 to offset samples due to the
PreSkip field incorrect value (29ms early in our test cases).
[1] https://opus-codec.org/docs/opus_in_isobmff.html#4.3.2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4891>
Andoni Morales Alastruey [Tue, 18 Apr 2023 07:59:36 +0000 (09:59 +0200)]
vtenc: remove duplicated framerate and size variables
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4888>
Andoni Morales Alastruey [Thu, 30 Mar 2023 13:38:22 +0000 (15:38 +0200)]
vtenc: apply DTS offset to ensure DTS <= PTS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4888>
Nicolas Dufresne [Fri, 24 Mar 2023 00:04:49 +0000 (20:04 -0400)]
h265parse: Don't override upstream framerate
The framerate should only be replaced (and corrected for alternating field)
when it is parsed from the bitstream. Otherwise, the upstream framerate
from caps should be trusted and assumed correct.
Related to gst-plugins-bad!2020
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352>
Nicolas Dufresne [Fri, 24 Mar 2023 00:02:16 +0000 (20:02 -0400)]
h265parse: Rename parsed_framerate to framerate_from_caps
That meaning of parsed_framerate is ambigious, it is set whenever the
framerate has been parsed from caps, which can be confused with being
parsed from the bitstream. Rename this as framerate_from_caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352>
Mengkejiergeli Ba [Wed, 15 Feb 2023 05:10:39 +0000 (13:10 +0800)]
h265parse: Fix to check returned value
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352>
Nicolas Dufresne [Fri, 16 Jun 2023 00:49:00 +0000 (20:49 -0400)]
medias: Bump the medias commit
See !4259
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4352>
Michael Olbrich [Thu, 11 May 2023 13:28:35 +0000 (15:28 +0200)]
sdpdemux: ensure that only one srcpad is created per stream
If two senders use the same multicast IP and port then new_session_pad()
may try to add a srcpad to the same stream twice.
stream->srcpad is updated but gst_element_add_pad() fails the second
time. As a result stream->srcpad points to a deleted object and
access in gst_sdp_demux_stream_free() fails with a segfault.
Just ignore the second pad. Nothing useful can be done with it anyway.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4873>
Marek Vasut [Sun, 11 Jun 2023 20:22:36 +0000 (22:22 +0200)]
kmssink: Add ST STM32 LTDC auto-detection
Add STM32 LTDC controller into list of auto-detected modules.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4872>
Marek Vasut [Sun, 11 Jun 2023 20:22:25 +0000 (22:22 +0200)]
kmssink: Add NXP i.MX8M Plus LCDIFv3 auto-detection
Add i.MX8M Plus LCDIFv3 controller into list of auto-detected modules.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4872>
Víctor Manuel Jáquez Leal [Fri, 19 May 2023 11:14:09 +0000 (13:14 +0200)]
vaapidecodebin: don't load vaapipostproc if not available
And remove the code for missing element since that element is part of the same
plugin, and if not available is because the driver doesn't provide it.
Fixes: #2580
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4871>
He Junyan [Fri, 28 Apr 2023 14:25:11 +0000 (22:25 +0800)]
va: h265enc: map the mbbrc to correct enum value in get_property()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4870>
He Junyan [Fri, 28 Apr 2023 14:26:34 +0000 (22:26 +0800)]
va: h264enc: map the mbbrc to correct enum value in get_property()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4870>
Jan Alexander Steffens (heftig) [Tue, 30 May 2023 13:10:11 +0000 (15:10 +0200)]
isomp4: Fix (E)AC-3 channel count handling
The muxer used a fixed value of 2 channels because the TR 102 366 spec
says they're to be ignored. However, the demuxer still trusted them,
resulting in bad caps.
Make the muxer fill in the correct channel count anyway (FFmpeg already
does) and make the demuxer ignore the value.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4773>
François Laignel [Wed, 14 Jun 2023 08:08:51 +0000 (10:08 +0200)]
srtpdec: fix Got data flow before segment event
A race condition can occur in `srtpdec` during the READY -> NULL transition:
an RTCP buffer can make its way to `gst_srtp_dec_chain` while the element is
partially stopped, resulting in the following critical warning:
> Got data flow before segment event
The problematic sequence is the following:
1. An RTCP buffer is being handled by the chain function for the
`rtcp_sinkpad`. Since, this is the first buffer, we try pushing the sticky
events to `rtcp_srcpad`.
2. At the same moment, the element is being transitioned from PAUSED to READY.
3. While checking and pushing the sticky events for `rtcp_srcpad`, we reach the
Segment event. For this, we try to get it from the "otherpad", in this case
`rtp_srcpad`. In the problematic case, `rtp_srcpad` has already been
deactivated so its sticky events have been cleared. We won't be pushing any
Segment event to `rtcp_srcpad`.
4. We return to the chain function for `rtcp_sinkpad` and try pushing the
buffer to `rtcp_srcpad` for which deactivation hasn't started yet, hence the
"Got data flow before segment event".
This commit:
- Adds a boolean return value to `gst_srtp_dec_push_early_events`: in case the
Segment event can't be retrieved, `gst_srtp_dec_chain` can return an error
instead of calling `gst_pad_push`.
- Replaces the obsolete `gst_pad_set_caps` with `gst_pad_push_event`. The
additional preconditions checked by previous function are guaranteed here
since we push a fixed Caps which was built in the same function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4860>
François Laignel [Thu, 15 Jun 2023 09:11:39 +0000 (11:11 +0200)]
srtpdec: backport for fix assertion 'parent->numsinkpads <= 1' failed
Commit
96450f4c uses the new function `gst_element_decorate_stream_id` which
was introduced by
39633967 in 1.23.
This commit backports
96450f4c with a simplified version of
`gst_element_decorate_stream_id_internal` as a private srtpdec function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4860>
Seungha Yang [Wed, 14 Jun 2023 16:36:25 +0000 (01:36 +0900)]
d3dvideosink: Fix navigation event leak
Fixing regression introduced in
6c2f6c3bd4dd525eb02c6d7000e84b76663d3daf
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4868>
Daniel Morin [Thu, 20 Apr 2023 21:31:32 +0000 (17:31 -0400)]
v4l2src: fix support for bayer format
- Define a new function that identify if the v4l2object is raw based
on pixel format
- Only consider setting delta flag on buffer if the video is not raw.
Sponsored by Living Optics Ltd.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4867>
Tim-Philipp Müller [Thu, 15 Jun 2023 09:14:55 +0000 (10:14 +0100)]
subprojects: bump orc to 0.4.34
Has important fixes for Windows and macOS.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4866>
Elliot Chen [Fri, 9 Jun 2023 09:51:28 +0000 (17:51 +0800)]
typefindhelper: avoid printing error log
some plugins such as wavparse may need find if type of media
contained in the given data and will print error log if there
is no matching factory.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4859>
Tim-Philipp Müller [Tue, 13 Jun 2023 00:29:14 +0000 (01:29 +0100)]
asfmux: fix potentially unaligned write on 32-bit ARM
Fixes #2665
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4855>
Tim-Philipp Müller [Mon, 12 Jun 2023 18:24:15 +0000 (19:24 +0100)]
tests: rtpbin_buffer_list: fix possible unaligned read on 32-bit ARM
Fixes #2666
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4855>
ekwange [Tue, 30 May 2023 08:52:34 +0000 (17:52 +0900)]
v4l2: Change to query only up to V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS
Fix to prevent infinite querying.
There are devices that exceed V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS
but do not return EINVAL.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4851>
Haihua Hu [Tue, 13 Jun 2023 02:30:16 +0000 (10:30 +0800)]
glfilter: add parent meta to output buffer for input buffer
glfilter will unref input buffer after _transform() call immidiately,
but gpu may still reading input buffer for rendering because gl
api is executed async. Need hold reference for input buffer by
adding parent meta to output buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4846>
Xavier Claessens [Wed, 7 Jun 2023 18:24:46 +0000 (14:24 -0400)]
opus: Fix crash when getting unexpected channel position
gst_opus_channel_names is a static array with only 13 items.
GstAudioChannelPosition have bigger values than that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4843>
Sebastian Dröge [Fri, 9 Jun 2023 07:28:43 +0000 (10:28 +0300)]
ptp: Correctly parse clock ID from the commandline parameters in the helper
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2652
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4813>
William Manley [Wed, 1 Jun 2016 10:52:38 +0000 (11:52 +0100)]
basetextoverlay: Fix typo in "text-y" property description
Looks like a copy and paste error.
Co-authored-by: Fabian Orccon <cfoch.fabian@gmail.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4827>
Kevin Song [Fri, 9 Jun 2023 13:08:36 +0000 (21:08 +0800)]
appsink: unref gstbuffer in prev sample early
Appsink will unref prev sample in dispose function. Which is later
when V4L2 video decoder link with appsink as V4L2 video decoder
will close V4L2 device fd during GST_STATE_CHANGE_READY_TO_NULL.
If the video buffer return to V4L2 video decoder after the decoder
closed V4L2 device fd, V4L2 can't release the video frame buffer
which allocated with MMAP mode as application can't call
VIDIOC_REQBUFS 0 to release the video frame buffer by V4L2 driver.
The memory of the video frame will leak.
Unref the gstbuffer in stop() function, so V4L2 video decoder
can received all video frame buffers and release it before close
V4L2 device fd.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4820>
Seungha Yang [Thu, 8 Jun 2023 11:52:21 +0000 (20:52 +0900)]
filesink: Fix buffered mode writing
Fixing miscalculated buffer index when a buffer holds multiple
memories and it's not aligned to the vector size 16
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4817>
Matthew Waters [Wed, 7 Jun 2023 03:46:39 +0000 (13:46 +1000)]
gldownload: handle passthrough without a critical
With passthrough mode, gldownload/glbasefilter may not ever retrieve a
relevant GstGLContext as it doesn't actually query the surrounding
elements. Guard against that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4800>
Jochen Henneberg [Mon, 5 Jun 2023 05:29:57 +0000 (07:29 +0200)]
rtspsrc: Cleanup code for next pending command
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4799>
Jochen Henneberg [Mon, 5 Jun 2023 04:50:55 +0000 (06:50 +0200)]
rtspsrc: Do not try send dropped get/set parameter
If the set_get_param_q has been emptied we have to reset the cached
pending command to CMD_LOOP as we will not have the request parameters
anymore.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4799>
Seungha Yang [Tue, 6 Jun 2023 11:44:02 +0000 (20:44 +0900)]
tests: basesink: Add STREAM-START after EOS test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4797>
Seungha Yang [Mon, 5 Jun 2023 19:42:05 +0000 (04:42 +0900)]
basesink: Clear EOS flag on STREAM-START event
EOS -> STREAM-START -> new data flow is valid scenario
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4797>
Sebastian Dröge [Thu, 1 Jun 2023 12:16:47 +0000 (15:16 +0300)]
decklink: Implement Windows string conversion with common API between MinGW and MSVC
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
Sebastian Dröge [Thu, 1 Jun 2023 12:17:26 +0000 (15:17 +0300)]
decklink: Add some newlines in long defines
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
Maksym Khomenko [Wed, 31 May 2023 20:44:42 +0000 (23:44 +0300)]
decklink: Calculate string size before malloc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
Sebastian Dröge [Tue, 30 May 2023 12:27:21 +0000 (15:27 +0300)]
decklink: Use the macOS version of the SDK on macOS and not the Linux one
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
Sebastian Dröge [Tue, 30 May 2023 10:23:28 +0000 (13:23 +0300)]
decklink: Free SDK strings after usage on Linux
While they're const char* they still need to be freed like on Windows
and macOS and would be leaked otherwise.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
Sebastian Dröge [Tue, 30 May 2023 10:22:44 +0000 (13:22 +0300)]
decklink: Correctly handle SDK strings on macOS
They're CFStringRef* and not plain NUL-terminated char* C strings.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4786>
Hou Qi [Tue, 6 Jun 2023 01:24:37 +0000 (09:24 +0800)]
v4l2videodec: treat MPEG 1 format as MPEG 2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4787>
Nirbheek Chauhan [Thu, 18 May 2023 08:53:49 +0000 (14:23 +0530)]
meson: Support building qml6glsink on win32
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4762>
Nirbheek Chauhan [Wed, 3 May 2023 15:35:54 +0000 (21:05 +0530)]
meson: Add more qt options and eliminate all automagic
The qt5 and qt6 plugins will now correctly error out if you enable the
option, and you can also now explicitly ensure that wayland, x11,
eglfs support is actually functional by enabling the options. It was
too easy to build non-functional support for these.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4776>
Nirbheek Chauhan [Tue, 10 Jan 2023 19:41:06 +0000 (01:11 +0530)]
meson: Add build_rpath for qt5 plugin on macOS
Without this, the plugin cannot be loaded in a devenv because the
RPATH is not added to the plugin dylib. This RPATH will be stripped on
install, which is what we want.
When deploying apps, people are supposed to use `macdeployqt` to
create an AppBundle that bundles Qt for you and sets the RPATHs
correctly to point to that bundled Qt.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4776>
Nirbheek Chauhan [Thu, 1 Jun 2023 09:19:06 +0000 (14:49 +0530)]
docs: Use backticks to escape * in markdown
Otherwise it's interpreted as emphasis.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4763>
Nirbheek Chauhan [Tue, 30 May 2023 15:18:39 +0000 (20:48 +0530)]
python: More functions can be called before gst_init()
Configuration of our debugging system is possible before init, and in
fact is necessary too, otherwise the settings won't apply to logging
that happens during init.
For instance, since you cannot register a log function before you call
init in python, there is no way for you to log errors during init to
whatever logging service your app uses.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4763>
Nirbheek Chauhan [Tue, 30 May 2023 15:16:37 +0000 (20:46 +0530)]
python: auto-pep8 whitespace issues in overrides
Needed because the next commit edits this file.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4763>
Philippe Normand [Fri, 2 Jun 2023 13:20:05 +0000 (14:20 +0100)]
integration-testsuites/media: Update to tip of medias 1.22 branch
This fixes the new media file that was added to git, instead of git-lfs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4761>
Piotr Brzeziński [Thu, 1 Jun 2023 14:21:47 +0000 (16:21 +0200)]
pngdec: Fix 16bit RGB images display
Due to the alpha value being inserted with _BEFORE, we were ending up
with ARGB instead of RGBA, thus displaying completely wrong colours.
According to libpng's manual, "to add an opaque alpha channel, use filler=0xff
or 0xffff and PNG_FILLER_AFTER which will generate RGBA pixels".
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4759>
Philippe Normand [Sat, 27 May 2023 12:06:22 +0000 (13:06 +0100)]
oggdemux: vp8: Detect keyframe packets
decodebin3 drops data on video streams until a keyframe or header is detected,
so for Ogg/VP8 we now need to correctly flag and signal keyframes downstream.
The first buffer pushed from each src pad also has the HEADER flag set.
Fixes playback of
https://github.com/web-platform-tests/wpt/raw/master/media/test.ogv in playbin3.
Fixes #1418
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4745>
Philippe Normand [Thu, 1 Jun 2023 11:37:56 +0000 (12:37 +0100)]
integration-testsuites: Update to medias subproject 1.22
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4745>
Guillaume Desmottes [Wed, 31 May 2023 14:26:45 +0000 (16:26 +0200)]
streamsynchronizer: check reset-time when handling FLUSH_STOP
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4755>
Guillaume Desmottes [Wed, 31 May 2023 14:05:48 +0000 (16:05 +0200)]
streamsynchronizer: reset eos on STREAM_START
self->eos was never reset after streamsynchronizer has sent EOS
(except on explicit flush or switching back to PAUSED).
As a result, synchronization was broken if new streams were pushed later
as gst_stream_synchronizer_wait() does not wait if self->eos is set.
Fix this by reseting self->eos on STREAM_START as that means a new
stream is being sent upstream and so a new EOS will follow later on.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4755>
Colin Kinloch [Fri, 26 May 2023 12:26:42 +0000 (13:26 +0100)]
waylandsink: Emit "map" signal boarder surface is ready
This allows gtkwaylandsink to queue a draw of its gtk widget at the
correct time, avoiding a race.
Signed-off-by: Colin Kinloch <colin.kinloch@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4754>
Thibault Saunier [Tue, 18 Apr 2023 21:19:16 +0000 (17:19 -0400)]
ges: tests: Use assert_equals_int where it makes sense
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4743>
Thibault Saunier [Fri, 28 Apr 2023 15:55:45 +0000 (17:55 +0200)]
ges: launcher: Never put sinks in a GstPipeline
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4743>
Matthew Waters [Mon, 29 May 2023 07:01:01 +0000 (17:01 +1000)]
qt/glrenderer: don't attempt to use QWindow from non-Qt main thread
Use QObject::deleteLater() to schedule deletion in the main thread.
Remove the moveToThread of the QWindow.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4744>
Jan Alexander Steffens (heftig) [Thu, 25 May 2023 15:02:24 +0000 (17:02 +0200)]
fdkaacdec: Support up to 5 rear channels
The `switch (n_rear)` supports up to 5 rear channels, but our channel
set only had space for 3. Size the set properly to fix this.
This didn't actually cause any memory unsafety as `PUSH_CHAN` would stop
incrementing `n_rear` if the channel set is already full.
Thanks to @alatiera for noticing this.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4740>
Seungha Yang [Sun, 28 May 2023 17:14:44 +0000 (02:14 +0900)]
video-blend: Fix linking error with C++
Add missing extern "C"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4735>
Michael Olbrich [Wed, 24 May 2023 14:17:46 +0000 (16:17 +0200)]
flvmux: use the correct timestamp to calculate wait times
Since
c0bf793c05cf793aa18a8548cda702625e388115 ("flvmux: Set PTS based on
running time") the timestamp of the output buffer is already in running
time. So using that for 'srcpad->segment.position' does not work correctly
because gst_aggregator_simple_get_next_time() will convert it again with
gst_segment_to_running_time().
This means that the timestamp returned by
gst_aggregator_simple_get_next_time() may be incorrect. For example, if
flvmux is added to a already runinng pipeline then the timestamp is too
small and gst_aggregator_wait_and_check() returns immediately. As a result,
buffers may be muxed in the wrong order.
To fix this, use the PTS of the incoming buffer instead of the outgoing
buffer. Also add the duration as get_next_time() is supposed to return the
timestamp of the next buffer, not the current one.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4734>