platform/upstream/gstreamer.git
11 months agoRelease 1.22.4
Tim-Philipp Müller [Tue, 20 Jun 2023 16:42:25 +0000 (17:42 +0100)]
Release 1.22.4

11 months agoadaptivedemux2: Allow data dash+xml manifest for uri
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>

11 months agodvdspu: Avoid integer overflow when checking if enough data is available
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>

11 months agodvdspu: Make sure enough data is allocated for the available data
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>

11 months agosubparse: Skip after the end of a valid closing tag instead of only skipping `<`
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>

11 months agosubparse: Look for the closing `>` of a tag after the opening `<`
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>

11 months agotags: Don't allow image tags with G_MAXUINT32 length
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>

11 months agoflacparse: Avoid integer overflow in available data check for image tags
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>

11 months agoqtdemux: parse Opus and dOps as qtdemux nodes and add size checks
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>

11 months agoqtdemux: fix byte order for opus extension and version field type
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>

11 months agoqtmux: fix byte order for opus extension
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>

11 months agovtenc: remove duplicated framerate and size variables
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>

11 months agovtenc: apply DTS offset to ensure DTS <= PTS
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>

11 months agoh265parse: Don't override upstream framerate
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>

11 months agoh265parse: Rename parsed_framerate to framerate_from_caps
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>

11 months agoh265parse: Fix to check returned value
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>

11 months agomedias: Bump the medias commit
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>

11 months agosdpdemux: ensure that only one srcpad is created per stream
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>

11 months agokmssink: Add ST STM32 LTDC auto-detection
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>

11 months agokmssink: Add NXP i.MX8M Plus LCDIFv3 auto-detection
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>

11 months agovaapidecodebin: don't load vaapipostproc if not available
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>

11 months agova: h265enc: map the mbbrc to correct enum value in get_property()
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>

11 months agova: h264enc: map the mbbrc to correct enum value in get_property()
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>

11 months agoisomp4: Fix (E)AC-3 channel count handling
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>

11 months agosrtpdec: fix Got data flow before segment event
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>

11 months agosrtpdec: backport for fix assertion 'parent->numsinkpads <= 1' failed
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>

11 months agod3dvideosink: Fix navigation event leak
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>

11 months agov4l2src: fix support for bayer format
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>

11 months agosubprojects: bump orc to 0.4.34
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>

11 months agotypefindhelper: avoid printing error log
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>

11 months agoasfmux: fix potentially unaligned write on 32-bit ARM
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>

11 months agotests: rtpbin_buffer_list: fix possible unaligned read on 32-bit ARM
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>

11 months agov4l2: Change to query only up to V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS
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>

11 months agoglfilter: add parent meta to output buffer for input buffer
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>

11 months agoopus: Fix crash when getting unexpected channel position
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>

11 months agoptp: Correctly parse clock ID from the commandline parameters in the helper
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>

11 months agobasetextoverlay: Fix typo in "text-y" property description
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>

11 months agoappsink: unref gstbuffer in prev sample early
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>

11 months agofilesink: Fix buffered mode writing
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>

11 months agogldownload: handle passthrough without a critical
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>

11 months agortspsrc: Cleanup code for next pending command
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>

11 months agortspsrc: Do not try send dropped get/set parameter
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>

11 months agotests: basesink: Add STREAM-START after EOS test
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>

11 months agobasesink: Clear EOS flag on STREAM-START event
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>

11 months agodecklink: Implement Windows string conversion with common API between MinGW and MSVC
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>

11 months agodecklink: Add some newlines in long defines
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>

11 months agodecklink: Calculate string size before malloc
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>

11 months agodecklink: Use the macOS version of the SDK on macOS and not the Linux one
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>

11 months agodecklink: Free SDK strings after usage on Linux
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>

11 months agodecklink: Correctly handle SDK strings on macOS
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>

11 months agov4l2videodec: treat MPEG 1 format as MPEG 2
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>

11 months agomeson: Support building qml6glsink on win32
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>

11 months agomeson: Add more qt options and eliminate all automagic
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>

11 months agomeson: Add build_rpath for qt5 plugin on macOS
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>

11 months agodocs: Use backticks to escape * in markdown
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>

11 months agopython: More functions can be called before gst_init()
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>

11 months agopython: auto-pep8 whitespace issues in overrides
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>

11 months agointegration-testsuites/media: Update to tip of medias 1.22 branch
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>

11 months agopngdec: Fix 16bit RGB images display
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>

11 months agooggdemux: vp8: Detect keyframe packets
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>

11 months agointegration-testsuites: Update to medias subproject 1.22
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>

11 months agostreamsynchronizer: check reset-time when handling FLUSH_STOP
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>

11 months agostreamsynchronizer: reset eos on STREAM_START
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>

11 months agowaylandsink: Emit "map" signal boarder surface is ready
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>

11 months agoges: tests: Use assert_equals_int where it makes sense
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>

11 months agoges: launcher: Never put sinks in a GstPipeline
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>

11 months agoqt/glrenderer: don't attempt to use QWindow from non-Qt main thread
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>

11 months agofdkaacdec: Support up to 5 rear channels
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>

11 months agovideo-blend: Fix linking error with C++
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>

11 months agoflvmux: use the correct timestamp to calculate wait times
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>

11 months agojpegdec: be stricter when detecting interlaced video
Michael Olbrich [Mon, 31 Aug 2020 14:38:48 +0000 (16:38 +0200)]
jpegdec: be stricter when detecting interlaced video

There are broken(?) mjpeg videos that are incorrectly detected as
interlaced. This happens because 'info.height > height' (e.g. 1088 > 1080).

In the interlaced case info.height is approximately 'height * 2' but not
exactly because height is a multiple of DCTSIZE. Make the check more
restrictive but take the rounding effect into account.

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

11 months agojpegdec: decode the correct number of lines for interlaced frames
Michael Olbrich [Mon, 31 Aug 2020 14:12:33 +0000 (16:12 +0200)]
jpegdec: decode the correct number of lines for interlaced frames

For interlaced jpeg, gst_jpeg_dec_decode_direct() is called twice, once for each
field. In this case, stride[n] is plane_stride[n] * 2 to ensure that only every
other line is written. So the loop must stop at height / num_fields.

If the frame is really interlaced then continuing beyound this, is not harmful,
because jpeg_read_raw_data() will do nothing and return 0, so am info message is
printed.

However, if the frame is not actually interlaced, just misdetected as interlaced
then there is still data available from the second half of the frame. Now
line[0][j] is set to the scratch buffer. If the scratch buffer is not allocated
(because the height is a multiple of v_samp[0] * DCTSIZE) then the result is a
segfault due to a null-pointer dereference.

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

11 months agod3d11videosink: Fix error on pause and play
Seungha Yang [Wed, 24 May 2023 13:12:51 +0000 (22:12 +0900)]
d3d11videosink: Fix error on pause and play

The show_frame() can be called without prepare() call on paused to
playing state change. Thus the prepared buffer should not be cleared
on show_frame()

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

12 months agovideometa: Only validate the alignment only when it contains some info
He Junyan [Fri, 19 May 2023 07:20:16 +0000 (15:20 +0800)]
videometa: Only validate the alignment only when it contains some info

When the alignment contains nothing, all its fields are 0 and always
can be satisfied. So there is no need to validate it in this case.
And there are a lot of places just setting this alignment to default
all zero value, this validation generates lots of warnings.

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

12 months agov4l2videoenc: support force keyframe event in v4l2 encoder
YURI FEDOSEEV [Fri, 5 May 2023 07:12:46 +0000 (15:12 +0800)]
v4l2videoenc: support force keyframe event in v4l2 encoder

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

12 months agoalsasink: Fix stall for transition of alsasink from PAUSED to READY with USB speakerphone
Nicolas Beland [Mon, 15 May 2023 19:57:15 +0000 (15:57 -0400)]
alsasink: Fix stall for transition of alsasink from PAUSED to READY with USB speakerphone

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

12 months agovideo: convertframe: Add D3D11 specific conversion path
Seungha Yang [Mon, 4 Jul 2022 20:14:01 +0000 (05:14 +0900)]
video: convertframe: Add D3D11 specific conversion path

Add d3d11 conversion path to make gst_video_convert_sample() work
for GstD3D11Memory.

Note that just adding "d3d11download" to the exisitng code is
suboptimal from GstD3D11 point of view because:
* d3d11convert element can support crop/colorspace-conversion/scale
  all at once while existing software pipeline needs intermediate steps
  for the conversion
* "Process everything on GPU then download it to CPU memory" would be likely
  faster than "download GPU memory to CPU then processing it on CPU"

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

12 months agovideo: convertframe: Remove pointless const qualifier
Seungha Yang [Mon, 4 Jul 2022 19:42:57 +0000 (04:42 +0900)]
video: convertframe: Remove pointless const qualifier

const keyword for refcounted object does not very make sense
and unnecessary in this case

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

12 months agotestsrcbin: Remove spurious caps unref
Thibault Saunier [Thu, 18 May 2023 13:27:29 +0000 (09:27 -0400)]
testsrcbin: Remove spurious caps unref

Caps are cleared at the end of the function

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

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

12 months agoptp: Work around bug in ptpd in default configuration
Sebastian Dröge [Wed, 17 May 2023 07:01:30 +0000 (10:01 +0300)]
ptp: Work around bug in ptpd in default configuration

ptpd is defaulting to the hybrid mode, and was sending invalid multicast
PTP messages in that configuration until ce96c742a88792a8d92deebaf03927e1b367f4a9.
While this commit was made in 2015 there was no release in the meantime.

Work around this by detecting this case and defaulting to the default
values for the given intervals as given by the PTP standard.

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

12 months agoBack to development
Tim-Philipp Müller [Fri, 19 May 2023 11:36:19 +0000 (12:36 +0100)]
Back to development

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

12 months agoRelease 1.22.3
Tim-Philipp Müller [Fri, 19 May 2023 08:23:19 +0000 (09:23 +0100)]
Release 1.22.3

12 months agov4l2object: fix some errors in probe_caps_for_fromat
Shengqi Yu [Sat, 6 May 2023 03:17:43 +0000 (11:17 +0800)]
v4l2object: fix some errors in probe_caps_for_fromat

1, there is a mistake when print stepwise.max_height, fix it
2, modify the calculation of width and height under the step wise
condition

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

12 months agov4l2: videodec: Fix stalls on empty buffer
Nicolas Dufresne [Thu, 18 May 2023 15:58:51 +0000 (11:58 -0400)]
v4l2: videodec: Fix stalls on empty buffer

Drivers may signal end of sequence using an empty buffer and LAST buffer
set, or just an empty buffer on certain legacy implementation. When this
occured, we'd send GST_V4L2_FLOW_LAST_BUFFER were the code expected
GST_FLOW_EOS. Stop abusing GST_FLOW_EOS and port all the code to the new
GST_V4L2_FLOW_LAST_BUFFER.

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

12 months agogstplay: fix critical log when enable playbin3
Haihua Hu [Thu, 20 Apr 2023 08:41:11 +0000 (16:41 +0800)]
gstplay: fix critical log when enable playbin3

when play rtsp stream with playbin3 enabled, there are some critical logs:

g_object_get_is_valid_property: object class 'GstPlayBin3' has no property named 'n-video'
g_object_get_is_valid_property: object class 'GstPlayBin3' has no property named 'n-audio'
g_object_get_is_valid_property: object class 'GstPlayBin3' has no property named 'n-text'

self->collection could be NULL when READY->PAUSED if the pipeline
is live, then it will fallback to query playbin2's property,
we can call gst_play_streams_info_create_from_collection
directly, it will check self->collection internal.

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

12 months agogstplay: avoid getting property of playbin2 if subtitle_sid is null
Elliot Chen [Thu, 2 Mar 2023 10:09:54 +0000 (18:09 +0800)]
gstplay: avoid getting property of playbin2 if subtitle_sid is null

 There is a probability of getting "current-text" property
 when play with playbin3, and this property is available
 only in playbin2.

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

12 months agosplitmuxsrc: Make PTS contiguous by preference
Jan Schmidt [Mon, 15 May 2023 09:10:39 +0000 (19:10 +1000)]
splitmuxsrc: Make PTS contiguous by preference

Make splitmuxsrc deal better with stream reordering by
making the largest observed PTS contiguous in the
next fragment. Previously, it selected DTS, but then
aligned that with the segment start of the next fragment,
which holds PTS values - leading to glitches in
streams that don't have PTS = DTS at the start.

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

12 months agod3d11convert: Fix for runtime property update
Seungha Yang [Tue, 16 May 2023 13:56:15 +0000 (22:56 +0900)]
d3d11convert: Fix for runtime property update

Every setup happens in set_caps() method but basetransform will not
call the set_caps() if in/out caps were not changed

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

12 months agod3d11convert: protect 'add-borders' with mutex
Aleksandr Slobodeniuk [Fri, 17 Mar 2023 19:44:30 +0000 (20:44 +0100)]
d3d11convert: protect 'add-borders' with mutex

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

12 months agoRevert "meson: Install viv-fb GL headers, needed by i.MX"
Matthew Waters [Wed, 17 May 2023 11:43:21 +0000 (21:43 +1000)]
Revert "meson: Install viv-fb GL headers, needed by i.MX"

Missing pkg-config files and gir files as is required from any public
facing GL API for bindings reasons.

This reverts commit c95b7b8e7aa80276c0604dd3dd03eeda634f42b9.

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

12 months agodecodebin3: fix random hang when remove failing stream
Haihua Hu [Wed, 10 May 2023 08:34:16 +0000 (16:34 +0800)]
decodebin3: fix random hang when remove failing stream

When reconfigure_output_stream entry missing decoder path,
requested_selection should been update with what is really
active/selected immdiately with SELECTION_LOCK hold. So
use an optional message return from reconfigure_output_stream
and post it after release SELECTION_LOCK. This can make sure
other thread call to check_slot_reconfiguration will got
a correct requested_selection.

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

12 months agoavdtputil: Use int instead of int range for fixed bitpool values
Carlos Rafael Giani [Mon, 15 May 2023 11:47:16 +0000 (13:47 +0200)]
avdtputil: Use int instead of int range for fixed bitpool values

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1698

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

12 months agoRevert "webrtc/nice: support consent-freshness RFC7675"
Tim-Philipp Müller [Tue, 16 May 2023 15:17:05 +0000 (16:17 +0100)]
Revert "webrtc/nice: support consent-freshness RFC7675"

This reverts commit 0161687505156f54ff38b976668804ac2763a863.

This causes problems when the connection is congested because
libnice uses a too agressive timeout contrary to the spec, so
it's easy for consent to lapse and streaming to stop if there's
packet loss.

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

12 months agoqtmux: Fix extraction of CEA608 data from S334-1A packets
Sebastian Dröge [Mon, 15 May 2023 08:45:12 +0000 (11:45 +0300)]
qtmux: Fix extraction of CEA608 data from S334-1A packets

The index is already incremented by 3 every iteration so multiplying it
by 3 additionally on each array access is doing it twice and does not
work.

This caused invalid files to be created if there's more than one CEA608
triplet in a buffer, and out of bounds memory reads.

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

12 months agosctpenc: Fix potential shutdown deadlock
Johan Sternerup [Wed, 10 May 2023 10:00:15 +0000 (12:00 +0200)]
sctpenc: Fix potential shutdown deadlock

When transitioning from state PAUSED to READY, the sctpenc element
could previously be stuck in an endless loop trying to resend data
in case the underlying sctp stream was in the process of
resetting. usrsctp_sendv() would repeatedly return EAGAIN with the
result that 0 bytes were sent and then sctpenc would retry forever.

To bring sctpenc out of the resend loop we just need to inform the
sink pad that it is flushing, which is already done for the associated
data queue, but we also need to set the bools associated with the
sinkpads that are used as the loop criterion.

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

12 months agowebrtc: do not tear down data channel before data is flushed
Daniel Moberg [Tue, 18 Apr 2023 09:21:05 +0000 (11:21 +0200)]
webrtc: do not tear down data channel before data is flushed

Current implementation can in some cases detect
that all data is sent but in reality it is not,
leading to a push to an unlinked pad.
This is a race between the probe used to track data sent and a
call to close.

This patch sends an EOS before starting the close procedure
and then waits for the EOS event to come through to the
src pad before commencing with tear down.
This ensures that any queued data before EOS is flushed.

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

12 months agoosxvideosink: fix deadlock upon closing output window
Piotr Brzeziński [Fri, 5 May 2023 16:27:14 +0000 (18:27 +0200)]
osxvideosink: fix deadlock upon closing output window

Invoking gst_osx_video_sink_osxwindow_destroy() can currently cause a deadlock
because showFrame() keeps trying to get the same lock as well. Moving the lock
closer to where it's actually needed seems to be enough to fix the issue for now.

Reported-by: Alexande B <abobrikovich@gmail.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4627>

12 months agoavviddec: Temporarily unlock stream lock while flushing buffers
Sebastian Dröge [Fri, 12 May 2023 06:50:04 +0000 (09:50 +0300)]
avviddec: Temporarily unlock stream lock while flushing buffers

This can call into the decoder again from other threads and try to take
the stream lock from there, which would cause a deadlock.

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

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

12 months agoparse/grammar: fix missing unref of looked up child
Mathieu Duponchelle [Fri, 12 May 2023 16:35:48 +0000 (18:35 +0200)]
parse/grammar: fix missing unref of looked up child

the target parameter of gst_child_proxy_lookup() is (transfer full)

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

12 months agompegpsdemux: Rework gap sending
Jan Schmidt [Tue, 4 Apr 2023 11:50:01 +0000 (21:50 +1000)]
mpegpsdemux: Rework gap sending

Take the gap logic from mpegtsdemux, and don't
send gap events on a stream that's outputting buffers with
no timestamps. Time isn't advancing, but the stream has
buffers - so it's not sparse.

Fixes #2374

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