platform/upstream/gstreamer.git
11 months agopbutils: Don't include default vp9 parameters in resulting codec mime string
Philippe Normand [Mon, 27 Nov 2023 10:36:01 +0000 (10:36 +0000)]
pbutils: Don't include default vp9 parameters in resulting codec mime string

According to the document defining the vp9 codec string, the optional fields
should all be present only if at least one of them has a non-default value.

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

11 months agovideorate: Don't forget last_ts on caps changes
Nicolas Dufresne [Fri, 17 Nov 2023 15:48:21 +0000 (10:48 -0500)]
videorate: Don't forget last_ts on caps changes

Whenever that caps changes does not imply that a new segment will start.
Don't reset the last_ts if only the caps have changed. This fixes issues
if you have a stream without only first frame with TS=0, and have resolution
change happening. This was a regression introduced by !3059, which issue was
described in #1352. The reported issue is still fix after this change.

Fixes #1034

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

11 months agoqsvdecoder: Fix stream format detection
Seungha Yang [Tue, 21 Nov 2023 12:14:12 +0000 (21:14 +0900)]
qsvdecoder: Fix stream format detection

Fixing typo

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

11 months agov4l2bufferpool: add lock as atomic operation for seek
jeri.li [Fri, 21 Apr 2023 01:58:36 +0000 (09:58 +0800)]
v4l2bufferpool: add lock as atomic operation for seek

When seek flush, gst v4l2 buffer pool flush is not atomic which will
lead double enqueue buffer (qbuf) issue, and v4l2 buffer pool qbuf is
also not atomic which will lead no free buffer found in the pool.
1. add lock for calculate enqueue number in streamon function
2. add lock for v4l2 capture end streamoff in pool flush function
3. lock the whole funciton of v4l2 buffer pool qbuf, then the buffer
   pool index and qbuf operation are atomic

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

11 months agogstbuffer: Add parent meta when a copy shares memory with parent
Xavier Claessens [Wed, 15 Mar 2023 13:11:51 +0000 (09:11 -0400)]
gstbuffer: Add parent meta when a copy shares memory with parent

When copying a buffer, for example with gst_buffer_make_writable(), the
new buffer might reference the same GstMemory as the src buffer,
making those memories not writable. If the src buffer gets disposed
first it should return to its buffer pool, but since some of its
memories are not writable it gets discarded and new buffer/memory gets
allocated.

Solves this by making the new buffer keep a reference to the src buffer,
that ensures that by the time the src buffer gets disposed no other
buffer are referencing its memories and it can thus return safely to its
pool.

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

11 months agogstbuffer: Unref memories before metas
Xavier Claessens [Fri, 10 Mar 2023 06:18:12 +0000 (22:18 -0800)]
gstbuffer: Unref memories before metas

gst_buffer_add_parent_buffer_meta() is used when a GstBuffer uses
GstMemory from another buffer that was allocated from a pool. In that
case we want to make sure the buffer returns to the pool when the memory
is writable again, otherwise a copy of the memory is created. That means
the child buffer must drop its ref to the memory first, then drop the
ref to parent buffer so it can return to the pool when it is the only
owner of the memory.

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

11 months agortpklvdepay: Recover after invalid fragmented KLV unit
Robin Gustavsson [Wed, 7 Jun 2023 12:38:18 +0000 (14:38 +0200)]
rtpklvdepay: Recover after invalid fragmented KLV unit

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

11 months agoavviddec: Unlock stream lock while waiting for decoded frame
Seungha Yang [Thu, 16 Nov 2023 16:01:36 +0000 (01:01 +0900)]
avviddec: Unlock stream lock while waiting for decoded frame

FFmpeg might request buffer from other threads, it will result
in deadlock

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2558
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5683>

11 months agocamerabin: Fix source updates with user filters
Robert Mader [Sun, 22 Oct 2023 09:06:27 +0000 (11:06 +0200)]
camerabin: Fix source updates with user filters

Take the case into account when user filters have been set before the
source gets updated.

Note that the further linking of the filters, if present, happens below
in the `gst_camera_bin_check_and_replace_filter()` calls.

The audio filter is still affected by the same issue but left out for
now.

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

12 months agod3d11screencapturesrc: Fix wrong color with HDR enabled
Seungha Yang [Wed, 15 Nov 2023 13:41:47 +0000 (22:41 +0900)]
d3d11screencapturesrc: Fix wrong color with HDR enabled

Even if IDXGIOutput6 says current display colorspace is HDR,
captured texture via IDXGIOutputDuplication::AcquireNextFrame()
is converted frame by OS unless we use IDXGIOutput5::DuplicateOutput1()
with DXGI_FORMAT_R16G16B16A16_FLOAT format, in order for captured
frame to be scRGB color space. Then application should perform
tonemap operation based on reported display white level, color primaries, etc.

Since we don't have any tonemapping implementation, ignores colorimetry
reported by IDXGIOutput6.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3128
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5679>

12 months agogstpad: Recheck pads when linking after temporary unlock
Daniel Moberg [Wed, 15 Nov 2023 10:03:52 +0000 (10:03 +0000)]
gstpad: Recheck pads when linking after temporary unlock

This commit makes sure that pads are valid for linking
after the pads has been temporarily unlocked in the linking process.
Not doing this opens up for a race condition where
pads potentially can be linked twice.

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

12 months agoqtdemux: Ignore raw audio streams when adjusting seek
Piotr Brzeziński [Thu, 29 Jun 2023 13:20:29 +0000 (15:20 +0200)]
qtdemux: Ignore raw audio streams when adjusting seek

Because we treat raw audio chunks/samples as keyframes, they were interfering
with seek time adjustment.
Became apparent when the accompanying video stream was I-frame only,
for example ProRes.
Since raw audio streams can be seeked freely, it's fine to just ignore them here,
giving priority to the real keyframes in the video stream.

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

12 months agoplayer: Without dispatcher emit signals directly instead of via the default main...
Sebastian Dröge [Wed, 15 Nov 2023 17:13:08 +0000 (19:13 +0200)]
player: Without dispatcher emit signals directly instead of via the default main context

This is how it was documented and how it worked before the port to GstPlay.

Without this, applications expecting signals to be emitted directly
without anything running the main context will simply not receive any
signals.

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

12 months agortpac3depay: should output audio/x-ac3 not audio/ac3
Tim-Philipp Müller [Thu, 12 Oct 2023 16:23:00 +0000 (17:23 +0100)]
rtpac3depay: should output audio/x-ac3 not audio/ac3

audio/x-ac3 is the canonical media format in GStreamer.
audio/ac3 is sometimes accepted as input (e.g. in rtpac3pay
or ac3parse), but shouldn't be output.

Fixes #3038.

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

12 months agodcaparse: keep upstream buffer meta
Dongyun Seo [Tue, 14 Nov 2023 06:36:34 +0000 (15:36 +0900)]
dcaparse: keep upstream buffer meta

Some audio decoders cannot decode DTS stream if there is no
valid timestamp. So, keep upstream buffer meta.

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

12 months agowebrtcsdp: Don't require fingerprint in inactive media
Olivier Crête [Mon, 8 Aug 2022 18:46:16 +0000 (14:46 -0400)]
webrtcsdp: Don't require fingerprint in inactive media

Inactive m-lines don't need a fingerprint as they may not
have a connection.

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

12 months agowebrtcsdp: Remove comparison between media and session fingerprint
Olivier Crête [Tue, 12 Oct 2021 15:29:21 +0000 (11:29 -0400)]
webrtcsdp: Remove comparison between media and session fingerprint

The code seems to validate that the media-level fingerprint matches
the fingerprint of the previous media or of the whole session. There
is no such requirement in any RFC I found. The session-session one
is just meant to act as a fallback when there is no media-level
fingerprint.

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

12 months agoplay: Automatically flush the bus when disposing the signal adapter
Sebastian Dröge [Sat, 11 Nov 2023 12:10:37 +0000 (14:10 +0200)]
play: Automatically flush the bus when disposing the signal adapter

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

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

12 months agoBack to development
Tim-Philipp Müller [Mon, 13 Nov 2023 14:57:09 +0000 (14:57 +0000)]
Back to development

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

12 months agoRelease 1.22.7 upstream/1.22.7 1.22.7
Tim-Philipp Müller [Mon, 13 Nov 2023 11:04:22 +0000 (11:04 +0000)]
Release 1.22.7

12 months agomxfdemux: Store GstMXFDemuxEssenceTrack in their own fixed allocation
Sebastian Dröge [Thu, 19 Oct 2023 21:09:57 +0000 (00:09 +0300)]
mxfdemux: Store GstMXFDemuxEssenceTrack in their own fixed allocation

Previously they were stored inline inside a GArray, but as references to
the tracks were stored in various other places although the array could
still be updated (and reallocated!), this could lead to dangling
references in various places.

Instead now store them in a GPtrArray in their own allocation so each
track's memory position stays fixed.

Fixes ZDI-CAN-22299

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

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

12 months agocodecparsers: av1: Clip max tile rows and cols values
Benjamin Gaignard [Wed, 4 Oct 2023 09:14:38 +0000 (11:14 +0200)]
codecparsers: av1: Clip max tile rows and cols values

Clip tile rows and cols to 64 as describe in AV1 specification.

Fixes ZDI-CAN-22226 / CVE-2023-44429

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

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

12 months agoaudiobuffersplit: disable max-silence-time if set to 0
Guillaume Desmottes [Fri, 6 Oct 2023 11:49:15 +0000 (13:49 +0200)]
audiobuffersplit: disable max-silence-time if set to 0

According to the property documentation max-silence-time is supposed to be
disabled when set to 0 but it was not.

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

12 months agogst-validate: Fixed compatibility with Python 3.12
Jordan Yelloz [Tue, 7 Nov 2023 18:42:19 +0000 (11:42 -0700)]
gst-validate: Fixed compatibility with Python 3.12

config.readfp() was removed in python 3.12 and config.read_file() does the same
thing and has been available since Python 3.2

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

12 months agobasetextoverlay: Fix overlay never rendering again if width reaches 1px
Piotr Brzeziński [Mon, 6 Nov 2023 23:27:57 +0000 (00:27 +0100)]
basetextoverlay: Fix overlay never rendering again if width reaches 1px

If text width ever reached 1px, for example after resizing the output window, the overlay would stop rendering
and never return again. The 1px condition itself does not seem to make much sense here anyway.

This was a chain of events: width reached 1, so the composition was set to NULL. Then, after resizing the output window,
push_frame() was called but would not attempt to renegotiate because composition is NULL. This caused the width/height
to never be updated again, as that only happens during negotiation, so the overlay was gone for good.

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

12 months agogstwayland: Don't depend on wayland-protocols
Balló György [Fri, 26 May 2023 17:38:13 +0000 (17:38 +0000)]
gstwayland: Don't depend on wayland-protocols

wayland-protocols are needed to build gstwayland, but not for dependent projects.

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

12 months agoadaptivedemux2: Do not submit_transfer when cancelled
Thibault Saunier [Wed, 4 Oct 2023 14:09:37 +0000 (11:09 -0300)]
adaptivedemux2: Do not submit_transfer when cancelled

There is a race condition where transfer has not been submitted yet while the
request is cancelled which leads to the transfer state going back to
`DOWNLOAD_REQUEST_STATE_OPEN` and the user of the request to get signalled about
its completion (and the task actually happening after it was cancelled) leading
to assertions and misbehaviours.

To ensure that this race can't happen, we start differentiating between the
UNSENT and CANCELLED states as in the normal case, when entering `submit_request`
the state is UNSENT and at that point we need to know that it is not because
the request has been cancelled.

In practice this case lead to an assertion in
`gst_adaptive_demux2_stream_begin_download_uri` because in a previous call to
`gst_adaptive_demux2_stream_stop_default` we cancelled the previous request and
setup a new one while it had not been submitted yet and then got a `on_download_complete`
callback called from that previous cancelled request and then we tried to do
`download_request_set_uri` on a request that was still `in_use`, leading to
something like:

```
 #0: 0x0000000186655ec8 g_assert (request->in_use == FALSE)assert.c:0
 #1: 0x00000001127236b8 libgstadaptivedemux2.dylib`download_request_set_uri(request=0x000060000017cc00, uri="https://XXX/chunk-stream1-00002.webm", range_start=0, range_end=-1) at downloadrequest.c:361
 #2: 0x000000011271cee8 libgstadaptivedemux2.dylib`gst_adaptive_demux2_stream_begin_download_uri(stream=0x00000001330f1800, uri="https://XXX/chunk-stream1-00002.webm", start=0, end=-1) at gstadaptivedemux-stream.c:1447
 #3: 0x0000000112719898 libgstadaptivedemux2.dylib`gst_adaptive_demux2_stream_load_a_fragment [inlined] gst_adaptive_demux2_stream_download_fragment(stream=0x00000001330f1800) at gstadaptivedemux-stream.c:0
 #4: 0x00000001127197f8 libgstadaptivedemux2.dylib`gst_adaptive_demux2_stream_load_a_fragment(stream=0x00000001330f1800) at gstadaptivedemux-stream.c:1969
 #5: 0x000000011271c2a4 libgstadaptivedemux2.dylib`gst_adaptive_demux2_stream_next_download(stream=0x00000001330f1800) at gstadaptivedemux-stream.c:2112
```

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

12 months agowasapi2device: Ignore activation failed device
Seungha Yang [Sat, 4 Nov 2023 10:36:06 +0000 (19:36 +0900)]
wasapi2device: Ignore activation failed device

Enumerates all devices even if activation error is detected

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3090
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5609>

12 months agowavparse: fix buffer leak with adtl tag
Johan Adam Nilsson [Mon, 9 Oct 2023 09:11:47 +0000 (09:11 +0000)]
wavparse: fix buffer leak with adtl tag

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3020
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5597>

12 months agolibde265dec: Only decode the main profile
He Junyan [Sat, 28 Oct 2023 14:55:04 +0000 (22:55 +0800)]
libde265dec: Only decode the main profile

The src caps of the libde265 is now fixed to I420, and so if the
stream is other format, such as 4:4:4 or 10 bits format, the pipeline
will crash because the dowstream element accesses the video buffer as
I420 format.
We now restrain the input caps to "main" profile, which only contains
4:2:0 8 bits stream.

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

12 months agov4l2codecs: Avoid QBUF/DQBUF struct timeval .tv_usec wrap-around at frame 1000000
Marek Vasut [Sat, 4 Nov 2023 02:16:47 +0000 (03:16 +0100)]
v4l2codecs: Avoid QBUF/DQBUF struct timeval .tv_usec wrap-around at frame 1000000

When decoding stream using hardware V4L2 decoder element, in any of the
currently supported formats, the decoding will fail once frame number
1000000 is reached. The reported error clearly indicates a wrap-around
occured, instead of receiving decoded frame 1000000, frame 0 is received
from the hardware V4L2 decoder driver.

The problem is actually not in the driver itself, but rather in gstreamer,
which uses `struct v4l2_buffer` member `.timestamp` in a special way. The
timestamp of buffers with encoded data added to the SINK (input) queue of
the driver is copied by the driver into matching buffers with decoded data
added to the SOURCE (output) queue of the driver. In fact, the timestamp
is not a timestamp at all, but rather in this special case, only part of
it is used as an incrementing frame counter.

The `.timestamp` is of type `struct timeval`, which is defined in
`sys/time.h` [1]. Only the `tv_usec` member of this structure is used
for the incrementing frame counter. However, suseconds_t tv_usec [2]
may be limited to range [-1, 1000000]:
"
[XSI] The type suseconds_t shall be a signed integer type capable of
      storing values at least in the range [-1, 1000000].
"
Therefore, once frame 1000000 is reached, a rollover occurs and decoding
fails.

Fix this by using both `struct timeval` members, `.tv_sec` and `.tv_usec`
with matching modular arithmetic, this way the failure would occur again
just short of 2^84 frames, which should be plenty.

[1] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_time.h.html
[2] https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html

A test case using stateless hardware h264 decoder, the WARN/ERROR output
in gstreamer log indicates a failure occurred. With this change, that
error no longer occurs and the WARN/ERROR are not present:
```
pc$ gst-launch-1.0 videotestsrc num-buffers=1001001 pattern=6 ! \
                   video/x-raw,width=16,height=16,format=I420 ! \
                   x264enc ! filesink location=/tmp/test.h264

dut$ GST_DEBUG="*:3" gst-launch-1.0 filesrc location=/tmp/test.h264 ! \
                                    h264parse ! v4l2slh264dec ! fakesink
...
0:03:51.393677606 12111     0x370df400 WARN      \
  v4l2codecs-decoder gstv4l2decoder.c:1157:gst_v4l2_request_set_done:<v4l2decoder2> \
  Requested frame 1000000, but driver returned frame 0.
0:03:51.394140597 12111     0x370df400 WARN      \
  v4l2codecs-decoder gstv4l2decoder.c:1157:gst_v4l2_request_set_done:<v4l2decoder2> \
  Requested frame 1000001, but driver returned frame 1.
0:03:51.394425216 12111     0x370df400 WARN      \
  v4l2codecs-decoder gstv4l2decoder.c:1157:gst_v4l2_request_set_done:<v4l2decoder2> \
  Requested frame 1000002, but driver returned frame 2.
0:03:51.394665211 12111     0x370df400 WARN      \
  v4l2codecs-decoder gstv4l2decoder.c:1157:gst_v4l2_request_set_done:<v4l2decoder2> \
  Requested frame 1000003, but driver returned frame 3.
0:03:51.394785833 12111     0x370df400 WARN      \
  v4l2codecs-h264dec gstv4l2codech264dec.c:1059:gst_v4l2_codec_h264_dec_output_picture:<v4l2slh264dec0> \
  error: Failed to decode frame 1000000
ERROR: from element /GstPipeline:pipeline0/v4l2slh264dec:v4l2slh264dec0: Failed to decode frame 1000000
```

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

12 months agoopenh264: Fail gracefully if openh264 encoder/decoder creation fails
Kalev Lember [Tue, 31 Oct 2023 16:59:32 +0000 (17:59 +0100)]
openh264: Fail gracefully if openh264 encoder/decoder creation fails

This can happen with the dummy "noopenh264" library that the freedesktop
flatpak runtime ships, and Fedora is planning on shipping as well. In
both cases the dummy implementation gets replaced with the actual
openh264 library that's downloaded directly from Cisco, but just to be
on safe side, this patch makes it careful to check the return values to
avoid crashing if the underlying library hasn't been swapped out yet.

The patch is taken from freedesktop-sdk and was originally written by
Valentin David <valentin.david@codethink.co.uk>.

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

12 months agowasapi2: Don't use global volume control object
Seungha Yang [Wed, 25 Oct 2023 12:37:24 +0000 (21:37 +0900)]
wasapi2: Don't use global volume control object

ISimpleAudioVolume controls volume of corresponding audio session
and there would be only single input/output audio session
in case of share-mode, which means that it controls audio volume of the
process. Instead, use IAudioStreamVolume interface which controls
volume of the stream.

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

12 months agod3d11videosink: Fix window switching in case of fullscreen mode
Seungha Yang [Sun, 29 Oct 2023 13:42:52 +0000 (22:42 +0900)]
d3d11videosink: Fix window switching in case of fullscreen mode

Other Windows applications allow window switching even when
an application window is in fullscreen mode. Also fixing
regression introduced in 15248d8b84db9e79e6d4587b212b12ca82fc4a6b
which makes restored window is always located at topmost
since we do not call SetWindowPos() anymore when restoring

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

12 months agod3d11screencapturesrc: Fix mouse cursor blending
Seungha Yang [Fri, 27 Oct 2023 16:23:36 +0000 (01:23 +0900)]
d3d11screencapturesrc: Fix mouse cursor blending

Ignore alpha component of source (mouse cursor texture)
when blending alpha channel, otherwise the background area of source
(which has zeros) will be written to render target. Then it will result
in black rectangle if output texture is converted to premultiplied alpha
texture

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

12 months agopngenc: mark output frames as I-frames
Tim-Philipp Müller [Tue, 24 Oct 2023 17:20:34 +0000 (18:20 +0100)]
pngenc: mark output frames as I-frames

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

12 months agopngenc: output one frame only in snapshot mode
Tim-Philipp Müller [Tue, 24 Oct 2023 17:12:44 +0000 (18:12 +0100)]
pngenc: output one frame only in snapshot mode

In snapshot mode pngenc should output exactly one frame
and then return FLOW_EOS to upstream. If upstream sends
more input frames before shutting down, it should keep
returning FLOW_EOS but not output any more encoded frames.

After a flushing seek it should output frames again though.

Fixes #3069.

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

12 months agodebugutils: Ensure we always expose a bin_to_dot_data implementation
Philippe Normand [Wed, 25 Oct 2023 12:58:55 +0000 (13:58 +0100)]
debugutils: Ensure we always expose a bin_to_dot_data implementation

Fixes a linking issue when building with `-Dgst_debug=false`.

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

12 months agomfvideoencoder: Fix typo in template caps
Seungha Yang [Wed, 25 Oct 2023 14:19:51 +0000 (23:19 +0900)]
mfvideoencoder: Fix typo in template caps

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3058
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5556>

12 months agoaggregator: Allow passing unparented pads to gst_aggregator_pad_is_inactive()
Sebastian Dröge [Thu, 19 Oct 2023 16:44:21 +0000 (19:44 +0300)]
aggregator: Allow passing unparented pads to gst_aggregator_pad_is_inactive()

It's very difficult to ensure that a pad is still child of the
aggregator during aggregation, so simply consider unparented pads as
inactive instead of asserting.

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

12 months agoaggregator: Also release clipped buffer when releasing an aggregator pad
Sebastian Dröge [Thu, 19 Oct 2023 16:43:26 +0000 (19:43 +0300)]
aggregator: Also release clipped buffer when releasing an aggregator pad

Instead of waiting until the pad is actually finalized.

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

12 months agoaggregator: Take pad lock while releasing buffers when removing pads
Sebastian Dröge [Thu, 19 Oct 2023 16:43:26 +0000 (19:43 +0300)]
aggregator: Take pad lock while releasing buffers when removing pads

Accessing the buffers in all other places requires the pad lock and not
taking it here can cause access to already freed buffers if there's
concurrent access from another thread.

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

12 months agoaudioaggregator: Make access to the pad list thread-safe while mixing
Sebastian Dröge [Thu, 19 Oct 2023 16:41:27 +0000 (19:41 +0300)]
audioaggregator: Make access to the pad list thread-safe while mixing

When mixing every single buffer the object lock is shortly released and
acquired again. In the meantime the pad list can become invalid because
a pad was removed or added, and equally the current pad might as well
have been finalized in the meantime.

To get around that, take a snapshot of all sinkpads before mixing and
work with that list of pads.

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

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

12 months agoglfiter: Protect GstGLContext access
Jan Schmidt [Thu, 5 Oct 2023 02:49:16 +0000 (13:49 +1100)]
glfiter: Protect GstGLContext access

The propose and decide allocation vfuncs are called directly from
basetransform and need to use the locked accessor function for
retrieving a reliable reference to the GstGLContext (if available)

Fixes spurious crashes on shutdown during pad reconfiguration

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

12 months agotsmux: Fix default get_es_descrs_func
Jan Alexander Steffens (heftig) [Tue, 10 Oct 2023 08:39:55 +0000 (10:39 +0200)]
tsmux: Fix default get_es_descrs_func

`tsmux_stream_default_get_es_descrs` is missing the `user_data`
parameter and shouldn't be cast to `TsMuxStreamGetESDescriptorsFunc`.

Prefer not casting at all to make sure we don't miss such an issue.

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

12 months agotsmux: Fix default new_stream_func
Jan Alexander Steffens (heftig) [Tue, 10 Oct 2023 08:22:44 +0000 (10:22 +0200)]
tsmux: Fix default new_stream_func

`tsmux_stream_new` is missing the `user_data` parameter and shouldn't be
cast to `TsMuxNewStreamFunc`.

Prefer not casting at all to make sure we don't miss such an issue.

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

12 months agotsmux: Add missing include
Jan Alexander Steffens (heftig) [Tue, 10 Oct 2023 08:12:44 +0000 (10:12 +0200)]
tsmux: Add missing include

We need `GstMpegtsPMTStream` here.

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

12 months agotsmux: Simplify tsmux_section_write_packet
Jan Alexander Steffens (heftig) [Mon, 16 Oct 2023 22:57:56 +0000 (00:57 +0200)]
tsmux: Simplify tsmux_section_write_packet

- Don't try to make the parameters match `GHFunc`. Use a dedicated
  callback for `g_hash_table_foreach`.
- Don't try to be clever with buffer memories. We're allocating a full
  packet anyway, might as well memcpy and save on a lot of complexity.

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

12 months agotsmux: tsmux_packet_out should always consume its buffer
Jan Alexander Steffens (heftig) [Mon, 16 Oct 2023 22:54:38 +0000 (00:54 +0200)]
tsmux: tsmux_packet_out should always consume its buffer

Consuming the buffer only when successful is an antipattern and easily
leads to leaks.

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

12 months agotsmux: Don't memset in pad_stream when writing a PCR packet
Jan Alexander Steffens (heftig) [Mon, 16 Oct 2023 21:54:20 +0000 (23:54 +0200)]
tsmux: Don't memset in pad_stream when writing a PCR packet

tsmux_write_ts_header will write a stuffing adaptation field, so we
don't need to prefill the buffer.

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

12 months agotsmux: Move out parameters of tsmux_write_ts_header
Jan Alexander Steffens (heftig) [Mon, 16 Oct 2023 21:52:48 +0000 (23:52 +0200)]
tsmux: Move out parameters of tsmux_write_ts_header

Move them to the end of the parameter list and also allow passing NULLs
to ignore the payload information, but assert that the payload length is
zero in this case.

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

12 months agotsmux: Fix two more uses of gst_buffer_map
Jan Alexander Steffens (heftig) [Mon, 16 Oct 2023 21:50:16 +0000 (23:50 +0200)]
tsmux: Fix two more uses of gst_buffer_map

The buffers should be used for writing.

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

12 months agoqmlglsrc: sync on the streaming thread
Matthias Fuchs [Tue, 17 Oct 2023 13:24:22 +0000 (15:24 +0200)]
qmlglsrc: sync on the streaming thread

After rendering a QML scene the qmlglsrc element copies the contents of
the scene to a GStreamer buffer. This happens on the Qt render thread.
Then it attaches a sync point to the destination buffer. This sync point
must be awaited by other threads which use the buffer later on. The
current implementation relies on the downstream elements to wait for the
sync point. However, there are situation where this does not work. The
GstBaseTransform e.g. copies the buffer metadata (which overwrites the
sync point without waiting for it) *before* waiting for the sync point.

This commit waits for the sync point inside the qmlglsrc element before
sending it downstream. The wait command is issued on the streaming
thread with the pipeline OpenGL context, i.e. it will synchronize with
the GStreamer OpenGL thread.

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

12 months agotsmux: Fix error handling in pad_stream
Jan Alexander Steffens (heftig) [Mon, 16 Oct 2023 13:41:48 +0000 (15:41 +0200)]
tsmux: Fix error handling in pad_stream

Don't leak the map or the buffer if we encounter an error.

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

12 months agotsmux: Fill padding packets with stuffing bytes
Jan Alexander Steffens (heftig) [Mon, 16 Oct 2023 13:31:04 +0000 (15:31 +0200)]
tsmux: Fill padding packets with stuffing bytes

Instead of leaving it uncleared, emitting probably old packet data but
potentially also random or sensitive application data.

Also fix the mapping mode.

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

12 months agov4l2codecs: h265: Fix entry_point_offsets array leak
Nicolas Dufresne [Tue, 17 Oct 2023 18:56:34 +0000 (14:56 -0400)]
v4l2codecs: h265: Fix entry_point_offsets array leak

This array was being leaked.

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

12 months agocodecs: h265: Do not free slice header before using it
Detlev Casanova [Tue, 17 Oct 2023 16:42:59 +0000 (12:42 -0400)]
codecs: h265: Do not free slice header before using it

The v4l2codecs H.265 decoder uses the
GstH265SliceHdr::entry_point_offset_minus1 array so make sure that it is not
freed before decoding the frame.

Before this patch, some H.265 input would segfault in
gst_v4l2_codec_h265_dec_fill_slice_params() when executing the line:

guint32 entry_point_offset = slice_hdr->entry_point_offset_minus1[i] + 1;

Make sure that the array is not freed before using it.

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

12 months agortspclientsink: Don't leak previous server_ip
Doug Nazar [Fri, 14 May 2021 02:25:55 +0000 (22:25 -0400)]
rtspclientsink: Don't leak previous server_ip

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

13 months agokmssink: Add TIDSS auto-detection
Rahul T R [Thu, 12 Oct 2023 10:55:59 +0000 (16:25 +0530)]
kmssink: Add TIDSS auto-detection

Add Texas Instruments TIDSS display controller into list of
auto-detected modules.

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

13 months agoimagesequencesrc: fix regular image deadlock
Stéphane Cerveau [Thu, 12 Oct 2023 14:05:18 +0000 (16:05 +0200)]
imagesequencesrc: fix regular image deadlock

With one regular image file path provided (without %05d),
the element was stuck in a dead loop counting the frames:

gst_image_sequence_src_count_frames

This allows to display any image file out of the element
for a given number of buffers.

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

13 months agod3d11converter: Fix 10/12bits planar output
Seungha Yang [Sun, 15 Oct 2023 11:30:22 +0000 (20:30 +0900)]
d3d11converter: Fix 10/12bits planar output

Simple division can result in 10/12bits overflow.

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

13 months agod3d11videosink: Fix rendering with initial fullscreen state
Seungha Yang [Wed, 11 Oct 2023 17:26:07 +0000 (02:26 +0900)]
d3d11videosink: Fix rendering with initial fullscreen state

Change fullscreen mode once the swapchain is fully configured

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

13 months agod3d11videosink: Fix toggling between fullscreen and maximized
Seungha Yang [Wed, 11 Oct 2023 14:29:04 +0000 (23:29 +0900)]
d3d11videosink: Fix toggling between fullscreen and maximized

Use GetWindowPlacement() and SetWindowPlacement() APIs
to remember and restore window status, such as maximized, position,
restore position, etc.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3016
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5466>

13 months agoflvmux: set the src segment position as running time
Guillaume Desmottes [Wed, 11 Oct 2023 12:47:33 +0000 (14:47 +0200)]
flvmux: set the src segment position as running time

We were already converting the pad last timestamp to running time but
not the segment position.
This segment position is used by gst_aggregator_simple_get_next_time()
to compute the waiting time when aggregating.

Those waiting times were wrong in my live pipeline using the system
clock, resulting in the aggregator to never wait at all.

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

13 months agov4l2: Fix tiled formats stride conversion
Nicolas Dufresne [Wed, 11 Oct 2023 13:36:11 +0000 (09:36 -0400)]
v4l2: Fix tiled formats stride conversion

While adding arbitrary tile support, a round up operation was badly
converter. This caused the Y component of the stride to be 0. This
eventually lead to a crash in glupoad preceded by the following
assertion.

  gst_gl_buffer_allocation_params_new: assertion 'alloc_size > 0' failed

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

13 months agov4l2codecs: Fix tiled formats stride conversion
Nicolas Dufresne [Tue, 10 Oct 2023 19:43:07 +0000 (15:43 -0400)]
v4l2codecs: Fix tiled formats stride conversion

While adding arbitrary tile support, a round up operation was badly
converter. This caused the Y component of the stride to be 0. This
eventually lead to a crash in glupoad preceded by the following
assertion.

  gst_gl_buffer_allocation_params_new: assertion 'alloc_size > 0' failed

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

13 months agoglfilter: Only add parent meta if inbuf != outbuf
Piotr Brzeziński [Mon, 9 Oct 2023 12:48:35 +0000 (14:48 +0200)]
glfilter: Only add parent meta if inbuf != outbuf

This was causing a memory leak in cases like `gltestsrc ! gltransformation scale-x=0.5 ! glimagesink`.
Parent meta was being added in assumption that those buffers are different, which was not the case here,
creating a reference loop and never freeing the buffer.

Co-authored-by: Matthew Waters <matthew@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5453>

13 months agodecklink: Fix broken COM string conversion
Seungha Yang [Mon, 9 Oct 2023 10:09:15 +0000 (19:09 +0900)]
decklink: Fix broken COM string conversion

WideCharToMultiByte return is the string length without null terminate
character if passed "cchWideChar" does not include the null terminate
character size. Instead of passing the exact string length, pass -1 so that
the API can understand the input string is null terminated already and
returned value from the API includes the character.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3023
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5446>

13 months agonvh265encoder: fix bounds for auto-select GPU enumeration
James Oliver [Thu, 5 Oct 2023 05:34:14 +0000 (13:34 +0800)]
nvh265encoder: fix bounds for auto-select GPU enumeration

Fixes the bounds-check for encoder auto-select GPU enumeration to be
between 0-7 instead of 0-6. This should allow 8-GPU machines to work
with nvautogpuh265enc for the last enumerated GPU.

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

13 months agonvh264encoder: fix bounds for auto-select GPU enumeration
James Oliver [Thu, 5 Oct 2023 05:29:49 +0000 (13:29 +0800)]
nvh264encoder: fix bounds for auto-select GPU enumeration

Fixes the bounds-check for encoder auto-select GPU enumeration to be
between 0-7 instead of 0-6. This should allow 8-GPU machines to work
with nvautogpuh264enc for the last enumerated GPU.

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

13 months agoflacenc: Correctly handle up to 255 cue entries
Sebastian Dröge [Thu, 28 Sep 2023 15:03:31 +0000 (18:03 +0300)]
flacenc: Correctly handle up to 255 cue entries

The counter was using a signed 8 bit integer, which was overflowing
after 127 entries. That was then passed as an unsigned 32 bit integer to
libflac, which caused it to be converted to a huge unsigned number.
That then caused an invalid memory access inside libflac.

As a bonus, signed integer overflow is undefined behaviour.

Instead, use an unsigned 8 bit integer. Once this overflows the existing
code already catches it and stops adding the cue. While FLAC__metadata_object_cuesheet_insert_track()
takes an unsigned 32 bit integer for the track number, FLAC__StreamMetadata_CueSheet_Track is
limiting it to an unsigned 8 bit integer.

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

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

13 months agointeraudiosink: Ensure adapters don't store buffers with audio meta
Philippe Normand [Wed, 27 Sep 2023 10:33:39 +0000 (12:33 +0200)]
interaudiosink: Ensure adapters don't store buffers with audio meta

The interaudiosrc might take buffers of different sizes from the audio adapter,
so keeping metas consistency would be an issue. So the sink now strips the audio
metas away and the src adds them back (for non-interleaved layouts only) when
taking buffers from the adapter.

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

13 months agointeraudiosrc: Add audio meta to buffers containing non-interleaved samples
Philippe Normand [Wed, 13 Sep 2023 14:11:32 +0000 (15:11 +0100)]
interaudiosrc: Add audio meta to buffers containing non-interleaved samples

Without this a downstream audioconverter wouldn't be able to map the
GstAudioBuffer prior to conversion.

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

13 months agoadaptivedemux2: Call GTasks's return functions for blocking tasks
Florian Zwoch [Tue, 26 Sep 2023 16:48:10 +0000 (16:48 +0000)]
adaptivedemux2: Call GTasks's return functions for blocking tasks

Gio/Task states the following:

If a GTask has been constructed and its callback set, it is an error to
not call g_task_return_*() on it. GLib will warn at runtime if this
happens (since 2.76).

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

13 months agosouphttpsrc: Chain finalize call to parent
Albert Sjölund [Wed, 27 Sep 2023 06:48:03 +0000 (08:48 +0200)]
souphttpsrc: Chain finalize call to parent

GstSoupSession finalize does not chain parent finalize,
causing it to leak memory, shown under g freeze notify.
In finalize method, ensure all branches call to parent
finalize.

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

13 months agod3d11decoder: Fix crash on negotiate() when decoder is not configured
Seungha Yang [Tue, 26 Sep 2023 16:12:01 +0000 (01:12 +0900)]
d3d11decoder: Fix crash on negotiate() when decoder is not configured

The negotiate() can be called by GstVideoDecoder baseclass on GAP event,
and decoder helper object might not be configured at the time
when negotiate() is called.

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

13 months agov4l2videodec: Correctly free caps to avoid memory leak
Hou Qi [Fri, 22 Sep 2023 07:57:28 +0000 (16:57 +0900)]
v4l2videodec: Correctly free caps to avoid memory leak

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

13 months agortspconnection: Ignore trailing whitespace in headers
Eric [Thu, 21 Sep 2023 12:12:47 +0000 (08:12 -0400)]
rtspconnection: Ignore trailing whitespace in headers

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

13 months agovideo-scaler, audio-resampler: downgrade 'can't find exact taps' to debug
Michiel Westerbeek [Wed, 20 Sep 2023 14:07:35 +0000 (16:07 +0200)]
video-scaler, audio-resampler: downgrade 'can't find exact taps' to debug

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

13 months agoBack to development
Tim-Philipp Müller [Wed, 20 Sep 2023 18:41:00 +0000 (19:41 +0100)]
Back to development

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

13 months agoRelease 1.22.6
Tim-Philipp Müller [Wed, 20 Sep 2023 17:10:57 +0000 (18:10 +0100)]
Release 1.22.6

13 months agomxfdemux: Check number of channels for AES3 audio
Sebastian Dröge [Thu, 10 Aug 2023 12:47:03 +0000 (15:47 +0300)]
mxfdemux: Check number of channels for AES3 audio

Only up to 8 channels are allowed and using a higher number would cause
integer overflows when copying the data, and lead to out of bound
writes.

Also check that each buffer is at least 4 bytes long to avoid another
overflow.

Fixes ZDI-CAN-21661, CVE-2023-40475

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

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

13 months agomxfdemux: Fix integer overflow causing out of bounds writes when handling invalid...
Sebastian Dröge [Thu, 10 Aug 2023 12:45:01 +0000 (15:45 +0300)]
mxfdemux: Fix integer overflow causing out of bounds writes when handling invalid uncompressed video

Check ahead of time when parsing the track information whether
width, height and bpp are valid and usable without overflows.

Fixes ZDI-CAN-21660, CVE-2023-40474

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

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

13 months agoh265parser: Fix possible overflow using max_sub_layers_minus1
Nicolas Dufresne [Wed, 9 Aug 2023 16:49:19 +0000 (12:49 -0400)]
h265parser: Fix possible overflow using max_sub_layers_minus1

This fixes a possible overflow that can be triggered by an invalid value of
max_sub_layers_minus1 being set in the bitstream. The bitstream uses 3 bits,
but the allowed range is 0 to 6 only.

Fixes ZDI-CAN-21768, CVE-2023-40476

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

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

13 months agowaylandsink: Fix cropping for video with non-square aspect ratio
Hugues Fruchet [Mon, 11 Sep 2023 16:12:28 +0000 (18:12 +0200)]
waylandsink: Fix cropping for video with non-square aspect ratio

Padding of unaligned content is still visible at right with some aspect-ratio.
Fix this by giving the original content resolution to wp_viewport_set_source()
instead of pixel aspect ratio scaled one.

Fixes !5259

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

13 months agopulsedeviceprovider: fix incorrect usage of GST_ELEMENT_ERROR
Olivier Blin [Tue, 19 Sep 2023 07:14:31 +0000 (09:14 +0200)]
pulsedeviceprovider: fix incorrect usage of GST_ELEMENT_ERROR

The provider is not a GStreamer element.

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

13 months agoh264decoder: Update latency dynamically
Seungha Yang [Wed, 13 Sep 2023 16:18:59 +0000 (01:18 +0900)]
h264decoder: Update latency dynamically

The actual number of reorder frames is unknown
unless frame reordering is disabled
(e.g., POC type 2 or constrained-* profiles).
Also derived maximum DPB size or max_num_reorder_frames in VUI
is not the upper bound of output delay.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2702
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5341>

13 months agoapplemedia: Also fix inconsistent pixel format definition for NV12
L. E. Segovia [Wed, 16 Aug 2023 13:43:56 +0000 (13:43 +0000)]
applemedia: Also fix inconsistent pixel format definition for NV12

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

13 months agoapplemedia: Fix pixel format for I420
L. E. Segovia [Tue, 15 Aug 2023 21:45:56 +0000 (21:45 +0000)]
applemedia: Fix pixel format for I420

In Intel Macs, using full range 8-bit 4:2:0 YCbCr results in a failure on
initialization. I've validated this to be the correct pixel format with FFmpeg:

https://github.com/FFmpeg/FFmpeg/blob/8653dcaf7d665b15b40ea9a560c8171b0914a882/libavutil/hwcontext_videotoolbox.c#L45

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

14 months agova: Fix in error logs functions mismatches
Víctor Manuel Jáquez Leal [Thu, 24 Aug 2023 10:12:09 +0000 (12:12 +0200)]
va: Fix in error logs functions mismatches

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

14 months agoandroidmedia/enc: handle codec-data before popping GstVideoCodecFrames
Matthew Waters [Fri, 15 Sep 2023 01:06:52 +0000 (11:06 +1000)]
androidmedia/enc: handle codec-data before popping GstVideoCodecFrames

Issue is that when amc was producing a codec-data buffer, a
GstVideoCodecFrame was being popped off the internal queue.  This meant
that the codec-data was being associated with the first input frame and
the second (first encoded buffer) output buffer with the second input
frame.  At the end (assuming one input produces one output which seems
to hold in my testing and how the encoder is currently implemented)
there would be an input frame missing and would be pushed without any
timing information.  This would lead to e.g. muxers rejecting the buffer
without PTS and failing to mux.

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

14 months agoandroidmedia/enc: add fixme log about partial frames
Matthew Waters [Fri, 15 Sep 2023 01:06:07 +0000 (11:06 +1000)]
androidmedia/enc: add fixme log about partial frames

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

14 months agoav1parser: Fix segmentation params update
Seungha Yang [Fri, 15 Sep 2023 18:13:33 +0000 (03:13 +0900)]
av1parser: Fix segmentation params update

Even if the segmentation feature value is not updated,
the parsed "segmentation_update_map" and "segmentation_temporal_update"
values should not be cleared as it's referenced during lower
level bitstream parsing. Also, don't use assert() in parser
unless it's clearly impossible condition.

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

14 months agortmp2: Allow NULL flash version, omitting the field
Jan Alexander Steffens (heftig) [Thu, 24 Aug 2023 15:40:42 +0000 (17:40 +0200)]
rtmp2: Allow NULL flash version, omitting the field

rtmpsink omits it by default. Allow us to do the same.

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

14 months agoandroidmedia: fix hevc codec profile registration
Thomas Schneider [Tue, 5 Sep 2023 12:15:04 +0000 (14:15 +0200)]
androidmedia: fix hevc codec profile registration

Fix the codec registration logic such that all supported
profiles are available instead of just the first in the
list.

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

14 months agov4l2: object: Handle video helper return value
Nicolas Dufresne [Tue, 5 Sep 2023 20:56:44 +0000 (16:56 -0400)]
v4l2: object: Handle video helper return value

gst_video_info_set_interlaced_format() can return an error if the
width/height causes integer overflow. Handle this case, so that we can
fail cleanly. This has been experienced while testing an in-progress
driver.

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

14 months agov4l2: bufferpool: Avoid warnings on empty last buffer
Nicolas Dufresne [Tue, 5 Sep 2023 20:51:24 +0000 (16:51 -0400)]
v4l2: bufferpool: Avoid warnings on empty last buffer

Some drivers will push an buffer flagged LAST but empty. In decoder
case, this results in an "producing too many buffer" warning, even
though the result is entirely correct. Detect this case in order to
signal EOS earlier and avoid this warning.

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

14 months agov4l2: bufferpool: Do not resize compressed buffer
Nicolas Dufresne [Tue, 5 Sep 2023 20:15:19 +0000 (16:15 -0400)]
v4l2: bufferpool: Do not resize compressed buffer

Avoid resizing compressed buffer to their maximum size. This fixes a
regression that caused valid but very large streams to be generated.

Fixes #2953

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

14 months agortpjitterbuffer: Avoid integer overflow in max saveable packets calculation with...
Sebastian Dröge [Thu, 7 Sep 2023 14:23:37 +0000 (17:23 +0300)]
rtpjitterbuffer: Avoid integer overflow in max saveable packets calculation with negative offset

The timestamp offset can be negative, and it can be a bigger negative
number than the latency introduced by the rtpjitterbuffer so the overall
timeout offset can be negative.

Using the negative offset for calculating how many packets can still
arrive in time when encountering a lost packet in an equidistant stream
would then overflow and instead of considering fewer packets lost a lot
more packets are considered lost.

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

14 months agocodecparsers: Fix MPEG-1 aspect ratio table
Akihiro Sagawa [Sun, 3 Sep 2023 13:21:30 +0000 (13:21 +0000)]
codecparsers: Fix MPEG-1 aspect ratio table

The values defined in ISO/IEC 11172-2 are different from those used so far.

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