=== release 1.26.2 ===
2025-05-29 23:56:43 +0100 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* RELEASE:
* gst-plugins-good.doap:
* meson.build:
Release 1.26.2
2025-04-29 09:43:58 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Use byte reader to parse mvhd box
This avoids OOB reads.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4394
Fixes CVE-2025-47183
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9133>
2025-05-23 05:07:38 -0400 Doug Nazar <nazard@nazar.ca>
* ext/adaptivedemux2/downloadhelper.c:
adaptivedemux2: Ensure all download tasks call g_task_return_*()
There is a small window during stopping when tasks have been add
to the transfer_requests queue, but never transfered to the
active_transfers array and causes the fallowing error:
GTask 0x7f2c4400e930 (source object: (nil), source tag: (nil)) finalized
without ever returning (using g_task_return_*()).
This potentially indicates a bug in the program.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9108>
2025-05-21 10:01:24 -0400 Doug Nazar <nazard@nazar.ca>
* ext/adaptivedemux2/dash/gstdashdemux.c:
gstreamer: A few small memory cleanups
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9101>
2025-05-25 19:31:22 +0900 Seungha Yang <seungha@centricular.com>
* gst/rtp/gstrtputils.c:
rtputils: Add debug category
Use rtputils specific debug category instead of "default"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9093>
2025-03-19 14:56:52 -0300 Thibault Saunier <tsaunier@igalia.com>
* gst/imagefreeze/gstimagefreeze.c:
imagefreeze: Reset 'flushing' state when receiving FLUSH_STOP
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9092>
2025-03-19 14:55:58 -0300 Thibault Saunier <tsaunier@igalia.com>
* gst/imagefreeze/gstimagefreeze.c:
imagefreeze: Set seqnum from segment too
This is the right behavior, setting from seeks is also OK but we should take the seqnums from segment into account too
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9092>
2025-05-14 14:42:19 -0400 Doug Nazar <nazard@nazar.ca>
* tests/check/elements/audiofirfilter.c:
* tests/check/elements/wavpackdec.c:
* tests/check/elements/wavpackenc.c:
tests: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9089>
2025-05-14 14:41:44 -0400 Doug Nazar <nazard@nazar.ca>
* gst/spectrum/gstspectrum.c:
spectrum: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9089>
2025-05-14 14:41:10 -0400 Doug Nazar <nazard@nazar.ca>
* gst/law/mulaw-decode.c:
* gst/law/mulaw-encode.c:
* gst/law/mulaw.c:
law: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9089>
2025-05-14 14:39:57 -0400 Doug Nazar <nazard@nazar.ca>
* ext/flac/gstflacdec.c:
flac: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9089>
2025-05-13 19:44:21 -0400 Doug Nazar <nazard@nazar.ca>
* gst/rtsp/gstrtspsrc.c:
gstrtspsrc: Free various props before being set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9088>
2025-03-30 01:41:10 -0400 Doug Nazar <nazard@nazar.ca>
* ext/adaptivedemux2/dash/gstmpdclient.c:
dash: mpdclient: Don't pass terminating NUL to adapter
libxml2 will complain if it detects any characters after the valid
XML, including a NUL byte.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9068>
2025-05-23 09:41:51 +0200 Branko Subasic <branko@axis.com>
* gst/matroska/matroska-mux.c:
matroskamux: Write stream headers before finishing file
In the rare case when we get EOS on all pads before we get any buffer we
would finish the file without writing headers, i.e. the file would be
corrupt. This patch makes sure that a header is always written.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9066>
2025-05-23 09:33:35 +0200 Jan Schmidt <jan@centricular.com>
* ext/qt6/meson.build:
meson: Add build_rpath for qt6 plugin on macOS
This is the same fix for qt6 that was done for the qt5 plugin
in gstreamer/gstreamer!3708
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9064>
2025-05-21 20:29:06 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* meson_options.txt:
meson: Add a monorepo-wide qt-method option and yield to it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9063>
2025-05-21 20:23:47 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* tests/examples/qt/meson.build:
* tests/examples/qt6/meson.build:
meson: Make qml/qml6 plugins use the right qt detection method
Otherwise they can pick up the wrong qt and cause two different Qt
instances to be used in the same program.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9063>
2025-05-17 15:24:29 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/videofilter/gstvideobalance.c:
videobalance: Implement basetransform meta transform function
This makes sure we can pass through more metas correctly, e.g.
GstVideoOverlayComposition meta.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9041>
2025-05-21 15:39:46 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: cmpd box is only mandatory for uncompressed video with uncC version 0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9040>
2025-05-13 11:27:23 +0900 Hou Qi <qi.hou@nxp.com>
* sys/v4l2/gstv4l2bufferpool.c:
v4l2: pool: Send drop frame signal after dqbuf success
This is a regression introduced by https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5479
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4424
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9036>
2025-05-06 11:17:52 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Add support for DNxHR
Apart from the fourcc it works the same as DNxHD and can be distinguished from
the beginning of each frame header.
ffmpeg uses the same codec ID for DNxHD and DNxHR so we use the same caps with
just an additional, optional profile field for the DNxHR profile.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3066
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-06 11:02:55 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/fourcc.h:
* gst/isomp4/qtdemux.c:
* gst/isomp4/qtdemux.h:
qtdemux: Parse content light level and mastering display info if available
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-03 18:07:18 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Use already parsed codec data boxes instead of parsing a second time
And parse common boxes in a central place.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-03 12:28:23 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/fourcc.h:
* gst/isomp4/qtdemux.c:
qtdemux: Add missing codec sample entry fourccs to qtdemux_parse_node()
This allows parsing the various common sample entry boxes like btrt, colr, pasp,
chan, chnl, etc. for extending the caps with additional information.
Also unify some cases, which as a side effect makes them more correct because
many were not checking for different versions of the boxes and the corresponding
different offsets.
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4403
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-06 09:30:03 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
* gst/isomp4/qtdemux_types.c:
qtdemux: Take Theora headers directly out of the already parsed nodes
Instead of parsing them yet another time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-05 22:24:33 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Don't parse fiel box a second time for JPEG-2000
It was already parsed above in general for all video codecs. Just put the number
of fields into the JPEG-2000 in the specific field.
As a side effect this also actually checks if enough data is available.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-05 22:20:41 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Remove second parsing of fiel box for JPEG
Exactly the same is already done some hundred lines above for all video codecs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-05 21:54:07 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Simplify parsing of SVQ3/VP31 boxes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-05 19:20:06 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Parse codec data for QDM2/QDMC correctly
First find the wave box then include its whole content instead of just including
everything from a random offset onwards.
Also actually do that for QDMC instead of leaving commented code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-05 18:55:47 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Use already parsed damr box for AMR NB/WB streams
Instead of parsing it again and possibly getting the offset for reading
it wrong.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-05 18:35:03 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Don't parse audio sample entry a second time in mp4a fallback case
These values were all passed a few hundred lines above already and can directly
be re-used here. The offset for the sample rate was also wrong.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-05 11:08:51 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux_tree.c:
* gst/isomp4/qtdemux_tree.h:
qtdemux: Add qtdemux_tree_get_child_by_index_full() helper function
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-04 20:13:58 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Fix endianness/alignment problems with parsing omwa sample description entries
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-04 19:54:41 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Handle stsd entry offset correctly for audio in qtdemux_parse_node()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-04 18:59:34 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Pass stsd entry node to caps creation functions
Also fix lpcm to only read its additional fields from sound sample description v2.
Previously it would read random data if a different stsd entry was used.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-04 18:47:07 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Don't parse invalid data from ISOBMFF AudioSampleEntryV1
The additional fields only exist in sound sample description v1, which
is only defined for MOV.
ISOBMFF has AudioSampleEntryV1 but it has the exact same layout as
AudioSampleEntry.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-04 16:22:38 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Don't retrieve video stsd entry multiple times
And remove various duplicated checks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-04 16:15:32 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Parse uncompressed video uncC / cmpd boxes from already parsed stsd entry
Also simplifies code and error checking considerably.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-04 15:58:03 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Don't retrieve enca/encv boxes a second time, wrongly
They need to be retrieved by index and they were already correctly retrieved
just above so let's just use that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-04 15:48:55 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Use already parsed stsd entries instead of parsing them again
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-05 17:28:20 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Fix typo in debug message
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-06 15:47:30 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Don't configure any channel-mask in fallback case with 1 channel
For mono we don't set any channel mask. Setting 0 would mean an unpositioned
layout with a single channel.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-03 17:49:06 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Add channel layouts to three more raw audio fourccs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-03 12:26:43 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/fourcc.h:
* gst/isomp4/qtdemux.c:
qtdemux: Parse chan box
This is another variant of providing channel positions.
Also if neither chan nor chnl boxes are found, configure a default channel
layout for raw audio tracks.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4403
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9006>
2025-05-17 11:15:11 +0200 Jan Schmidt <jan@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux.c:
adaptivedemux: Answer element-level SELECTABLE query
Add handling for the selectable query as an element query,
on top of the existing pad query handling. This is useful
for uridecodebin when handling stream collection messages
before any adaptivedemux source pads have been exposed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9012>
2025-05-17 11:13:33 +0200 Jan Schmidt <jan@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux.c:
adaptivedemux: Copy collection inside lock
When posting the collection message, don't access the shared
collection after releasing the manifest and track locks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9012>
2025-05-12 13:19:37 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/wavparse/gstwavparse.c:
wavparse: Error out correctly if no data tag is found until EOS in pull mode
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8986>
2025-05-09 10:49:20 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/wavparse/gstwavparse.c:
wavparse: Ignore EOS when parsing the headers
The file might be truncated or contain < 8 bytes of remaining data after the
last chunk.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4426
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8986>
2025-05-02 08:56:19 +0200 Alexander Slobodeniuk <aslobodeniuk@fluendo.com>
* gst/debugutils/gstnavigationtest.c:
* gst/debugutils/gstpushfilesrc.c:
* gst/multipart/multipartdemux.c:
* gst/rtp/gstrtpsbcpay.c:
* sys/v4l2/gstv4l2radio.c:
* sys/v4l2/gstv4l2sink.c:
* sys/ximage/gstximagesrc.c:
properties: add G_PARAM_STATIC_STRINGS where missing
"Hold on, I know you need to generate the registry, but let me just
create copies of all those strings first", Framework whispered
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8962>
2025-05-07 22:19:44 -0400 Olivier Crête <olivier.crete@collabora.com>
* gst/rtp/gstrtph264pay.c:
rtph264pay: Reject stream-format=avc without codec_data
Without the codec_data, it's impossible to know the size of the field
for the number of NALu in a buffer. And since nal_length_size is unkown
the stream can't be parsed and payloaded and we risk an infinite loop.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8959>
2025-05-04 13:41:56 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Check length of JPEG2000 colr box before parsing it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8937>
2025-05-03 18:24:49 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Remove obsolete TODO comment
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8937>
2025-05-06 12:41:37 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/interleave/interleave.c:
interleave: Don't hold object lock while querying caps downstream
This can easily lead to deadlocks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8934>
2025-04-01 23:03:02 +0200 Jakub Adam <jakub.adam@collabora.com>
* sys/v4l2/gstv4l2bufferpool.c:
* sys/v4l2/gstv4l2bufferpool.h:
v4l2: pool: fix assert when mapping video frame with DMA_DRM caps
Make sure the pool recognizes DMA_DRM caps and parses them into
GstVideoInfo that has GstVideoFormat corresponding to "drm-format"
in the caps.
Fixes
gst_video_frame_map_id: assertion 'info->finfo->format ==
meta->format' failed
Where the left side of the assertion was GST_VIDEO_FORMAT_DMA_DRM and
the right side was some GstVideoFormat converted from DRM fourcc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8922>
2025-04-03 02:24:13 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* ext/meson.build:
gst-examples: Port all webrtc examples to libsoup-3.0
Also do some indent changes, and add `static` while we're at it.
And move the libsoup wrap to 3.6.5, add nghttp2 wrap
We need to disable libsoup 3.0 tests because they fail to build on
Windows.
Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1115
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8919>
2025-04-01 17:58:14 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* ext/lame/meson.build:
* ext/meson.build:
meson: Add include_type: 'system' everywhere to squelch wrap warnings
Wrap dependencies add a ton of warnings with the latest GCC in Fedora
42. Squelch them by specifying that these dependencies are not
a part of the gstreamer project, and should be treated as system deps.
libsoup needs some porting work for the bump, and vorbis/lame are
already at their latest releases.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8919>
2025-04-28 13:24:45 +0900 Hou Qi <qi.hou@nxp.com>
* sys/v4l2/gstv4l2videoenc.c:
v4l2videoenc: report error only when buffer pool parameters are invalid
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8912>
2025-04-24 20:26:57 +0100 Tim-Philipp Müller <tim@centricular.com>
* meson.build:
Back to development after 1.26.1
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8890>
=== release 1.26.1 ===
2025-04-24 20:20:14 +0100 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* RELEASE:
* gst-plugins-good.doap:
* meson.build:
Release 1.26.1
2025-04-23 12:06:48 -0700 Eli Mallon <eli@aquareum.tv>
* gst/isomp4/qtdemux.c:
qtdemux: unref simple caps after use
Otherwise we leak a GSTCaps object every time we
use qtdemux on a file with Opus audio
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8880>
2024-02-21 17:19:45 +0900 Hou Qi <qi.hou@nxp.com>
* sys/v4l2/gstv4l2bufferpool.c:
* sys/v4l2/gstv4l2videodec.c:
v4l2: drop frames for those dequeued buffer with error flag
Some frames are dequeued with error flag, which may cause AV unsync if decoder
does not drop them as soon as possible. So add "output-error-dequeued" and
"capture-error-dequeued" signal for v4l2 to drop such frames.
Fixes #3031
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8869>
2025-04-16 11:58:45 +0200 Stefan Andersson <stefana@axis.com>
* gst/matroska/matroska-demux.c:
matroska-demux: Prevent corrupt cluster duplication
Make sure to always update next_cluster_offset, if next cluster offset
isn't known set it to zero. If next_cluster_offfset isn't updated it will
be the same as current and if the cluster parsing fails the same cluster
will be parsed again leading to duplication of the data in the cluster.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8856>
2025-04-10 11:31:28 +0200 Gustav Fahlen <gustafah@axis.com>
* gst/rtsp/gstrtspsrc.c:
gstrtspsrc: Do not emit signal 'no-more-pads' too early
Due to race condition it was previously possible that
gst_element_add_pad was not completed for each RTSP stream before
signal 'no-more-pads' was emitted.
Race condition explained:
Lets say two RTSP streams are created: Video and Audio.
1. Callback new_manager_pad is called for the Video stream =>
stream->added=TRUE.
all_added=FALSE because both streams are not yet added.
Call gst_element_add_pad and emit signal 'pad-added' for Video stream.
2. Callback new_manager_pad is called for Audio stream =>
stream->added=TRUE.
all_added=TRUE because both streams are added.
Call gst_element_add_pad and emit signal 'pad-added' for Audio stream.
3. Lets say gst_element_add_pad for the audio stream completes before
the video stream. Since the audio stream already has all_added==TRUE
this will result in the signal 'no-more-pads' to be emitted before
gst_element_add_pad for the video stream is completed.
Solution is to move the logic that sets added=True and checks if all
streams are added to after gst_element_add_pad. This will make sure
signal 'no-more-pads' is not emitted until all code in
gst_element_add_pad is completed for all streams.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8836>
2025-04-09 18:08:19 +1000 Jan Schmidt <jan@centricular.com>
* gst/rtsp/gstrtspsrc.c:
* gst/rtsp/gstrtspsrc.h:
rtspsrc: Don't error out on not-linked too early
Wait until all pads have been exposed before accepting a not-linked,
as pads are added one-by-one and downstream might not be interested
in the first ones to appear.
Follow up to
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7946
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8816>
2025-04-07 17:16:20 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
* gst/y4m/gsty4mencode.c:
y4menc: fix Y41B format
This a regression of commit fb0bea8f where output info variable was swapped with
input info variable by mistake.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8796>
2025-03-26 13:09:30 +0100 Ognyan Tonchev <ognyan@axis.com>
* gst/rtpmanager/gstrtpsession.c:
gstrtpsession: Do not push events while holding SESSION_LOCK
Doing so can trigger deadlocks
Fixes: #4328
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8781>
2025-03-26 13:04:41 +0100 Ognyan Tonchev <ognyan@axis.com>
* gst/rtpmanager/gstrtpsession.c:
* gst/rtpmanager/gstrtpsession.h:
gstrtpsession: protect recv_rtcp_segment_seqnum with a lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8781>
2025-03-26 12:34:35 +0100 Ognyan Tonchev <ognyan@axis.com>
* gst/rtpmanager/gstrtpsession.c:
gstrtpsession: use correct seqnum for the STREAM_START ans SEGMENT events
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8781>
2025-03-06 09:54:21 -0700 dukesook <devonsookhoo14@gmail.com>
* gst/isomp4/qtdemux.c:
* gst/isomp4/qtdemux.h:
qtdemux: Extend Uncompressed Lookup Table
- LUT now supports various subsampling, interleaves, and bit depths.
- Replaces stride with GstVideoInfo pre_info to represent original data.
- Simplifies gst_row_align_buffer() with gst_video_frame_copy().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8780>
2025-03-24 15:32:22 +0100 Stéphane Cerveau <scerveau@igalia.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: fix memory leak
The tmp caps should be unreffed as the template structure.
The leaks can be reproduced with
gst-launch-1.0 v4l2src num-buffers=1 ! autovideosink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8706>
2019-08-07 18:01:53 -0400 Doug Nazar <nazard@nazar.ca>
* gst/matroska/matroska-mux.c:
matroskamux: Add support for chroma siting
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8732>
2019-08-07 17:48:47 -0400 Doug Nazar <nazard@nazar.ca>
* gst/matroska/matroska-mux.c:
matroskamux: Add support for interlaced field order
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8732>
2019-08-07 17:47:29 -0400 Doug Nazar <nazard@nazar.ca>
* gst/matroska/ebml-write.c:
* gst/matroska/ebml-write.h:
* gst/matroska/matroska-mux.c:
* gst/matroska/matroska-mux.h:
* tests/check/elements/matroskamux.c:
matroskamux: Always use v4 for DocType version
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8732>
2019-07-29 23:16:26 -0400 Doug Nazar <nazard@nazar.ca>
* gst/matroska/matroska-demux.c:
* gst/matroska/matroska-ids.c:
* gst/matroska/matroska-ids.h:
matroskademux: Handle chroma site color information
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8732>
2025-03-26 22:00:43 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
* tests/check/elements/y4menc.c:
tests: y4menc: padded frame test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8716>
2025-03-26 12:31:52 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
* gst/y4m/gsty4mencode.c:
y4menc: use start() vmethod rather than change_state()
Also it wil call negotiate() vmethod at set_format()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8716>
2025-03-20 16:25:05 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
* gst/y4m/gsty4mencode.c:
y4menc: enable y4menc debugging category
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8716>
2025-03-27 14:07:25 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
* gst/y4m/gsty4mencode.c:
y4menc: handle padded frames
Since y4menc inherits from GstVideoEncoder, it negotiates upstream buffer pools
with GstVideoMeta support. Thus, certain decoders might use that meta for
frames with padded memory. Nonetheless y4menc assumes only linear memory video
frames, without padding.
This patch will copy frames using gst_video_frame_copy() if buffer has
GstVideoMeta or its video info is padded with its custom video info. Otherwise,
it ill call the agnostic gst_buffer_copy() for a shallow copy.
Supersedes: !5042
Fixes: #2765
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8716>
2025-03-27 12:46:54 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
* gst/y4m/gsty4mencode.c:
* gst/y4m/gsty4mencode.h:
y4menc: create an output video info without padding
The unpadded strides and offsets calculations for the video info are inspired
from y4mdec.
A boolean flags is toggled if the video info is padded for the given resolution.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8716>
2025-03-26 12:33:32 -0400 Arun Raghavan <arun@asymptotic.io>
* ext/qt6/gstqt6glutility.cc:
qt6: Add a missing newline in unsupported platform message
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8715>
2025-03-14 22:14:42 -0400 Doug Nazar <nazard@nazar.ca>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Free various props during cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8714>
2025-03-14 22:13:44 -0400 Doug Nazar <nazard@nazar.ca>
* sys/ximage/gstximagesrc.c:
ximagesrc: Free various props during cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8714>
2025-03-14 22:12:56 -0400 Doug Nazar <nazard@nazar.ca>
* gst/isomp4/gstqtmoovrecover.c:
qtmoovrecover: Free various props during cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8714>
2025-03-14 22:11:39 -0400 Doug Nazar <nazard@nazar.ca>
* ext/jack/gstjackaudiosink.c:
* ext/jack/gstjackaudiosrc.c:
jack: Free various props during cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8714>
2025-03-14 19:25:48 -0400 Doug Nazar <nazard@nazar.ca>
* ext/adaptivedemux2/dash/gstmpdadaptationsetnode.c:
* ext/adaptivedemux2/dash/gstmpdperiodnode.c:
* ext/adaptivedemux2/dash/gstmpdrepresentationbasenode.c:
* ext/adaptivedemux2/dash/gstmpdrepresentationnode.c:
* ext/adaptivedemux2/dash/gstmpdsegmenttemplatenode.c:
* ext/adaptivedemux2/dash/gstmpdsegmenturlnode.c:
dash: Free various props before set & during cleanup
In addition several members were being freed via xmlFree() even though
being created via g_value_dup_string(). Switch to g_free().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8714>
2025-03-14 19:14:43 -0400 Doug Nazar <nazard@nazar.ca>
* ext/pulse/pulsedeviceprovider.c:
* sys/directsound/gstdirectsounddevice.c:
* sys/oss/gstossdeviceprovider.c:
* sys/v4l2/gstv4l2deviceprovider.c:
all: Annotate *_set_property() contructor only props without free
Properties that are marked constructor only aren't required to be freed
before g_value_dup_string() as they can only be called once during construction.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8714>
2025-03-21 02:16:58 +0100 Jakub Adam <jakub.adam@collabora.com>
* ext/qt6/gstqml6glsrc.cc:
qml6glsrc: update buffer pool on renegotiation
When dynamic caps change in the pipeline leads to a new buffer pool
getting negotiated, the change is not propagated to Qt6GLWindow, which
keeps using the old, now defunct, pool.
Unset current pool on Qt6GLWindow in decide_allocation(). This will
trigger a switch to the new pool inside create().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8705>
2025-03-20 11:01:25 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Fix stsc size check in qtdemux_merge_sample_table()
There are 3 32bit integers per entry and not one more for all but the last.
Fixes a regression introduced in 5a9e80c01b4b49c6c7630a6d08b600114f38c0db
when playing back files that have one sample table entry per audio sample.
Merging the sample tables would've always failed because of the too strict size
check and one audio sample per GStreamer buffer would've been output, which
doesn't perform very well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8684>
2025-03-11 16:36:58 +0100 Alyssa Ross <hi@alyssa.is>
* sys/v4l2/gstv4l2object.c:
v4l2object: fix type mismatch when ioctl takes int
v4l2object->ioctl can either be set to v4l2_ioctl() or ioctl().
v4l2_ioctl() always takes the request number as unsigned long int, but ioctl()
may take (at least) unsigned long int, int, or unsigned, depending on libc.
This means that there isn't one function pointer type that can be used for
v4l2object->ioctl that will always be able to accomodate being set to either of
v4l2_ioctl() and ioctl(). It's therefore necessary to wrap one of them so that
both options can have the same type. This fixes an assignment from incompatible
pointer type error when building for musl.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8642>
2025-03-11 20:23:16 +0000 Tim-Philipp Müller <tim@centricular.com>
* meson.build:
Back to development after 1.26.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8618>
=== release 1.26.0 ===
2025-03-11 20:14:44 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* README.md:
* RELEASE:
* gst-plugins-good.doap:
* meson.build:
Release 1.26.0
2025-03-05 19:03:42 +0900 Hou Qi <qi.hou@nxp.com>
* sys/v4l2/gstv4l2object.c:
v4l2: object: Not consider GRAY as RGB
This is to fix colorimetry mismatch between v4l2object and video-info
when format is GRAY.
Fixes #4270
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8590>
2025-03-05 14:08:50 +0000 Devon Sookhoo <devonsookhoo14@gmail.com>
* gst/isomp4/qtdemux.c:
qtdemux: InterleaveType enum
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8578>
2025-03-04 10:14:23 -0700 dukesook <devonsookhoo14@gmail.com>
* gst/isomp4/qtdemux.c:
qtdemux: component to format lookup table
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8578>
2025-02-28 15:41:23 +0100 Jakub Adam <jakub.adam@collabora.com>
* ext/adaptivedemux2/gstadaptivedemux.c:
adaptivedemux2: wake waiting streams upon completed manifest downlaod
Fixes race when a live stream finishes playing all segments from a
dynamic manifest and waits for its update. If the manifest meanwhile
changes from dynamic to static and this update is received
asynchronously, periodic calls of gst_adaptive_demux_manifest_update_cb
will stop. As a result the blocked stream won't get notified about the
updated manifest and will remain stuck indefinitely.
Also removed the wake-up code from gst_adaptive_demux_manifest_update_cb
where it remained as a relic from previous implementation when manifest
updates were synchronous.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8587>
2025-03-04 15:01:24 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* ext/meson.build:
meson: Replace disabler dependencies with not-found dependencies
If a plugin gets disabled due to a `disabler()` dependency, the plugin
docs build itself will get disabled because `all_plugins_paths` will
become a disabler.
This was actually happening with opencv on systems that don't have
opencv available, and could happen with libsoup too if the build files
change in the future.
Let's avoid wasting hours of debugging for people. A not-found
dependency has the same effect.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8582>
2025-02-26 05:46:58 +0100 Jochen Henneberg <jochen@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Ignore non-zero values for UV/XY in transformation matrix
But write an info message about that. The values have been ignored
before !8127 as well.
Fixes #4252
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8559>
2025-02-24 14:20:33 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/multifile/gstsplitmuxsink.c:
splitmuxsink: Also increment fragment IDs when no filename is configured on the sink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8544>
2024-12-12 08:48:04 -0300 Thibault Saunier <tsaunier@igalia.com>
* docs/gst_plugins_cache.json:
* ext/adaptivedemux2/gstadaptivedemux-private.h:
* ext/adaptivedemux2/gstadaptivedemux-stream.c:
* ext/adaptivedemux2/gstadaptivedemux.c:
* ext/adaptivedemux2/gstadaptivedemux.h:
* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
adaptivedemux: Add 'backoff' logic for HTTP request
So that the user can configure waits between retries
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>
2024-12-11 22:00:56 -0300 Thibault Saunier <tsaunier@igalia.com>
* docs/gst_plugins_cache.json:
* ext/adaptivedemux2/gstadaptivedemux-private.h:
* ext/adaptivedemux2/gstadaptivedemux-stream.c:
* ext/adaptivedemux2/gstadaptivedemux.c:
* ext/adaptivedemux2/gstadaptivedemux.h:
* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
adaptivedemux2: Expose a `max-retries` property
So the user can configure what is the maximum number of time HTTP requests can
be performed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>
2024-12-11 17:44:20 -0300 Thibault Saunier <tsaunier@igalia.com>
* docs/gst_plugins_cache.json:
* ext/soup/gstsouphttpsrc.c:
* ext/soup/gstsouphttpsrc.h:
souphttpsrc: Add the notion of "retry-backoff"
So that the user can force waits between retries
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>
2024-12-11 07:46:09 -0300 Thibault Saunier <tsaunier@igalia.com>
* ext/soup/gstsouphttpsrc.c:
souphttpsrc: Retry on SERVICE_UNAVAILABLE and INTERNAL_SERVER_ERROR
Those might be temporary issue, for example s3 returns SERVICE_UNAVAILABLE high
load, but afterward a few tries the request will work, and it has been observed
that internal server error sometimes "fix themselves" so it makes sense to
also retry requests, in case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>
2024-12-10 23:54:07 -0300 Thibault Saunier <tsaunier@igalia.com>
* ext/adaptivedemux2/gstadaptivedemux-stream.c:
adaptivedemux2: Increment retry counter to stop after MAX_ERROR_COUNT
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>
2024-12-10 23:49:38 -0300 Thibault Saunier <tsaunier@igalia.com>
* ext/adaptivedemux2/dash/gstdashdemux.c:
dashdemux2: Do not set empty string 'track_id'
This is not needed and generates g_warning like:
```
Trying to set empty string on taglist field 'container-specific-track-id'. Please file a bug.
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8128>
2025-02-19 19:25:52 +0900 Elliot Chen <elliot.chen@nxp.com>
* gst/audiofx/gstscaletempo.c:
scaletempo: scaletempo: clip the timestamp or duration of gap event if needed
For some cases, maybe the timestamp of gap event is smaller than
segment start value or larger than segment stop value in playback.
And the timestamp plus duration may exceed segment boundary. Need
check and clip the timestamp or duration before recalculating.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8517>
2025-02-23 23:52:57 +0000 Tim-Philipp Müller <tim@centricular.com>
* meson.build:
Back to development after 1.25.90
=== release 1.25.90 ===
2025-02-23 23:44:10 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* RELEASE:
* gst-plugins-good.doap:
* meson.build:
Release 1.25.90
2025-02-23 16:56:05 +0000 Tim-Philipp Müller <tim@centricular.com>
* po/hr.po:
* po/lv.po:
* po/pt_BR.po:
* po/zh_TW.po:
gst-plugins-good: update translations
2025-02-19 11:54:48 -0500 Julian Bouzas <julian.bouzas@collabora.com>
* gst/rtp/gstrtph264depay.c:
rtph264depay: Improve properties doc to be the same as rtph265depay
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8343>
2025-02-19 11:47:50 -0500 Julian Bouzas <julian.bouzas@collabora.com>
* gst/rtp/gstrtph264depay.c:
* gst/rtp/gstrtph264depay.h:
rtph264depay: Improve request keyframe logic
We cannot rely only on the DISCONT flag when deciding whether we need to
request a new key frame or not because it might be that the packet that just
came in with the DISCONT flag is actually the start of a keyframe.
This patch improves the logic to be the same as rtph265depay, by only requesting
a key frame if the packet with the DISCONT flag is not the first one of a FU; or
if its the first one, only request it when we could drop packets due to a
missing key frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8343>
2025-01-22 12:54:45 -0500 Julian Bouzas <julian.bouzas@collabora.com>
* docs/gst_plugins_cache.json:
docs: update plugins cache with new rtph265depay properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8343>
2025-01-22 12:44:51 -0500 Julian Bouzas <julian.bouzas@collabora.com>
* gst/rtp/gstrtph265depay.c:
* gst/rtp/gstrtph265depay.h:
rtph265depay: Add request-keyframe property
Similar to the H264 depayloader, this property will request a new keyframe
when packet loss is detected.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8343>
2025-01-22 12:41:35 -0500 Julian Bouzas <julian.bouzas@collabora.com>
* gst/rtp/gstrtph265depay.c:
* gst/rtp/gstrtph265depay.h:
rtph265depay: Add wait-for-keyframe property
Similar to the H264 depayloader, this property will wait for the next keyframe
by dropping RTP packets if there is a missing packet.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8343>
2025-02-18 16:46:15 +1100 Matthew Waters <matthew@centricular.com>
* ext/qt/gstqtglutility.cc:
* ext/qt6/gstqt6glutility.cc:
qt/6: mark GstGLDisplayEGLs that would be created as foreign
Otherwise, GStreamer may preemptively call eglTerminate() before Qt has
finished using the EGLDisplay.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8504>
2025-02-18 14:04:09 +1100 Jan Schmidt <jan@centricular.com>
* tests/examples/rtsp/test-onvif.c:
test-onvif: Re-add mulawenc
Accidentally lost mulawenc from the rtppcmupay case
in the previous commit !8378
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8503>
2025-02-15 14:07:52 +1100 Brad Hards <bradh@frogmouth.net>
* gst/isomp4/qtdemux.c:
qtdemux: look up uncompressed component type
This fix handles the case where the order of components in the cmpd box
does not correspond to the order used for a specific track. That
is the case where the uncC component_index values are something
other than 0, 1, 2, 3.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8483>
2025-01-31 14:40:27 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/multifile/gstsplitmuxsink.c:
splitmuxsink: Be less strict about queueing negative durations
In case of temporary backwards timestamps durations can become negative. Instead
of erroring out, simply clip the durations and warn.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8390>
2024-10-23 14:21:22 +0100 Tim-Philipp Müller <tim@centricular.com>
* gst/isomp4/fourcc.h:
* gst/isomp4/qtdemux.c:
qtdemux: add mappings for Hap video codec
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3596
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7717>
2024-11-05 12:52:08 +0100 François Laignel <francois@centricular.com>
* docs/gst_plugins_cache.json:
* gst/rtpmanager/gstrtpjitterbuffer.c:
rtpjitterbuffer: add RFC7273 active status to stats
Checking whether rtpjitterbuffer actually timestamps the buffers according to
the RFC7273 clock definition and rtpjitterbuffer configuration required looking
at the DEBUG logs.
This commit adds an entry in the rtpjitterbuffer stats to indicate if
conditions are met for RFC7273 to be active.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7829>
2025-02-11 21:43:05 +1100 Brad Hards <bradh@frogmouth.net>
* gst/isomp4/qtdemux.c:
qtdemux: fix version 1 profile handling, add diagnostics
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8456>
2025-02-12 11:54:02 +1100 Brad Hards <bradh@frogmouth.net>
* gst/isomp4/qtdemux.c:
qtdemux: support uncompressed mono with component interleave
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8464>
2025-02-11 12:15:26 +0100 Jochen Henneberg <jochen@centricular.com>
* sys/v4l2/gstv4l2object.c:
v4l2: object: Make sure dmabuf_tmpl isn't used uninitialized
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8457>
2025-02-11 10:17:34 +0100 Ognyan Tonchev <ognyan@axis.com>
* gst/rtpmanager/rtpsession.c:
* gst/rtpmanager/rtpsource.c:
* tests/check/elements/rtpsession.c:
rtpmanager: skip RTPSources if last_rtime is not set yet
Fixes previous commit (which worked in GStreamer 1.22 but not in
1.24 and newer). Sorry for the noise, should have tested on
master before pusshing it :(
Fixes: #3918
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8455>
2025-02-11 11:52:05 +0700 sergey radionov <rsatom@gmail.com>
* sys/v4l2/gstv4l2bufferpool.c:
v4l2: bufferpool: update buffer state after group release
This fixes the state that lead to a flood of "newly allocated buffer
%u is not free" warnings.
Fixes #1185 #3184 #4037
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8454>
2025-02-11 11:05:50 +0700 sergey radionov <rsatom@gmail.com>
* sys/v4l2/gstv4l2allocator.c:
v4l2: allocator: added group pointer to "group-released" signal
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8454>
2025-02-11 11:03:18 +0700 sergey radionov <rsatom@gmail.com>
* sys/v4l2/gstv4l2allocator.c:
* sys/v4l2/gstv4l2allocator.h:
v4l2: allocator: G_TYPE defined for GstV4l2MemoryGroup
This is needed to pass the GstV4l2MemoryGroup structure through
a glib signal.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8454>
2025-02-07 18:53:11 +0100 Carlos Bentzen <cadubentzen@igalia.com>
* docs/gst_plugins_cache.json:
* gst/isomp4/atoms.c:
* gst/isomp4/atoms.h:
* gst/isomp4/gstqtmux.c:
* gst/isomp4/gstqtmuxmap.c:
qtmux: add support for VVC/H.266 video
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8436>
2025-02-10 11:31:48 +0900 Hou Qi <qi.hou@nxp.com>
* docs/gst_plugins_cache.json:
* sys/v4l2/gstv4l2object.c:
v4l2: Add BGR10A2_LE support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8154>
2025-02-08 16:32:31 +0100 Carlos Bentzen <cadubentzen@igalia.com>
* docs/gst_plugins_cache.json:
* gst/matroska/matroska-mux.c:
matroskamux: add support for VVC/H.266 video
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8441>
2025-02-08 16:19:58 +0100 Carlos Bentzen <cadubentzen@igalia.com>
* gst/matroska/matroska-demux.c:
matroskademux: add support for VVC/H.266 video
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8441>
2025-02-08 16:19:22 +0100 Carlos Bentzen <cadubentzen@igalia.com>
* gst/matroska/matroska-ids.h:
matroska: add V_MPEGI/ISO/VVC id
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8441>
2025-02-06 11:34:06 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com>
* gst/autodetect/gstautodetect.c:
autodetect: cleanup no-op check for "constructed" implementation
It's always implemented by GObject.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416>
2025-02-06 11:28:51 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com>
* gst/videofilter/gstvideoflip.c:
videoflip: fix chaining up GObject's constructed virtual method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416>
2023-07-22 01:14:52 +0200 Carlos Bentzen <cadubentzen@gmail.com>
* gst/isomp4/fourcc.h:
* gst/isomp4/qtdemux.c:
* gst/isomp4/qtdemux_types.c:
qtdemux: add support for VVC/H.266
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5088>
2025-02-09 17:47:32 +0000 Tim-Philipp Müller <tim@centricular.com>
* meson.build:
Back to development after 1.25.50
=== release 1.25.50 ===
2025-02-09 17:35:17 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* RELEASE:
* gst-plugins-good.doap:
* meson.build:
Release 1.25.50
2025-02-04 00:01:01 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* ext/adaptivedemux2/meson.build:
* ext/meson.build:
* ext/soup/meson.build:
soup: Ensure that libsoup RPATHs are added with Homebrew too
With the old method of adding build RPATHs, only the libsoup as
a subproject was supported. However, it's possible to use Homebrew for
libsoup too by adding libsoup as a dependency to the target (even
though we don't link to it).
Apple ld will not add a LC_LOAD_DYLIB entry for a library unless there
are symbols that need it because meson passes `-dead_strip_dylibs`, so
we can do this without issue.
As a bonus, this ensures the correct build RPATHs in all cases.
Additionally, we still need to explicitly add an LC_RPATH for the
installed case.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4027
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8403>
2024-11-26 11:17:17 -0700 dukesook <devonsookhoo14@gmail.com>
* gst/isomp4/fourcc.h:
* gst/isomp4/qtdemux.c:
* gst/isomp4/qtdemux.h:
qtdemux: Demux Uncompressed MP4
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7985>
2025-02-06 17:13:16 +0000 Philippe Normand <philn@igalia.com>
* gst/rtpmanager/gstrtpsession.c:
rtpsession: Fix heap-use-after-free of twcc_packets structure
This is a regression introduced by 90d99c7b52d9dc82a220cca1355f1dca3d57a838.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8427>
2025-01-29 20:42:55 +1100 Jan Schmidt <jan@centricular.com>
* tests/examples/rtsp/test-onvif.c:
test-onvif example: Add support for AAC backchannel
Detect upstream backchannel codec and support AAC in MPEG4-GENERIC
encapsulation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8378>
2025-02-03 14:00:23 +0100 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* docs/gst_plugins_cache.json:
* sys/v4l2/gstv4l2object.c:
v4l2: object: Use libgstvideo DMA DRM mapping
Complete the mapping by pulling GST/DRM mapping from libgstvideo. This removes
the duplication.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8404>
2025-01-25 04:29:54 +0100 Robert Mader <robert.mader@collabora.com>
* gst/matroska/matroska-demux.c:
matroskademux: Implement rotation tag support
Similar to qtdemux.
Tested against other Gst elements and MPV. Note that the later
apparently does not show correct results for flipped values.
In particular the Yaw value seems to get ignored by many clients.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8319>
2025-01-20 00:37:58 +0100 Robert Mader <robert.mader@collabora.com>
* gst/matroska/matroska-mux.c:
matroskamux: Implement rotation tag support
Similar to qtmux, but for mkv and webm containers.
Tested against other Gst elements and MPV. Note that the later
apparently does not show correct results for flipped values.
In particular the Yaw value seems to get ignored by many clients.
Can be tested with:
```
gst-launch-1.0 \
videotestsrc num-buffers=90 ! \
taginject tags="image-orientation=rotate-270" ! \
capsfilter caps=video/x-raw,width=640,height=480,max-framerate=30/1 ! \
videoconvert ! \
queue ! \
vp8enc ! \
queue ! \
webmmux ! \
filesink location=./test.webm
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8319>
2025-01-20 00:35:03 +0100 Robert Mader <robert.mader@collabora.com>
* gst/matroska/matroska-ids.h:
matroska: Add projection IDs
These will allow us to support rotate methods with matroska v4 and
the corresponding webm.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8319>
2025-02-02 16:09:06 +0100 Tomas Granath <tomas.granath@outlook.com>
* gst/matroska/matroska-demux.c:
matroskademux: Mark streams as EOS when outside the requested segment
Ensure that streams with no (more) data are marked as EOS when
advancing past the requested segment. Without this change the
EOS would be postponed to the end of the file in that case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8395>
2024-06-11 17:46:11 +0200 Ruben Gonzalez <rgonzalez@fluendo.com>
* meson.build:
meson: use nls option to ENABLE_NLS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7017>
2023-09-29 18:10:09 +0200 Tim-Philipp Müller <tim@centricular.com>
* scripts/update-orc-dist-files.py:
scripts: update update-orc-dist-files.py scripts for new gst-indent
And fix python indentation with autopep8
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5192>
2025-01-30 15:48:03 +1100 Jan Schmidt <jan@centricular.com>
* sys/v4l2/gstv4l2videodec.c:
v4l2vidoedec: Fix caps negotiation in non-DRM case
Append acquired_caps to the filter_caps being built,
instead of a 2nd copy of acquired_drm_caps.
Fix a regression introduced in
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633
when downstream doesn't support DRM output.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8385>
2025-01-27 16:38:38 +0100 Piotr Brzeziński <piotr@centricular.com>
* sys/osxaudio/gstosxcoreaudio.c:
osxaudio: Always expose max amount of channels with no positions
For outputs with a high number of channels, macOS has a bug where
initially CoreAudio will report incorrect positions for all channels,
but after you run Audio MIDI Setup and configure the speaker layout
there, macOS will always report those few as positioned, with no option
to revert that (other than deleting some internal files).
In such scenario our code would just ignore all the unpositioned
channels. Since you can only position max. 16 channels in macOS, if you
had more on your output device, those would be unusable.
This commit makes sure that in addition to the usual positioned layout
(if there is one), we will expose caps for a no-positions layout that
always has the maximum amount of channels available.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8311>
2025-01-16 17:27:50 +0100 Piotr Brzeziński <piotr@centricular.com>
* sys/osxaudio/gstosxcoreaudio.c:
osxaudio: Work around invalid channel positions from CoreAudio
By default, for devices with larger amounts of outputs, CoreAudio can
provide invalid channel labels/positions, simply by starting at 0 and
incrementing forward. For example, values 19 through 32 are not valid
according to the CoreAudioBaseTypes.h header, but if your device has >19
output channels, you will find CoreAudio using those values.
This is most likely a bug in CoreAudio, since in that case it should use
unpositioned labels (e.g. _Discrete_X) instead.
This commit aims to work around this by overriding all channels to be
unpositioned if the case above is detected.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8311>
2025-01-19 18:49:57 +0100 Robert Mader <robert.mader@collabora.com>
* gst/isomp4/gstqtmux.c:
qtmux: Implement rotation tag support
Mirroring the demux element and isomp4mux from gst-plugins-rs.
Tested against other Gst elements and MPV. Note that the later
apparently does not show correct results for flipped values.
Can be tested with:
```
gst-launch-1.0 \
videotestsrc num-buffers=90 ! \
taginject tags="image-orientation=rotate-90" ! \
capsfilter caps=video/x-raw,width=640,height=480,max-framerate=30/1 ! \
videoconvert ! \
queue ! \
openh264enc ! \
queue ! \
h264parse ! \
mp4mux ! \
filesink location=./test.mp4
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8371>
2025-01-28 15:08:03 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com>
* gst/isomp4/gstqtmux.c:
qtmux: fix critical warnings on negotiation error
This pipeline fails to negotiate on my PC:
gst-launch-1.0 v4l2src ! h264parse ! qtmux ! filesink location=t.mp4
When it happens some critical glib warnings are emitted:
-------------------------------
GStreamer-CRITICAL **: 15:09:03.485: gst_mini_object_copy: assertion 'mini_object != NULL' failed
GStreamer-CRITICAL **: 15:09:03.485: gst_mini_object_unref: assertion 'mini_object != NULL' failed
GStreamer-CRITICAL **: 15:09:03.485: gst_caps_get_structure: assertion 'GST_IS_CAPS (caps)' failed
GStreamer-CRITICAL **: 15:09:03.485: gst_structure_set_value: assertion 'structure != NULL' failed
GStreamer-CRITICAL **: 15:09:03.485: gst_mini_object_unref: assertion 'mini_object != NULL' failed
--------------------------------
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8374>
2025-01-26 13:16:51 +1100 Brad Hards <bradh@frogmouth.net>
* gst/debugutils/gsttaginject.c:
taginject: typo fix in usage example
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8362>
2025-01-21 18:29:47 -0300 Thibault Saunier <tsaunier@igalia.com>
* gst/matroska/matroska-demux.c:
* gst/matroska/matroska-demux.h:
matroskademux: Add support to seek with stop in push mode
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8340>
2025-01-15 17:36:00 +0100 Mathieu Duponchelle <mathieu@centricular.com>
* docs/meson.build:
docs: generate hotdoc configs for libraries with our helper script
With this patch, configure time is identical no matter whether doc is
enabled or not.
The configuration files also now contain explicitly-listed sources with
no wildcards.
For the four libraries where hotdoc needs to use clang to generate the
documentation (as opposed to the rest of the libraries where hotdoc uses
the gir), the script will call pkg-config to determine the appropriate
C flags.
This means a side effect of this patch is that pkg-config files are now
generated for the gstadaptivedemux and gstopencv libraries.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312>
2025-01-17 16:51:22 +0100 Mathieu Duponchelle <mathieu@centricular.com>
* meson.build:
meson: bump minimum version to 1.4 in every subprojects
36c01d05797ad9c7778939c54870f979bdcbba1f bumped to 1.4 for gst-devtools
and the root project, but we usually keep those in sync everywhere.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8312>
2025-01-14 16:29:28 +0100 Mathieu Duponchelle <mathieu@centricular.com>
* docs/gst_plugins_cache.json:
* gst/audiofx/gstscaletempo.c:
* gst/audiofx/gstscaletempo.h:
scaletempo: expose alternative mode, fit-down
In fit-down mode only 1.0 rates are supported, and the element will fit
audio data in buffers to their advertised duration.
This is useful in speech synthesis cases, where elements such as
awspolly will generate audio data from text, and assign the duration of the
input text buffers to their output buffers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8149>
2025-01-14 15:00:43 +0000 Tim-Philipp Müller <tim@centricular.com>
* meson.build:
Back to development after 1.25.1
=== release 1.25.1 ===
2025-01-14 14:52:48 +0000 Tim-Philipp Müller <tim@centricular.com>
* NEWS:
* RELEASE:
* gst-plugins-good.doap:
* meson.build:
Release 1.25.1
2025-01-13 18:10:31 +0100 Mathieu Duponchelle <mathieu@centricular.com>
* docs/meson.build:
* ext/aalib/meson.build:
* ext/adaptivedemux2/hls/meson.build:
* ext/adaptivedemux2/meson.build:
* ext/amrnb/meson.build:
* ext/amrwbdec/meson.build:
* ext/cairo/meson.build:
* ext/dv/meson.build:
* ext/flac/meson.build:
* ext/gdk_pixbuf/meson.build:
* ext/gtk/meson.build:
* ext/jack/meson.build:
* ext/jpeg/meson.build:
* ext/lame/meson.build:
* ext/libcaca/meson.build:
* ext/libpng/meson.build:
* ext/mpg123/meson.build:
* ext/pulse/meson.build:
* ext/qt/meson.build:
* ext/qt6/meson.build:
* ext/raw1394/meson.build:
* ext/shout2/meson.build:
* ext/soup/meson.build:
* ext/speex/meson.build:
* ext/taglib/meson.build:
* ext/twolame/meson.build:
* ext/vpx/meson.build:
* ext/wavpack/meson.build:
* gst/alpha/meson.build:
* gst/apetag/meson.build:
* gst/audiofx/meson.build:
* gst/audioparsers/meson.build:
* gst/auparse/meson.build:
* gst/autodetect/meson.build:
* gst/avi/meson.build:
* gst/cutter/meson.build:
* gst/debugutils/meson.build:
* gst/deinterlace/meson.build:
* gst/dtmf/meson.build:
* gst/effectv/meson.build:
* gst/equalizer/meson.build:
* gst/flv/meson.build:
* gst/flx/meson.build:
* gst/goom/meson.build:
* gst/goom2k1/meson.build:
* gst/icydemux/meson.build:
* gst/id3demux/meson.build:
* gst/imagefreeze/meson.build:
* gst/interleave/meson.build:
* gst/isomp4/meson.build:
* gst/law/meson.build:
* gst/level/meson.build:
* gst/matroska/meson.build:
* gst/meson.build:
* gst/monoscope/meson.build:
* gst/multifile/meson.build:
* gst/multipart/meson.build:
* gst/replaygain/meson.build:
* gst/rtp/meson.build:
* gst/rtpmanager/meson.build:
* gst/rtsp/meson.build:
* gst/shapewipe/meson.build:
* gst/smpte/meson.build:
* gst/spectrum/meson.build:
* gst/udp/meson.build:
* gst/videobox/meson.build:
* gst/videocrop/meson.build:
* gst/videofilter/meson.build:
* gst/videomixer/meson.build:
* gst/wavenc/meson.build:
* gst/wavparse/meson.build:
* gst/xingmux/meson.build:
* gst/y4m/meson.build:
* meson.build:
* sys/directsound/meson.build:
* sys/oss/meson.build:
* sys/oss4/meson.build:
* sys/osxaudio/meson.build:
* sys/osxvideo/meson.build:
* sys/rpicamsrc/meson.build:
* sys/v4l2/meson.build:
* sys/waveform/meson.build:
* sys/ximage/meson.build:
docs: port plugins to explicit sources
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8273>
2025-01-04 10:06:46 +0100 Edward Hervey <edward@centricular.com>
* meson.build:
good: Enable extra warning flags
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>
2025-01-04 10:06:15 +0100 Edward Hervey <edward@centricular.com>
* gst/multifile/gstsplitmuxsink.c:
splitmuxsink: Fix GST_(S)TIME_{ARGS|FORMAT} usage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>
2025-01-04 10:05:54 +0100 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/gstisoff.c:
* ext/qt/gstqtsink.cc:
* ext/qt/gstqtsrc.cc:
* ext/qt6/gstqml6glsink.cc:
* ext/qt6/gstqml6glsrc.cc:
* ext/wavpack/gstwavpackcommon.c:
* gst/audioparsers/gstwavpackparse.c:
* gst/avi/gstavidemux.c:
* gst/debugutils/gstpushfilesrc.c:
* gst/deinterlace/gstdeinterlace.c:
* gst/goom/goom_core.c:
* gst/interleave/interleave.c:
* gst/isomp4/gstisoff.c:
* gst/isomp4/qtdemux.c:
* gst/matroska/matroska-demux.c:
* gst/matroska/matroska-parse.c:
* gst/rtpmanager/gstrtprtxqueue.c:
* gst/rtsp/gstrtspsrc.c:
* gst/wavparse/gstwavparse.c:
good: Clearly specify fallthrough in switch/case
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>
2025-01-04 10:02:20 +0100 Edward Hervey <edward@centricular.com>
* gst/matroska/matroska-demux.c:
* gst/matroska/matroska-parse.c:
matroska: Reorder switch/case for parsing
Just makes it clearer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>
2025-01-04 10:01:40 +0100 Edward Hervey <edward@centricular.com>
* gst/isomp4/gstqtmux.c:
qtmux: Fix GST_STIME_ARGS usage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>
2025-01-04 10:00:59 +0100 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux-stream.c:
adaptivedemux2: Fix CLAMP usage
It's a positive value
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>
2025-01-04 10:00:07 +0100 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
adaptivedemux2: Remove useless ABS
Just compare the difference (in the right order)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8229>
2025-01-04 10:03:42 +0100 Edward Hervey <edward@centricular.com>
* gst/multifile/gstsplitmuxsink.c:
splitmuxsink: Fix wrong usage of GstClockTime vs GstClockTimeDiff
This could potentially have caused issues (because of the rest of the code using
checks for signed invalid values on a unsigned value)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8286>
2025-01-04 10:03:12 +0100 Edward Hervey <edward@centricular.com>
* gst/multifile/gstsplitmuxsrc.c:
splitmuxsrc: Add missing break
This would cause the reconfigure path to be called
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8286>
2025-01-04 09:59:55 +0100 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux.c:
adaptivedemux2: Add missing break
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8286>
2025-01-04 09:59:34 +0100 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux-stream.c:
* ext/adaptivedemux2/gstadaptivedemux-track.c:
* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
* ext/adaptivedemux2/hls/gsthlsdemux.c:
* ext/adaptivedemux2/hls/m3u8.c:
adaptivedemux2: Fix usage of GstClockTime vs GstClockTimeDiff
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8286>
2025-01-07 09:31:26 +0100 Edward Hervey <edward@centricular.com>
* gst/multifile/gstsplitmuxsrc.c:
splitmuxsrc: Ensure only a single stream-start event is pushed
Since we are simulating a single output, we want to ensure only a single
stream-start is pushed downstream. We do *not* want to send a (potentially) new
stream start event after flushing (like after seeks).
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4146
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8252>
2025-01-09 17:12:54 +0000 Will Miller <will.miller@pexip.com>
* gst/rtp/gstrtpvp9pay.c:
* tests/check/elements/rtpvp9.c:
rtpvp9pay: fix profile parsing
Incorrect parsing of these bits meant that we were incorrectly parsing
the VP9 uncompressed bitstream header for some profiles, as the header
is of variable length and format depending on the profile. Amongst
various unintended effects, this caused the width and height from the SS
to be incorrectly parsed and set in the caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8275>
2018-10-16 12:42:22 +0100 Alex Ashley <bugzilla@ashley-family.net>
* tests/check/elements/dash_mpd.c:
dashdemux2: mpdparser: add test for ISO8601 durations that overflow
See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/82
and https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2576
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8209>
2024-11-08 12:06:28 +0100 Piotr Brzeziński <piotr@centricular.com>
* sys/osxaudio/gstosxaudiosrc.c:
* sys/osxaudio/gstosxcoreaudio.h:
osxaudiosrc: Work around timestamps on iOS not starting from 0
On macOS, you always get your own 'timeline' for the AudioUnit session, so timestamps start from 0.
On iOS however, AudioUnit seems to give you a 'shared' timeline so timestamps start at a later, non-0 point in time.
Simply offsetting seems to do the trick.
This was causing osxaudiosrc to not output any sound on iOS.
Regressed in 2df9283d3f2ea06af5ebd6db03a6d545cac52f19
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7856>
2024-11-08 12:02:23 +0100 Piotr Brzeziński <piotr@centricular.com>
* sys/osxaudio/gstosxcoreaudiocommon.c:
osxaudiosrc: Fix render callback removal when pausing/stopping
At least on iOS, the 'input' callback kept being called after going to PAUSED.
Specifying the right type (like in gst_core_audio_io_proc_start()) fixes that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7856>
2024-11-08 11:57:49 +0100 Piotr Brzeziński <piotr@centricular.com>
* sys/osxaudio/gstosxcoreaudiocommon.c:
osxaudio: Fix AudioOutputUnitStart() deadlock on iOS >=17
At some point in iOS 17, this call started waiting for the first render callback (io_proc) to finish.
In our case, that callback also takes the ringbuf object lock by calling gst_audio_ring_buffer_set_timestamp(),
which results in a deadlock.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7856>
2024-11-08 11:54:27 +0100 Piotr Brzeziński <piotr@centricular.com>
* meson.build:
* sys/osxaudio/gstiosaudiosession.h:
* sys/osxaudio/gstiosaudiosession.m:
* sys/osxaudio/gstosxaudiosink.c:
* sys/osxaudio/gstosxaudiosink.h:
* sys/osxaudio/gstosxaudiosrc.c:
* sys/osxaudio/gstosxaudiosrc.h:
* sys/osxaudio/gstosxcoreaudio.c:
* sys/osxaudio/gstosxcoreaudio.h:
* sys/osxaudio/gstosxcoreaudioremoteio.c:
* sys/osxaudio/meson.build:
osxaudio: Automatically set up AVAudioSession on iOS
A correctly configured AVAudioSession is needed on iOS to:
- allow the application to capture microphone audio (in some cases)
- avoid playback being silenced in silent mode
Without this, initializing AudioUnit for capture can fail on iOS >=17 (from my testing).
Since AVAudioSession has a lot of settings, in most cases its setup should be handled by the user/app.
However, just to have a basic default scenario covered, let's configure the bare minimum ourselves,
and allow anyone to disable that behaviour by setting configure-session=false on src/sink.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7856>
2025-01-06 20:30:51 +0800 Dean Zhang (张安迪) <dean.zhang@mediatek.com>
* sys/v4l2/gstv4l2videodec.c:
v4l2videodec: release decode only frame in input list
For some frames with decode-only flag, the v4l2 decoder will not
put them in output list. The corresponding decode-only frames will
be still kept in input list, which may cause potential performance
issue when the input list is full. So release the decode-only frames
according to the decode-only flag after they are processed by decoder
driver.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8153>
2024-12-31 11:49:21 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-mux.c:
* tests/check/elements/matroskamux.c:
matroskamux: Consider audio buffers as keyframes when writing out simpleblocks
Otherwise mpv complains and considers the file broken.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4142
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8225>
2024-12-31 11:42:04 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-mux.c:
matroskamux: Fix audio-only stream conditions
The num_a_streams and related counters are used for pad numbers and don't give
the absolute number of streams in this run of the muxer.
Also, consider the output audio-only if there are more than 1 audio stream too.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4142
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8225>
2024-12-17 20:08:24 +0100 Christian Meissl <meissl.christian@gmail.com>
* gst/isomp4/qtdemux.c:
qtdemux: fix accumulated base offset in segment seeks
analog to fix for matroska-demux
commit f3c126d07c8a85e76bf5abdfa7f140bbf20545ea
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8240>
2024-12-17 21:23:34 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/fourcc.h:
* gst/isomp4/qtdemux.c:
* gst/isomp4/qtdemux.h:
* gst/isomp4/qtdemux_types.c:
qtdemux: Add support for ISO/IEC 23003-5 raw PCM audio
And also support the ISO/IEC 14496-12 chnl channel layout box as required
by ISO/IEC 23003-5.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8171>
2025-01-02 12:24:03 +0100 Jochen Henneberg <jochen@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Undef helper macros after use
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8127>
2024-12-18 08:44:30 +0100 Jochen Henneberg <jochen@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Validate matrix before doing simplified multiply
The matrix multiplication makes some assumption about the element
values to simplify the math with fixpoint values. If this is allowed
for the given matrices is now checked first.
Then the debug output for matrix and a comment have been fixed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8127>
2024-12-17 10:48:45 +0100 Jochen Henneberg <jochen@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Fixup for orientation matrix parsing
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8127>
2024-12-10 21:34:48 +0100 Jochen Henneberg <jochen@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Use mvhd transform matrix and support for flipping
The mvhd matrix is now combined with the tkhd matrix. The combined
matrix is then checked if it matches one of the standard values for
GST_TAG_IMAGE_ORIENTATION.
This check now includes matrices with flipping.
Fixes #4064
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8127>
2024-12-09 14:26:03 +0100 Albert Sjolund <alberts@axis.com>
* gst/rtpmanager/gstrtpsession.c:
rtpsession: send twcc struct in both directions
As there are signals around rtpsession in both directions,
send twcc data both upstream and downstream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7940>
2024-12-25 16:22:23 +0100 Tim-Philipp Müller <tim@centricular.com>
* tests/check/elements/aacparse.c:
aacparse: add test to make sure output caps are set also on reuse
See https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/350
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8214>
2024-12-18 11:43:16 -0300 Thibault Saunier <tsaunier@igalia.com>
* docs/gst_plugins_cache.json:
* gst/videofilter/gstvideoflip.c:
videoflip: Add support for Y444_16XX
Necessary code already existed, it was just a matter of advertising it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8177>
2024-12-21 14:39:58 +0100 Robert Mader <robert.mader@collabora.com>
* docs/gst_plugins_cache.json:
* sys/v4l2/gstv4l2object.c:
v4l2: object: Add P010 format
For 10bit content. Tested with HEVC on a Pixel3a (qcom).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8194>
2024-12-19 17:01:28 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/multifile/gstsplitmuxsrc.c:
splitmuxsrc: Post messages when a fragment is started
This allows the application to keep track which fragment is currently active.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8184>
2024-12-18 13:18:32 -0300 Thibault Saunier <tsaunier@igalia.com>
* docs/meson.build:
doc: Handle gst_dep.get_variable('libexecdir') failure
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178>
2024-12-18 12:27:30 -0300 Thibault Saunier <tsaunier@igalia.com>
* docs/meson.build:
doc: Allow updating the plugins cache for all modules even if hotdoc is not present
This was possible for some modules but not all, for no good reason.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8178>
2024-12-18 15:15:22 +0100 Carlos Falgueras García <cfalgueras@fluendo.com>
* gst/rtp/gstrtph264pay.c:
* gst/rtp/gstrtph265pay.c:
rtph26xpay: Fix the default framerate
Use 0/1 instead of 0/0 as the default framerate for rtph26{4,5}pay.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8176>
2024-12-18 16:21:47 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* docs/gst_plugins_cache.json:
doc: v4l2: Update documentation cache for DMA_DRM
The template caps now exposes DMA_DRM formats.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-12-18 15:30:24 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2: object: Adjust DMABuf negotiation base on io-mode
If the io-mode is forced by user to MMAP, USERPTR or RW, don't try and
negotiated DMABuf caps feature. This would otherwise fail later.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-12-18 15:13:17 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2bufferpool.c:
* sys/v4l2/gstv4l2bufferpool.h:
v4l2: pool: Adjust pool behaviour when DMA_DRM is used
We disable the copy threshold and always add GstVideoMeta.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-08-22 16:08:03 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2bufferpool.c:
* sys/v4l2/gstv4l2object.c:
* sys/v4l2/gstv4l2object.h:
* sys/v4l2/gstv4l2src.c:
* sys/v4l2/gstv4l2transform.c:
* sys/v4l2/gstv4l2videodec.c:
* sys/v4l2/gstv4l2videoenc.c:
v4l2: Add support for setting memory:DMABuf caps
This is the final step to allow negotiation of this caps features. Limiting the
features based on the io-mode shall come next.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-08-20 15:20:02 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2: object: Implement probing memory:DMABuf caps feature
This is the caps obtained trough caps query. We now have both system and
DMAbuf varaint, while maintaining support for meta:Interlaced feature.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-08-15 14:28:51 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
* sys/v4l2/gstv4l2object.h:
v4l2: object: Add memory:DMABuf caps feature to template caps
In this patch, we introduce memory:DMABuf caps feature into V4L2
elements template caps. This is required to allow caps query,
allocation query and set_format to use it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-08-15 09:54:26 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2: Directly map V4L2 formats to DRM formats
As in the long term not all V4L2 formats will have a libgstvideo
implementation, add a dedicated DRM fourcc map. This will be used
to enable memory:DMABuf caps features.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-08-15 09:53:06 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/ext/drm_fourcc.h:
v4l2: Include a copy of drm_fourcc.h
This one has been imported from libdrm 2.4.122.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
2024-12-09 15:12:57 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* sys/osxaudio/gstosxaudiosink.c:
* sys/osxaudio/gstosxaudiosrc.c:
vtenc, osxaudio: Fix missing since markers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>
2024-12-09 15:18:55 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* docs/gst_plugins_cache.json:
* sys/osxaudio/gstatenc.c:
atenc: Add missing since markers and mark plugin API
Also update the plugin docs cache.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>
2024-12-05 00:32:37 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
docs: Update macOS plugin docs again
Contains the following updates:
* New properties on avfvideosrc: screen-crop-*
* H265 and H265 Alpha support in vtdec and vtenc (VideoToolbox)
* ProRes support in vtenc
* New properties on vtenc elements: rate-control, data-rate-limits,
max-frame-delay
* New plugin atenc (AudioToolbox) with support for encoding AAC
* Plugin move: atdec moved from -bad to -good
* New property on osxaudio elements: unique-id
* OS X -> macOS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8120>
2024-12-12 12:05:04 +1100 Matthew Waters <matthew@centricular.com>
* gst/rtp/gstrtppassthroughpay.c:
rtppassthroughpay: ensure buffer is writable before mapping writable
It is entirely possible that the incoming buffer into _chain() is not writable
and will result in a critical when trying to map().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8131>
2024-12-04 16:10:46 +0000 Philippe Normand <philn@igalia.com>
* gst/rtpmanager/gstrtpsession.c:
* gst/rtpmanager/rtpsession.c:
* gst/rtpmanager/rtpsession.h:
rtpsession: Fix twcc stats structure leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8073>
2024-12-04 16:52:55 +0800 Qian Hu <Qian.Hu@mediatek.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: move height setting outside of per-plane loop
In the V4L2 format, the height parameter
is an attribute of the entire image, not of an individual plane.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8088>
2024-12-04 16:42:49 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/multifile/gstsplitmuxpartreader.c:
splitmuxsrc: Calculate the end offset of a fragment once known
If a new fragment is added with a valid duration but no offset then the start
offset is set later based on the end offset of the previous fragment. At that
point the end offset of this fragment can also be calculated and not doing so
would give the next fragment the same start offset.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8069>
2024-12-04 17:13:12 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/audioparsers/gstflacparse.c:
* gst/audioparsers/gstflacparse.h:
flacparse: Improve header validity checks
Allow sample rate, number of channels and bps to change and in that case update
the caps accordingly.
Also move (non-fatal) validity checks and storing of the header values outside
the actual parsing once we actually know that a valid frame is available.
And also don't warn on the last frame with fixed block size blocking strategy
that the block size has changed: the last frame is allowed to be smaller.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3281
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8075>
2024-09-27 00:31:36 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Add size check for parsing SMI / SEQH atom
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-244
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3853
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>
2024-09-26 19:16:19 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Check for invalid atom length when extracting Closed Caption data
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-243
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3849
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>
2024-09-27 10:39:30 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Actually handle errors returns from various functions instead of ignoring them
Ignoring them might cause the element to continue as if all is fine despite the
internal state being inconsistent. This can lead to all kinds of follow-up
issues, including memory safety issues.
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-245
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3847
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>
2024-09-27 10:38:50 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Make sure there are enough offsets to read when parsing samples
While this specific case is also caught when initializing co_chunk, the error
is ignored in various places and calling into the function would lead to out of
bounds reads if the error message doesn't cause the pipeline to be shut down
fast enough.
To avoid this, no matter what, make sure enough offsets are available when
parsing them. While this is potentially slower, the same is already done in the
non-chunks_are_samples case.
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-245
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3847
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>
2024-09-27 09:47:50 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Fix error handling when parsing cenc sample groups fails
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-238, GHSL-2024-239, GHSL-2024-240
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3846
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>
2024-09-27 00:12:57 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Fix length checks and offsets in stsd entry parsing
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-242
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3845
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>
2024-09-26 14:17:02 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Make sure enough data is available before reading wave header node
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-236
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3843
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>
2024-09-26 09:20:28 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Make sure only an even number of bytes is processed when handling CEA608 data
An odd number of bytes would lead to out of bound reads and writes, and doesn't
make any sense as CEA608 comes in byte pairs.
Strip off any leftover bytes and assume everything before that is valid.
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-195
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3841
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>
2024-09-27 15:50:54 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Check sizes of stsc/stco/stts before trying to merge entries
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-246
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3854
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>
2024-09-26 18:41:39 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux_dump.c:
qtdemux: Don't iterate over all trun entries if none of the flags are set
Nothing would be printed anyway.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>
2024-09-26 18:40:56 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Fix debug output during trun parsing
Various integers are unsigned so print them as such. Also print the actual
allocation size if allocation fails, not only parts of it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>
2024-09-26 18:39:37 +0300 Antonio Morales <antonio-morales@github.com>
* gst/isomp4/qtdemux.c:
qtdemux: Fix integer overflow when allocating the samples table for fragmented MP4
This can lead to out of bounds writes and NULL pointer dereferences.
Fixes GHSL-2024-094, GHSL-2024-237, GHSL-2024-241
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3839
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8059>
2024-10-09 11:52:52 -0400 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-demux.c:
matroskademux: Put a copy of the codec data into the A_MS/ACM caps
The original codec data buffer is owned by matroskademux and does not
necessarily live as long as the caps.
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-280
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3894
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>
2024-09-30 19:19:42 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-ids.c:
matroskademux: Skip over zero-sized Xiph stream headers
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-251
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3867
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>
2024-09-30 19:06:03 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-demux.c:
matroskademux: Skip over laces directly when postprocessing the frame fails
Otherwise NULL buffers might be handled afterwards.
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-249
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3865
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>
2024-09-30 19:04:51 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-demux.c:
matroskademux: Don't take data out of an empty adapter when processing WavPack frames
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-249
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3865
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>
2024-09-30 18:25:53 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-demux.c:
matroskademux: Check for big enough WavPack codec private data before accessing it
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-250
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3866
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>
2024-09-30 16:33:39 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-demux.c:
matroskademux: Fix off-by-one when parsing multi-channel WavPack
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>
2024-09-30 16:32:48 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-demux.c:
matroskademux: Only unmap GstMapInfo in WavPack header extraction error paths if previously mapped
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-197
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3863
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8057>
2024-10-04 14:04:03 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/avi/gstavisubtitle.c:
avisubtitle: Fix size checks and avoid overflows when checking sizes
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-262
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3890
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8043>
2024-10-04 13:51:00 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/wavparse/gstwavparse.c:
wavparse: Check size before reading ds64 chunk
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-261
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3889
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
2024-10-04 13:27:27 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/wavparse/gstwavparse.c:
wavparse: Fix clipping of size to the file size
The size does not include the 8 bytes tag and length, so an additional 8 bytes
must be removed here. 8 bytes are always available at this point because
otherwise the parsing of the tag and length right above would've failed.
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-260
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3888
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
2024-10-04 13:22:02 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/wavparse/gstwavparse.c:
wavparse: Check that at least 32 bytes are available before parsing smpl chunks
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-259
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3887
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
2024-10-04 13:21:44 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/wavparse/gstwavparse.c:
wavparse: Check that at least 4 bytes are available before parsing cue chunks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
2024-10-04 13:15:27 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/wavparse/gstwavparse.c:
wavparse: Fix parsing of acid chunk
Simply casting the bytes to a struct can lead to crashes because of unaligned
reads, and is also missing the endianness swapping that is necessary on big
endian architectures.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
2024-10-04 13:09:43 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/wavparse/gstwavparse.c:
wavparse: Make sure enough data for the tag list tag is available before parsing
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-258
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3886
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
2024-10-04 13:00:57 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/wavparse/gstwavparse.c:
wavparse: Check for short reads when parsing headers in pull mode
And also return the actual flow return to the caller instead of always returning
GST_FLOW_ERROR.
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-258, GHSL-2024-260
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3886
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3888
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8042>
2024-10-02 14:44:21 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/gdk_pixbuf/gstgdkpixbufdec.c:
gdkpixbufdec: Check if initializing the video info actually succeeded
Otherwise a 0-byte buffer would be allocated, which gives NULL memory when
mapped.
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-118
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3876
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8041>
2024-09-30 16:22:19 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/jpeg/gstjpegdec.c:
jpegdec: Directly error out on negotiation failures
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-247
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3862
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8040>
2024-09-26 22:16:06 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Avoid integer overflow when parsing Theora extension
Thanks to Antonio Morales for finding and reporting the issue.
Fixes GHSL-2024-166
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3851
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8032>
2024-11-29 13:41:54 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* gst/level/gstlevel.c:
level: Fix integer overflow when filling LevelMeta
The level in GstAudioLevelMeta is represented as a signed 8bit value from 0 to
127 (with 127 meaning silence). When converting from double, make sure to clip
the value, this also prevent integer overflow in the conversion. This fixes an
issue where a lower then -127db is reported and random level with near silent
streams (due to integer overflow).
Fixes #4068
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8012>
2024-12-01 11:40:14 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/flv/gstflvmux.c:
flvmux: Fix off-by-one in month/day-of-the-week array
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4074
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8017>
2024-11-28 22:26:17 -0500 Olivier Crête <olivier.crete@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2src: Handle framerate not being a range
The framerate can be a range or a fraction, one now needs to handle both
cases. If it's not a range, then the framerate needs to be exactly the same.
Also avoid leaking the GstStructure
Fixes a regression introduced by https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7850
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8000>
2024-11-29 12:16:48 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Update version of tcp-timestamp property to 1.24.10
It was backported to 1.24.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8005>
2024-11-28 12:56:33 +0200 Sebastian Dröge <sebastian@centricular.com>
* ext/shout2/gstshout2.c:
shout2send: Unref event at the end of the event function
The function takes ownership of it and should get rid of it at the end.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7992>
2024-11-22 19:37:27 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/rtsp/gstrtspsrc.c:
* gst/rtsp/gstrtspsrc.h:
rtspsrc: Use a flow combiner at the source pads instead of custom logic
Most importantly, this ensures that UDP streams still continue to run even if
they are not linked for a while. With decodebin3 the pads will all be unlinked
unless selected, and selecting a stream at a later time would otherwise switch
to a stream with a stopped udpsrc.
Apart from that this also ensures that actual errors from handling RTP packets
between udpsrc and the source pads are not silently ignored but considered
errors like they would be for TCP/interleaved.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7946>
2024-11-22 19:36:46 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Don't set pad event/query function twice
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7946>
2024-11-27 12:16:37 +0100 Jonas Rebmann <jre@pengutronix.de>
* sys/v4l2/gstv4l2videodec.c:
v4l2videodec: fix freeze race condition
This fixes a possible deadlock between gst_v4l2_video_dec_change_state
and gst_v4l2_video_dec_loop on the buffer pool.
When stopping capture, the flushing state of the v4l2 capture buffer
pool gets reverted in the processing loop after it was set via
gst_v4l2_object_unlock (self->v4l2capture) (in
gst_v4l2_video_dec_change_state). As a result, gst_v4l2_video_dec_loop
does not return and consequently, gst_pad_stop_task gets stuck waiting
for the GST_PAD_STREAM_LOCK. To circumvent this, skip acquiring the
buffer pool if stopping capture.
Suggested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7958>
2024-11-22 18:59:53 +1100 Matthew Waters <matthew@centricular.com>
* ext/qt/gstqsgmaterial.cc:
* ext/qt6/gstqsg6material.cc:
qt(6)/material: ensure that we always update the context in setBuffer()
Scenario is that there are two (or more) GstGLContext's wrapping Qt's GL
context from either multiple qml(6)glsink or qml(6)glsrc elements. Call flow is this:
1. material 1 setBuffer()
2. material 1 bind()
3. material 2 setBuffer()
4. material 2 bind()
If the call to setBuffer() reuses the same buffer as previous call, then the
qt context is not updated in the material. If however the previously used qt
context by the material had been deactivated or freed, then bind() would fail
and could result in a critical like so:
gst_gl_context_thread_add: assertion 'context->priv->active_thread == g_thread_self ()' failed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7970>
2024-11-21 15:45:24 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* ext/qt/meson.build:
* ext/qt6/meson.build:
meson: Use new has_tools kwarg to avoid unnecessary lrelease dependency
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7937>
2024-11-26 10:51:12 +0000 Philippe Normand <philn@igalia.com>
* ext/meson.build:
meson: Check for libsoup only if required
LibSoup is needed for the soup and adaptivedemux2 plugins, so there is no need
to do the lookup if none of those plugins is enabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7964>
2024-11-25 15:47:22 +0100 Tomáš Polomský <1155369-polomsky@users.noreply.gitlab.freedesktop.org>
* sys/v4l2/gstv4l2object.c:
v4l2object: Fixed incorrect maximum value for int range
There are objects where maximum is not multiplication of the step,
e.g. there was a combination where max was 65535 with step 2.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7953>
2024-11-25 14:25:52 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/multifile/gstsplitmuxpartreader.c:
* gst/multifile/gstsplitmuxpartreader.h:
splitmuxsrc: Convert part reader to a bin with a non-async bus
A pipeline always has an async bus, which involves allocating an fd pair. As
splitmuxsrc only uses the bus' sync handler, this is not required and can easily
cause splitmuxsrc to exceed the fd limit for no good reason.
The other features of GstPipeline are also not needed here, e.g. clock selection.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7952>
2024-11-21 00:07:31 +0100 Diego Nieto <diego.nieto.m@outlook.com>
* gst/rtpmanager/rtpsource.c:
rtpsource: include config.h header to avoid g_memdup2 link issue
Without adding the header a link issue related g_memdup2 might happen.
In versions below 2.67.4 that symbol is manually introduced in the
meson config files.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7933>
2024-02-01 14:53:57 -0300 Thibault Saunier <tsaunier@igalia.com>
* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
hlsdemux2: Handle needing more data when draining segment
Some streams in the wild have empty segments at the beginning and
hlsdemux2 use to stall forever while we can handle it by processing
the following ones. The gap handling mechanism in adaptivedemux2
works properly and pushes the required gaps.
Update validate medias so the hls stream is present.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6034>
2024-08-29 16:39:14 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* ext/qt6/gstqml6glsrc.cc:
* ext/qt6/qt6glwindow.cc:
* ext/qt6/qt6glwindow.h:
qmlgl6src: Use downstream pool when available
This make use of the pool that has been negotiated with downstream in the
decide_allocation function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7904>
2024-11-19 11:54:12 +0100 Marek Olejnik <molejnik@fluendo.com>
* docs/gst_plugins_cache.json:
* gst/debugutils/gstnavigationtest.c:
navigationtest: Fix plugin description
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7922>
2024-07-19 19:44:57 +0800 Qian Hu (胡骞) <qian.hu@mediatek.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: pass buffer align info for upstream
if downstream v4l2 output has large alignment requirement
this patch will pass align info for upstream element
and decide allocation will use these info to meet alignment
requirement.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7201>
2024-11-13 17:02:33 +1100 Matthew Waters <matthew@centricular.com>
* gst/rtp/gstrtph264pay.c:
* gst/rtp/gstrtph265pay.c:
rtph26xpay: silence some maybe-unitialized warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875>
2024-11-13 16:56:57 +1100 Matthew Waters <matthew@centricular.com>
* ext/soup/gstsouphttpsrc.c:
souphttpsrc: silence some maybe-uninitialized warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875>
2024-11-13 16:56:22 +1100 Matthew Waters <matthew@centricular.com>
* sys/v4l2/gstv4l2videodec.c:
v4l2videodec: silennce some maybe-uninitialized warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7875>
2024-11-15 11:44:17 +0100 Albert Sjolund <alberts@axis.com>
* gst/rtpmanager/gstrtphdrext-twcc.c:
rtpmanager: don't map READWRITE in twcc header ext
There is no need to map the buffer as writable, as there is
only a read performed on the mapped buffer. This is in line
with other header extensions, as no other extensions maps
it as readwrite.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7895>
2024-11-15 11:46:14 -0300 Thibault Saunier <tsaunier@igalia.com>
* meson.build:
meson: Bump minimum version to 1.3
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4025
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7899>
2024-11-15 10:29:39 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-mux.c:
matroskamux: Simplify timestamp comparison logic in find_best_pad()
If a buffer has no timestamp it is immediately muxed so we can directly break
the loop and simplify comparisons in the other cases.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7872>
2024-11-12 11:36:38 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-mux.c:
matroskamux: Don't time out in live mode if no timestamped next buffer is available
The muxer can only advance the time if it has a timestamped buffer that can be
output, otherwise it will just busy-wait and use up a lot of CPU.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7872>
2024-10-28 14:21:40 +0000 Philippe Normand <philn@igalia.com>
* gst/matroska/matroska-mux.c:
matroskamux: Delay stream-header until all sink pads have caps
If we don't wait, an incomplete header might be generated due to a race between
the _aggregate thread and the sink pad setcaps.
Fixes #3929
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7872>
2024-11-06 13:51:46 +0000 Marianna Smidth Buschle <msb@qtec.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: Fixed framerate negotiation
We had a problem with negotiation of the framerate.
Gstreamer was querying the FRAMEINTERVALS based on the max frame size
instead of the desired frame size.
This was resulting in non-negotiated errors when trying to run with a
smaller frame size and fps higher than the max for the max image size.
Fx the max framerate for 1024x1024 RGB on CMOSIS4000 is 28.292
While for 1024x100 RGB it is 280.867
But Gstreamer would allow any framerates bigger than 28.292 no matter
the frame size used...
I have fixed it by 1st changing the CAPS query to use the minimum frame
size instead of maximum.
This however has the downside of allowing gstreamer to negotiate
framerates that are too high if the image size is bigger than the
minimum.
This is not a huge problem since our driver just CLAMPS the fps value to
the max then.
However gstreamer was not being properly notified of this change, and
would therefore report a wrong fps in the CAPS structure.
Note that the fps would be correct inside the buffer info.
Since gstreamer was reading the fps back after setting it.
It was just not being "propagated" to the CAPS structure.
I have also added a WARNING to this point so we can see if the fps that
gstreamer tries to apply was accepted or not.
And the next part of the fix was to add a framerate check after the
frame size has been established.
I did this inside the fixate_caps function of the v4l2src, which was
calling the TRY_FMT in order to check if the format was correct.
So I just added a check for the ENUM_FRAMEINTERVALS in there.
And now we get the non-negotiated again if the fps is too high for the
selected frame size.
Also added a couple of warnings so it is easy to see that this was the
cause.
See:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3037
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7850>
2020-09-21 16:48:38 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>
* gst/flv/gstflvmux.c:
flvmux: Mux timestampless buffers immediately
Instead of leaving them queued indefinitely, or until we're timing out
and it's the only buffer queued.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7871>
2024-11-12 11:25:38 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/flv/gstflvmux.c:
flvmux: Don't time out in live mode if no timestamped next buffer is available
But also don't wait for a buffer on both pads, which might take forever in case
of gaps in one of the streams.
The muxer can only advance the time if it has a timestamped buffer that can be
output, otherwise it will just busy-wait and use up a lot of CPU.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7871>
2024-11-13 15:49:57 +0100 Robert Rosengren <robertr@axis.com>
* gst/udp/gstudpsrc.c:
udpsrc: protect cancellable from unlock/unlock_stop race
Protect cancellable from simultaneous unlock and unlock_stop calls from
basesrc class.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7885>
2024-11-11 16:43:29 +0800 Dean Zhang (张安迪) <dean.zhang@mediatek.com>
* gst/isomp4/qtdemux.c:
qtdemux: Add support for m1v fourcc when subtype is vide
Some special videos with mlv fourcc can't be recognized by
qtdemux when the subtype of the video is vide instead of
m1v, and will cause negotiation error in subsequent plugin.
So make the handle in qtdemux_video_caps. It might be better
than nothing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7855>
2024-11-04 10:49:25 +0100 Stefan Riedmüller <s.riedmueller@phytec.de>
* docs/gst_plugins_cache.json:
* sys/v4l2/gstv4l2object.c:
v4l2object: Remove little endian marker on 8 bit bayer format names
There is no point in having an endian marker on 8 bit bayer format names since
it is just one byte. Thus remove it.
This also fixes an incompatibility with plugins bad where there is no endian
marker on 8 bit bayer format names as well.
Fixes: #3729
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7826>
2024-05-29 06:33:50 +0200 Jonas K Danielsson <jonas.danielsson@spiideo.com>
* gst/udp/gstudpsrc.c:
udpsrc: Disable allocated port reuse for unicast
The `reuse` property end up setting the SO_REUSEADDR socket option for
the UDP socket. This setting have surprising effects.
On Linux systems the man page (`socket(7)`) states:
```
SO_REUSEADDR
Indicates that the rules used in validating addresses supplied
in a bind(2) call should allow reuse of local addresses. For
AF_INET sockets this means that a socket may bind, except when
there is an active listening socket bound to the address.
```
But since UDP does not listen this ends up meaning that when an
ephemeral port is allocated (setting the `port` to `0`) the kernel is
free to reuse any other UDP port that has `SO_REUSEADDR` set.
Tests checking the likelyhood of port conflict when using multiple
`udpsrc` shows port conflicts starting to occur after ~100-300 udpsrc
with port allocation enabled. See issue #3411 for more details.
Changing the default value of a property is not a small thing we risk
breaking application that rely on the current default value. But since
the effects of having `reuse` default `TRUE` on can also have damaging
and hard-to-debug consequences, it might be worth to consider.
Having `SO_REUSEADDR` enabled for multicast, might have some use cases
but for unicast, with dynamic port allocation, it does not make sense.
When not using an multicast address we will disable port reuse if the
`port` property is set to 0 (=allocate) and warn the user that we did
so.
Closes #3411
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7841>
2024-11-05 11:49:32 +0000 Philippe Normand <philn@igalia.com>
* gst/rtpmanager/gstrtpfunnel.c:
* tests/check/elements/rtpfunnel.c:
rtpfunnel: Ensure segment events are forwarded after flushs
gst_rtp_funnel_forward_segment() returns early when the current_pad is set.
Without clearing current_pad a critical warning would be emitted when
attempting to chain a buffer following a flush.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7830>
2024-10-24 18:25:36 -0300 L. E. Segovia <amy@centricular.com>
* ext/mpg123/gstmpg123audiodec.c:
* ext/mpg123/gstmpg123audiodec.h:
mpg123audiodec: Fix dependence on off_t breaking Meson wrap-based builds
Using the mpg123_*_64 functions requires API level 48 i.e. mpg123 >= 1.32.
The mpg123_*64 functions are available before then, but still depend on
off_t (and as such introduce the bug in builds against distro provided
mpg123).
See https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1568#note_2624024
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7732>
2024-11-03 17:30:40 +0000 Tim-Philipp Müller <tim@centricular.com>
* docs/meson.build:
meson: bail out earlier in docs subdir if docs are disabled
The gst_dep.get_variable('libexecdir') may fail in some scenarios
(e.g. building a module alone inside an uninstalled devenv) and
it shouldn't really be reached in the first place if docs are
disabled via options.
Also to avoid confusing meson messages when cross-compiling or
doing a static build.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7818>
2024-11-03 17:36:46 +0000 Tim-Philipp Müller <tim@centricular.com>
* po/af.po:
* po/az.po:
* po/bg.po:
* po/ca.po:
* po/cs.po:
* po/da.po:
* po/de.po:
* po/el.po:
* po/en_GB.po:
* po/eo.po:
* po/es.po:
* po/eu.po:
* po/fi.po:
* po/fr.po:
* po/fur.po:
* po/gl.po:
* po/hr.po:
* po/hu.po:
* po/id.po:
* po/it.po:
* po/ja.po:
* po/ka.po:
* po/ky.po:
* po/lt.po:
* po/lv.po:
* po/mt.po:
* po/nb.po:
* po/nl.po:
* po/or.po:
* po/pl.po:
* po/pt_BR.po:
* po/ro.po:
* po/ru.po:
* po/sk.po:
* po/sl.po:
* po/sq.po:
* po/sr.po:
* po/sv.po:
* po/tr.po:
* po/uk.po:
* po/vi.po:
* po/zh_CN.po:
* po/zh_HK.po:
* po/zh_TW.po:
gst-plugins-good: update translations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7819>
2024-10-31 17:46:40 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/rtp/gstrtph264depay.c:
* gst/rtp/gstrtph265depay.c:
rtph264depay, rtph265depay: various parameter-set string handling fixes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7804>
2024-06-13 09:59:24 +0200 Andreas Wittmann <andreas.wittmann@zeiss.com>
* docs/gst_plugins_cache.json:
* ext/qt/gstqtoverlay.cc:
* ext/qt/gstqtoverlay.h:
* ext/qt/qtglrenderer.cc:
* ext/qt/qtglrenderer.h:
qmlgloverlay: make depth buffer optional
allow dropping depth/stencil buffer for
qmlgloverlay element. Shows considerable
drop in memory bandwidth consumption of
the element on windows platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7677>
2024-10-29 17:39:02 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/flv/gstflvmux.c:
flvmux: Consider timestamps before segment start to map to segment start
Instead of mapping them to running time 0, which is wrong if e.g. the segment
base is not equal to 0.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7780>
2024-10-29 15:30:59 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/flv/gstflvmux.c:
flvmux: Use first running time on the initial header instead of 0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7780>
2024-10-29 16:43:33 +0000 Tim-Philipp Müller <tim@centricular.com>
* docs/gst_plugins_cache.json:
* gst/rtp/gstrtppassthroughpay.c:
rtppassthrough: fix rtp-stats message compatibility with GstRTPBasePayload
"clock-rate" and "pt" are G_TYPE_UINT in the base class, so let's
keep them like that here too, since the entire purposes of the
passthrough element is to fake being a payloader. The types in the
message don't have to be consistent with the types in the caps.
Reverts part of commit a6fa53b7 of !7526
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7552#note_2576653
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7783>
2024-08-08 12:28:11 +0000 Johan Sternerup <johast@axis.com>
* gst/rtpmanager/rtptwcc.c:
* tests/check/elements/rtpsession.c:
twcc: Handle wrapping of reference time
Previously the wrapping of the 24-bit reference time was not handled
correctly when transforming it into GstClockTime. Given the unit of 64ms
the span that could be represented by 24 bits is 12 days and depending
on the start value we could get a wrapping problem anytime within this
time frame. This turned out to be particularly problematic for the GCC
algorithm in gst-plugins-rs which tried to evict old packages based on
the "oldest" timestamp, which due to wrapping problems could be in the
future. Thus, the container managing the packets could grow without
limits for a long time thereby creating both CPU and memory problems.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7527>
2024-10-25 12:02:54 +0200 Ognyan Tonchev <ognyan@axis.com>
* gst/rtpmanager/rtpsession.c:
* gst/rtpmanager/rtpsource.c:
rtpmanager: skip RTPSources which are not ready in the RTCP generation
If a stream has an 'irregular' frame rate (e.g. metadata) RTCP SR
may be generated way too early, before the RTPSource has received
the first packet after Latency was configured in the pipeline.
We skip such RTPSources in the RTCP generation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7740>
2024-10-22 12:50:36 -0600 Guillermo E. Martinez <guillermo.martinez.quezada@continental.com>
* gst/udp/gstudpsrc.c:
udp: Update documentation for `timeout' property
This patch is meant to update the time units description of `timeout' property
for the `udpsrc` element from milliseconds to nanoseconds according to the
implementation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7748>
2024-06-28 14:24:54 +0200 Edward Hervey <edward@centricular.com>
* docs/gst_plugins_cache.json:
plugins_cache: Update for fedora 40 build
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7455>
2024-10-21 11:50:23 +0200 Carlos Falgueras García <cfalgueras@fluendo.com>
* docs/gst_plugins_cache.json:
video: Add GRAY10_LE16 support
This adds a 10-bit variant of grayscale packed into 16 bits little-endian
words. The MSB 6 bits are padding and should be ignored. This format is
used by Fraunhofer VVC encoder and decoder libraries.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7706>
2024-10-23 20:50:31 +0200 François Laignel <francois@centricular.com>
rtspsrc: client-managed MIKEY KeyMgmt
Some servers (e.g. Axis cameras) expect the client to propose the encryption
key(s) to be used for SRTP / SRTCP. This is required to allow re-keying so
as to evade cryptanalysis. Note that the behaviour is not specified by the
RFCs. By setting the 'client-managed-mikey-mode' property to 'true', rtspsrc
acts as follows:
* For a secured profile (RTP/SAVP or RTP/SAVPF), any media in the SDP
returned by the server for which a MIKEY key management applies is
elligible for client managed mode. The MIKEY from the server is then
ignored.
* rtspsrc sends a SETUP with a MIKEY payload proposed by the user. The
payload is formed by calling the 'request-rtp-key' signal for each
elligible stream. During initialisation, 'request-rtcp-key' is also
called as usual. The keys returned by both signals should be the same
for a single stream, but the mechanism allows a different approach.
* The user can start re-keying of a stream by calling SET_PARAMETER.
The convenience signal 'set-mikey-parameter' can be used to build a
'KeyMgmt' parameter with a MIKEY payload.
* After the server accepts the new parameter, the user can call
'remove-key' and prepare for the new key(s) to be served by signals
'request-rtp-key' & 'request-rtcp-key'.
* The signals 'soft-limit' & 'hard-limit' are called when a key
reaches the limits of its utilisation.
This commit adds support for:
* client-managed MIKEY mode to srtpsrc.
* Master Key Index (MKI) parsing and encoding to GstMIKEYMessage.
* re-keying using the signals 'set-mikey-parameter' & 'remove-key' and
then by serving the new key via 'request-rtp-key' & 'request-rtcp-key'.
* 'soft-limit' & 'hard-limit' signals, similar to those provided by srtpdec.
See also:
* https://www.rfc-editor.org/rfc/rfc3830
* https://www.rfc-editor.org/rfc/rfc4567
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7587>
2024-10-10 02:07:38 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* ext/adaptivedemux2/meson.build:
* ext/meson.build:
* ext/soup/gstsouploader.c:
* ext/soup/meson.build:
soup: Re-enable libsoup dlopen on macOS
Move from GModule to libdl for loading libraries on all platforms.
This is necessary due to a macOS bug where dyld uses the incorrect
@loader_path value for RPATH entries, and fails to find libsoup.
More details here: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1171#note_2290789
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3792
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7635>
2024-09-24 18:23:45 +0200 Marek Vasut <marex@denx.de>
* docs/gst_plugins_cache.json:
* ext/qt/gstqsgmaterial.cc:
* ext/qt/gstqtsink.cc:
qt: Added support for RGB16/BGR16 input format to qmlglsink
This allows input format to be 16-bit RGB565/BGR565, which is
generated by various V4L2 devices. This format can be useful
on hardware which is constrained by memory bandwidth.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7567>
2024-10-14 12:35:33 +0300 Sebastian Dröge <sebastian@centricular.com>
* docs/gst_plugins_cache.json:
* gst/imagefreeze/gstimagefreeze.c:
imagefreeze: Add support for JPEG / PNG
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7660>
2024-10-03 12:48:31 +0200 Andoni Morales Alastruey <ylatuya@gmail.com>
* gst/isomp4/qtdemux.c:
qtdemux: fix parsing of matrix with 180 rotation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7607>
2024-10-04 05:55:54 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* ext/lame/meson.build:
lame: Disable tools when using the fallback subproject
This saves time when building, since we don't use the tools.
Particularly on macOS, due to a macOS bug, Meson picks up an invalid
ncurses-config binary and incorrectly detects the presence of ncurses,
causing a build failure. This is fixed in the latest meson:
https://github.com/mesonbuild/meson/pull/13715
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7611>
2024-09-03 11:30:18 +1000 Jan Schmidt <jan@centricular.com>
* gst/rtpmanager/rtpsession.c:
rtpsession: Fix a typo in docstring comment
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7424>
2024-08-29 20:39:51 +1000 Jan Schmidt <jan@centricular.com>
* gst/rtpmanager/rtpsession.c:
* gst/rtpmanager/rtpsource.c:
* gst/rtpmanager/rtpsource.h:
* tests/check/elements/rtpsession.c:
rtpmanager: save the report block statistics in each RTPSource
Move RB info from receiver reports into the internal source that the RR
are about, and deprecate (but retain) the old mapping where each
external source has only a single RB entry in the rtp statistics.
The old method is broken if a remote peer uses a single ssrc to send
receiver reports for more than one of our internal sources, other
as multiple RB in a single packet, or alternate RB in different reports.
In each case only the most recent entry was kept, overwriting data for
other internal sources.
In multicast scenarios each internal source may receive multiple
receiver reports from different peers. To support that, all received
RR's are now stored into a hash table indexed by the sender's SSRC,
and all RRs are placed into an array when generating statistics, so
that the information from all peers is retrievable.
The current deficient behaviour (adding RB info into non-internal RTPSources) is
deprecated but kept in order to be backward compatible, and retained
that way in the generated statistics structure.
Refs
[1] https://tools.ietf.org/html/rfc3550#section-6.4.1
Based on a patch by Fede Claramonte <fclaramonte@twilio.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7424>
2024-05-12 18:59:24 -0400 valadaptive <valadaptive@protonmail.com>
* gst/isomp4/fourcc.h:
* gst/isomp4/qtdemux.c:
qtdemux: Add support for Lagarith fourcc tag
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6831>
2024-09-13 10:55:03 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-mux.c:
* gst/matroska/matroska-mux.h:
matroskamux: Add support for latency timeouts in live pipelines
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7510>
2024-09-13 10:13:11 +0300 Sebastian Dröge <sebastian@centricular.com>
* docs/gst_plugins_cache.json:
* gst/matroska/ebml-write.c:
* gst/matroska/ebml-write.h:
* gst/matroska/matroska-mux.c:
* gst/matroska/matroska-mux.h:
* gst/matroska/webm-mux.c:
* tests/check/elements/matroskamux.c:
matroskamux: Port to GstAggregator
Co-authored-by: Tim-Philipp Müller <tim@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7510>
2024-09-26 09:15:34 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Check fourcc of a second CEA608 atom instead of assuming it's cdt2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7575>
2024-09-03 12:16:19 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/qt6/gstqml6glmixer.cc:
* ext/qt6/qt6glwindow.cc:
* gst/deinterlace/gstdeinterlace.c:
* sys/v4l2/gstv4l2object.c:
* tests/check/elements/videocrop.c:
common: Use more efficient versions of GstCapsFeatures API where possible
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432>
2024-08-29 20:09:52 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux.c:
* ext/adaptivedemux2/hls/m3u8.c:
* ext/pulse/pulseutil.c:
* ext/soup/gstsouphttpsrc.c:
* gst/debugutils/gstcapssetter.c:
* gst/isomp4/gstqtmux.c:
* gst/matroska/matroska-mux.c:
* gst/multifile/gstsplitmuxsink.c:
* gst/rtpmanager/gstrtpptdemux.c:
* gst/rtpmanager/gstrtprtxreceive.c:
* gst/rtpmanager/gstrtprtxsend.c:
* gst/rtpmanager/rtpsource.c:
* gst/rtsp/gstrtspsrc.c:
* sys/v4l2/gstv4l2src.c:
* sys/v4l2/v4l2_calls.c:
* tests/examples/rtsp/test-onvif.c:
common: Stop using GQuark-based GstStructure field name API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432>
2024-08-09 10:41:57 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/adaptivedemux2/gstadaptivedemuxutils.c:
common: Stop using GQuark-based GstStructure name API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432>
2024-09-24 09:50:34 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Skip zero-sized boxes instead of stopping to look at further boxes
A zero-sized box is not really a problem and can be skipped to look at any
possibly following ones.
BMD ATEM devices specifically write a zero-sized bmdc box in the sample
description, followed by the avcC box in case of h264. Previously the avcC box
would simply not be read at all and the file would be unplayable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7564>
2024-09-23 16:48:26 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* docs/gst_plugins_cache.json:
doc: good: Update documentation cache
video4linux2 plugin now maps RGB15 which his didn't before.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>
2024-09-18 13:14:32 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: Fix a gvalue leak on error
In case we failed enumerating the supported interlacing mode, we leaked the
gvalue.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>
2024-09-17 14:27:46 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2videodec.c:
* sys/v4l2/gstv4l2videoenc.c:
v4l2: dec/enc: Flag leaked caps
We never free class held template caps, so flag the one that wasn't already
flagged.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>
2024-08-15 16:54:25 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2: object: Fix condition check to emit error
The check was reversed, so we could only emit a pipeline error
if there was no element associated with the object.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>
2024-09-17 13:28:45 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: Always tell capture queue that we want to set the CSC
Not all drivers supports it, but in general we want to try and match the
negotiated caps, so lets always try to set the CSC.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>
2024-08-15 16:01:03 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2: object: Fix support for format:Interlaced in caps probe
This notably follow the way we order the template and keeps the
format:Interlaced caps at the end. This change also fixes
an early skip check, that would skip if a driver only supports
alternate interlacing for a specific format. It also fixes
a bug where only the last resolution of a discrete frame size
was allowed to use format:Interlaced. Finally, similar to template
caps code, simplify the caps for earch featurs, making the debug output
manageable and (marginally) improve negotiation speed.
This change will make it easier to introduce memory:DMABuf.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>
2024-08-15 13:07:31 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2.c:
* sys/v4l2/gstv4l2object.c:
* sys/v4l2/gstv4l2object.h:
v4l2: Move M2M template caps probe into v4l2object
This allow reusing the code that produces output and capture devices
templates. This fixes the lack of Interlaced caps feature for M2M
devices such as decoder, encoder or converters.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>
2024-08-14 15:26:58 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2: object: Remove over indentation
This is a style fix, no functional changes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>
2024-08-14 15:21:44 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2: object: Map GST/V4L2 formats in a C array
This makes it easier to add new format in the future without
forgetting to update one of the numerous switch case. This
will also help mapping DRM formats.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>
2024-08-14 10:13:44 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
* sys/v4l2/gstv4l2object.h:
v4l2object: Expose convertion from v4l2 fourcc to GstVideoFormat
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>
2024-08-14 09:52:54 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: Change dimensions format desc field to flag
The boolean naming wasn't obvious, and having this as a flag makes
the structure a little more compact.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7540>
2024-08-13 15:07:07 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* ext/qt6/qt6glwindow.cc:
* ext/qt6/qt6glwindow.h:
qml6glsrc: Reduce capture delay
In qml6glsrc, we capture the application by copying the back buffer into
our own FBO. The afterRendering() signal is too soon as from the apitrace, the
application has been rendered into a QT internal buffer, to be used as a cache
for refresh.
Use afterFrameEnd() signal instead. This works with no delay on GLES. With GL
it seems to reduce from 2 to 1 frame delay (this may be platform specific). A
different recording technique would need to be used to completely remove this
delay.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7351>
2024-09-18 12:34:39 +0200 Piotr Brzeziński <piotr@centricular.com>
* docs/gst_plugins_cache.json:
* gst/rtp/gstrtppassthroughpay.c:
* gst/rtp/gstrtppassthroughpay.h:
rtppassthroughpay: Fix reading clock-rate and payload type from caps
They were using wrong types - while uint is correct technically, for compatibility reasons caps have them as signed int.
Values are now correctly read + added simple guards just to be sure.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7526>
2024-09-16 12:27:05 +0200 Piotr Brzeziński <piotr@centricular.com>
* docs/gst_plugins_cache.json:
* gst/rtp/gstrtppassthroughpay.c:
* gst/rtp/gstrtppassthroughpay.h:
rtppassthroughpay: Add ability to regenerate RTP timestamps
Timestamps are untouched by default, but the new mode can now be enabled to replace RTP timestamps
with ones generated from the buffer PTS. Making it an enum in case different modes are needed in the future.
That allows for a rtpjitterbuffer to do proper drift compensation, so that the stream coming out of gst-rtsp-server
is not drifting compared to the pipeline clock and also not compared to the RTCP NTP times.
Most of the code is borrowed from rtpbasepayload, as it's exactly its behaviour which I wanted to bring here.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7526>
2024-09-18 16:16:08 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/flv/gstflvmux.c:
flvmux: Use gst_aggregator_update_segment() instead of randomly pushing a segment event
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7542>
2024-02-19 21:49:21 +0800 Tim Blechmann <tim@klingt.org>
* sys/v4l2/v4l2_calls.c:
v4l2: silence valgrind warning
Valgrind complains about uninitialized memory used in an ioctl
Syscall param ioctl(VKI_V4L2_G_TUNER).reserved points to uninitialised byte(s)
at 0x719294F: ioctl (ioctl.c:36)
by 0x3126A817: gst_v4l2_fill_lists (v4l2_calls.c:185)
by 0x3126A817: gst_v4l2_open (v4l2_calls.c:589)
by 0x3123F1C2: gst_v4l2_device_provider_probe_device (gstv4l2deviceprovider.c:122)
by 0x3123F648: gst_v4l2_device_provider_device_from_udev (gstv4l2deviceprovider.c:301)
by 0x3123F998: provider_thread (gstv4l2deviceprovider.c:395)
by 0x796FA50: ??? (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.4)
by 0x710CAC2: start_thread (pthread_create.c:442)
by 0x719DA03: clone (clone.S:100)
Address 0x44008a34 is on thread 11's stack
in frame #1, created by gst_v4l2_open (v4l2_calls.c:524)
Uninitialised value was created by a stack allocation
at 0x3126A024: gst_v4l2_open (v4l2_calls.c:524)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6144>
2024-02-12 13:52:06 +0800 Tim Blechmann <tim@klingt.org>
* sys/v4l2/gstv4l2deviceprovider.c:
v4l: fix thread name
Linux thread names are limited to 15 chars. providing long thread names
causes the thread name not to be applied at all
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6094>
2024-09-12 16:44:23 +0200 Michael Tretter <m.tretter@pengutronix.de>
* sys/v4l2/gstv4l2videoenc.c:
v4l2videoenc: demote per frame message to LOG
The "Handling frame" message with the frame number is printed on every buffer.
Therefore, it should have log level LOG instead of DEBUG.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7543>
2024-09-12 16:31:50 +0200 Michael Tretter <m.tretter@pengutronix.de>
* sys/v4l2/gstv4l2videoenc.c:
* sys/v4l2/gstv4l2videoenc.h:
v4l2videoenc: remove unnecessary processing variable and dead code
"processing" is only set to FALSE and never set to TRUE. Therefore, the code
that depends on processing to be TRUE is never executed.
Remove the dead code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7543>
2024-08-13 16:38:37 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
* sys/v4l2/gstv4l2videoenc.c:
v4l2: encoder: Add dynamic framerate support
This is not trully supported in V4L2, but we can emulate this similar to
what other elements do. In this patch we ensure that 0/1 is supported by
encoders (caps query),and uses a default of 30fps whenever we need to
set a framerate into the driver.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7352>
2024-09-11 13:23:35 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/matroska/matroska-mux.c:
matroskamux: Include end padding in the block duration for Opus streams
It has to be included in the block duration but in GStreamer we're not
including it in the buffer duration, so it has to be added again here.
Not including it in the block duration can lead to fatal errors when playing
back with Firefox if there are more padding samples than actual samples, e.g.
> D/MediaDemuxer WebMDemuxer[7f6a0808b900] ::GetNextPacket: Padding frames larger
> than packet size, flagging the packet for error (padding: {13500000,1000000000},
> duration: {6000,1000000}, already processed: false)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7502>
2024-09-05 22:07:24 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux.c:
* gst/deinterlace/gstdeinterlace.c:
* gst/monoscope/gstmonoscope.c:
* gst/shapewipe/gstshapewipe.c:
* gst/videomixer/videomixer2.c:
video: Don't overshoot QoS earliest time by a factor of 2
By setting the earliest time to timestamp + 2 * diff there would be a difference
of 1 * diff between the current clock time and the earliest time the element
would let through in the future. If e.g. a frame is arriving 30s late at the
sink, then not just all frames up to that point would be dropped but also 30s of
frames after the current clock time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7459>
2024-09-11 08:28:39 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/multifile/gstsplitmuxsink.c:
splitmuxsink: Override LATENCY query to pretend to downstream that we're not live
splitmuxsink can't possibly know how much latency it will introduce as it always
keeps one GOP around before outputting something. This breaks the latency
configuration of the pipeline and we're better off just pretending that
everything downstream of the sinkpads is not live.
Especially muxers that are based on aggregator and time out on the latency
deadline can easily misbehave otherwise as the deadline will be exceeded usually.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7499>
2024-09-09 13:49:58 +0200 Wim Taymans <wtaymans@redhat.com>
* ext/jack/gstjackaudiosrc.c:
jackaudiosrc: actually use the queried ports from JACK
When no ports are given, gst_jack_get_ports() is called to get all the
(physical) output ports but then the result is ignored, triggering the
"No physical output ports found..." error.
Instead, move the queried ports to the variable we're going to use
later.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7474>
2024-09-09 11:23:53 -0400 Randy Li (ayaka) <ayaka@soulik.info>
* sys/v4l2/gstv4l2bufferpool.c:
v4l2bufferpool: actually queue back the empty buffer flagged LAST
The buffer would fail at gst_v4l2_is_buffer_valid() before,
since it has a reference on it, it is not writable.
Fixes: 105d232fdec1 ("v4l2bufferpool: queue back the buffer flagged LAST but empty")
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7479>
2024-09-02 17:45:30 +0900 Hou Qi <qi.hou@nxp.com>
* sys/v4l2/gstv4l2videoenc.c:
v4l2videoenc: unref buffer pool after usage properly
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7435>
2024-08-29 12:10:23 -0400 Thibault Saunier <tsaunier@igalia.com>
* sys/osxaudio/gstosxaudiosink.c:
* sys/osxaudio/gstosxaudiosrc.c:
osxaudio: Avoid dangling pointer on shutdown
When tearing down the elements we were still referring to the ringbuffer unique_id
as our property while it was already freed, leading to potential segfaults when
accessing the property.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7426>
2024-08-23 20:01:32 +1000 Matthew Waters <matthew@centricular.com>
* docs/gst_plugins_cache.json:
* gst/rtpmanager/gstrtpfunnel.c:
* tests/check/elements/rtpfunnel.c:
rtpfunnel: also fallback to pad default handling for unknown ssrcs
If two (or more) rtpfunnel elements are cascaded, then only one will
realistically have information on the particular ssrc that is in use for a
particular input stream. As such, any key unit requests may never reach the
corresponding encoder.
This has been discovered by combining simulcast and BUNDLE with webrtcbin.
simulcast uses one rtpfunnel, and BUNDLE uses another rtpfunnel.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7405>
2024-08-20 01:53:37 +0100 Tim-Philipp Müller <tim@centricular.com>
* gst-libs/gst/glib-compat-private.h:
* gst/interleave/interleave.c:
* gst/interleave/meson.build:
gst-plugins-good: use g_sort_array() instead of deprecated g_qsort_with_data()
Fixes compiler warnings with the latest GLib versions.
See https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4127
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7384>
2024-07-26 11:12:25 +1000 Matthew Waters <matthew@centricular.com>
* tests/examples/qt/qmloverlay/overlay.py:
tests/examples/qmlglveray.py: fix formatting for commit lint
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7244>
2024-07-26 11:12:03 +1000 Matthew Waters <matthew@centricular.com>
* tests/examples/qt/qmloverlay/overlay.py:
tests/examples/qmloverlay.py: add license and copyright headers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7244>
2024-07-26 11:10:20 +1000 Matthew Waters <matthew@centricular.com>
* tests/examples/qt/qmlsink-multisink/main.cpp:
* tests/examples/qt/qmlsink-multisink/main.qml:
* tests/examples/qt/qmlsink-multisink/videoitem/VideoItem.qml:
* tests/examples/qt/qmlsink-multisink/videoitem/videoitem.cpp:
* tests/examples/qt/qmlsink-multisink/videoitem/videoitem.h:
tests/examples/qml-multisink: add license and copyright headers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7244>
2024-07-26 11:06:30 +1000 Matthew Waters <matthew@centricular.com>
* tests/examples/qt/qmlsrc/main.cpp:
* tests/examples/qt/qmlsrc/main.qml:
tests/examples/qmlglsrc: add copytright and licenses headers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7244>
2024-07-26 11:09:44 +1000 Matthew Waters <matthew@centricular.com>
* tests/examples/qt/qmloverlay/main.cpp:
* tests/examples/qt/qmloverlay/main.qml:
* tests/examples/qt/qmloverlay/overlay.qml:
* tests/examples/qt/qmloverlay/overlay2.qml:
* tests/examples/qt/qmlsink-dynamically-added/main.cpp:
* tests/examples/qt/qmlsink-dynamically-added/main.qml:
* tests/examples/qt/qmlsink/main.cpp:
* tests/examples/qt/qmlsink/main.qml:
tests/examples/qmlglsink/overlay: add copyright and licenses headers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7244>
2024-07-26 10:54:28 +1000 Matthew Waters <matthew@centricular.com>
* tests/examples/qt6/qmlmixer/main.cpp:
* tests/examples/qt6/qmlmixer/main.qml:
* tests/examples/qt6/qmloverlay/main.cpp:
* tests/examples/qt6/qmloverlay/main.qml:
* tests/examples/qt6/qmlsink/main.cpp:
* tests/examples/qt6/qmlsink/main.qml:
* tests/examples/qt6/qmlsrc/main.cpp:
* tests/examples/qt6/qmlsrc/main.qml:
tests/examples/qml6: Add license and copyright information
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7244>
2024-08-14 13:50:37 +0200 Edward Hervey <edward@centricular.com>
* ext/qt6/gstqsg6material.h:
qt6: Remove unused field
```
In file included from ../subprojects/gst-plugins-good/ext/qt6/gstqsg6material.cc:31:
../subprojects/gst-plugins-good/ext/qt6/gstqsg6material.h:69:17: error: private
field 'mem_' is not used [-Werror,-Wunused-private-field]
69 | GstMemory * mem_;
| ^
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7414>
2024-07-26 08:18:21 +0200 Edward Hervey <edward@centricular.com>
* ext/qt6/gstqsg6material.cc:
* ext/qt6/gstqsg6material.h:
* ext/qt6/gstqt6glutility.cc:
* ext/qt6/gstqt6glutility.h:
* ext/qt6/qt6glitem.cc:
* ext/qt6/qt6glrenderer.cc:
* ext/qt6/qt6glrenderer.h:
qt6: Rename symbols to avoid conflict in static builds
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7414>
2024-08-19 21:05:43 +1000 Jan Schmidt <jan@centricular.com>
* docs/gst_plugins_cache.json:
* ext/qt/gstqsgmaterial.cc:
* ext/qt/gstqsgmaterial.h:
* ext/qt/gstqtsink.cc:
* ext/qt/qtitem.cc:
qmlglsink: Add support for external-oes textures
Support was added to qml6glsink in MR !7319
Backport similar support to the Qt5 element so it
can also support direct DMABuf import from hardware
decoders.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7393>
2024-07-22 19:28:13 +0800 Qian Hu (胡骞) <qian.hu@mediatek.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: handle unsupported hlg colorimetry gracefully
This patch addresses the issue where GStreamer would throw an error when
attempting to use bt2100-hlg colorimetry with V4L2, which is not
supported by the current V4L2 kernel. When bt2100-hlg colorimetry is set
from caps, the check for transfer (GST_VIDEO_TRANSFER_ARIB_STD_B67) is
bypassed.
The main improvement is to avoid checking the transfer value in
gst_v4l2_video_colorimetry_matches when it is
GST_VIDEO_TRANSFER_ARIB_STD_B67. This is because the transfer value in
the cinfo parameter comes from gst_v4l2_object_get_colorspace, which
converts the transfer to another value, causing a mismatch.
Since the kernel does not support GST_VIDEO_TRANSFER_ARIB_STD_B67,
gst_v4l2_object_get_colorspace cannot map it correctly from V4L2 to
GStreamer. Therefore, we ignore this check to prevent errors.
changes:
- Added a condition in gst_v4l2_video_colorimetry_matches to bypass the
transfer check when the transfer is GST_VIDEO_TRANSFER_ARIB_STD_B67.
- Ensured that the pipeline does not throw errors due to unsupported
bt2100-hlg colorimetry in V4L2.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7212>
2024-08-15 19:00:53 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxsink.c:
splitmuxsink: Update tracked running time before first fragment-opened
Before sending the first fragment-opened message on the bus, update
the output_fragment_info structure so that the sent message correctly
reports the initial running time.
Fixes #3725
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7361>
2024-08-07 15:56:08 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* ext/qt6/qt6glwindow.cc:
qt6glwindow: Fallback to GL_RGB on CopyTexImage2D error
With GLES 2.0 we are forced to use CopyTextImage2D which requires
passing an internal format. With QT6 eglfs, we need to pass GL_RGB
instead, probably because of how the texture has been created. As its
hard to guess, simply fallback to GL_RGB on failure. This fixes usage
or qml6glsrc with eglfs backend, without loosing support for
semi-transparent window on other platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7321>
2024-08-01 11:21:09 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* ext/qt6/qt6glwindow.cc:
qmlgl6src: Fix crash when use-default-fbo is false
When that property is set to its default qmlgl6src element simply crash
as it will call gst_video_frame_unmap() twice.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7290>
2024-07-03 16:03:47 +0200 Mathieu Duponchelle <mathieu@centricular.com>
* docs/gst_plugins_cache.json:
* gst/rtsp/gstrtspsrc.c:
* gst/rtsp/gstrtspsrc.h:
rtspsrc: expose property for forcing usage of non-compliant URLs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7133>
2024-08-12 22:34:17 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* sys/osxaudio/meson.build:
meson: Use required: kwarg in osxaudio to fix FIXME
This wasn't used because this feature didn't exist years ago when this
build file was written.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7340>
2024-08-12 22:33:42 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* sys/osxaudio/gstosxcoreaudio.c:
* sys/osxaudio/gstosxcoreaudiocommon.c:
* sys/osxaudio/gstosxcoreaudiocommon.h:
osxaudio: Fix build on iOS
These device-provider functions are only valid on macOS.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7340>
2024-08-12 22:23:29 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* sys/osxaudio/gstosxaudiodeviceprovider.c:
osxaudio: Remove unused function
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7340>
2024-07-31 00:09:21 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* sys/osxaudio/gstosxaudiodeviceprovider.c:
* sys/osxaudio/gstosxaudioringbuffer.c:
* sys/osxaudio/gstosxaudiosink.c:
* sys/osxaudio/gstosxaudiosink.h:
* sys/osxaudio/gstosxaudiosrc.c:
* sys/osxaudio/gstosxaudiosrc.h:
* sys/osxaudio/gstosxcoreaudio.c:
* sys/osxaudio/gstosxcoreaudio.h:
* sys/osxaudio/gstosxcoreaudiocommon.c:
* sys/osxaudio/gstosxcoreaudiocommon.h:
osxaudio: Implement unique-id property on elements
The actual value is stored on GstCoreAudio now, which involved a lot
of moving code around due to the strange layering in the plugin.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5274>
2023-09-04 02:43:19 +1000 Jan Schmidt <jan@centricular.com>
* sys/osxaudio/gstosxaudiodeviceprovider.c:
* sys/osxaudio/gstosxcoreaudio.h:
* sys/osxaudio/gstosxcoreaudiohal.c:
* sys/osxaudio/gstosxcoreaudioremoteio.c:
osxaudio: Add some device provider properties
Add is-default and unique-id properties to the device provider.
unique-id is particularly useful for recognising the device again
as it's stable for a device across reboots and replugs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5274>
2024-07-22 16:38:07 +0200 Michael Tretter <m.tretter@pengutronix.de>
* ext/qt6/RGBA_gles.frag:
* ext/qt6/gstqml6glsink.cc:
* ext/qt6/gstqsg6material.cc:
* ext/qt6/meson.build:
* ext/qt6/qsb-wrapper.py:
* ext/qt6/resources.qrc:
qml6glsink: add support for texture-target external-oes
In order to use oes-external, the qml6glsink needs a fragment shader that uses
the samplerExternalOES.
The qsb tool is not able to handle shaders that contain samplerExternalOES since
this feature is not supported by all target shading languages. The qsb tool is
able to replace a shader in the qsb file to handle this use case. Use it to
generate a shader variant that uses samplerExternalOES for OpenGL ES and select
that variant if the qml6glsink negotiated texture target oes-external.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7319>
2024-07-24 10:58:30 +0200 Michael Tretter <m.tretter@pengutronix.de>
* ext/qt6/gstqsg6material.cc:
* ext/qt6/gstqsg6material.h:
gstqsg6material: pass the texture-target from caps to shader
The Material has to select the correct Shader depending on the negotiated
texture target.
Pass the texture target from the caps to the shader creation as it is already
done for the pixel format.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7319>
2024-07-22 18:08:10 +0200 Michael Tretter <m.tretter@pengutronix.de>
* ext/qt6/gstqsg6material.cc:
gstqsg6material: create OESExternal RhiTexture if necessary
The RhiTexture must be created with the OESExternal flag, if the gl_mem is a
OESExternal buffer. Otherwise, Qt will create a Texture 2D texture and ignore
the previously negotiated texture target.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7319>
2024-07-24 09:55:59 +0200 Michael Tretter <m.tretter@pengutronix.de>
* ext/qt6/gstqsg6material.cc:
gstqsg6material: print loaded fragment shader to log
This is useful for checking that the qml6glsink selected the correct fragment
shader for the expected texture format.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7319>
2024-08-01 12:15:17 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* ext/qt6/qt6glwindow.cc:
qt6glwindow: Only use GL_READ_FRAMEBUFFER when we do blits
This fbo target is not always supported, and should only be used
along with the frame buffer blit extension.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7291>
2024-07-12 11:09:14 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxpartreader.c:
* gst/multifile/gstsplitmuxpartreader.h:
splitmuxsrc: Don't create part reader elements initially
Only create the part reader elements internally the first time
the part is activated. Saves some startup time when preloading
a large number of fragments
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-07-12 11:07:47 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxsrc.c:
splitmuxsrc: Drop lock when unpreparing parts
Parts may emit bus messages that want to take the splitmuxsrc
lock and prevent the downward state change. Avoid a deadlock
after a part sends an error message by taking a ref and
dropping the lock around the unprepare call
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-07-12 10:44:51 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxsrc.c:
splitmuxsrc: Make sure to re-take lock
In the error path when activating a part fails, make
sure to re-take the splitmuxsrc lock before returning
to the caller.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-06-21 11:53:19 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxsink.c:
* gst/multifile/gstsplitmuxsink.h:
* gst/multifile/gstsplitmuxsrc.c:
* tests/check/elements/splitmuxsink.c:
splitmuxsink: Fix race in unit tests. Add fragment-id to messages
Publish fragment-id in the messages that splitmuxsink and splitmuxsrc
send, so when they are received out of order (due to async finalization,
for example), they can still be identified / ordered correctly.
Fix a race in the splitmuxsink unit test where messages might be
received out of order
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-05-16 03:37:51 +1000 Jan Schmidt <jan@centricular.com>
* docs/gst_plugins_cache.json:
* gst/multifile/gstsplitmuxsrc.c:
splitmuxsrc: Document new properties and signals
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-05-15 18:45:15 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxpartreader.c:
* gst/multifile/gstsplitmuxpartreader.h:
* gst/multifile/gstsplitmuxsrc.c:
* gst/multifile/gstsplitmuxsrc.h:
* gst/multifile/test-splitmuxpartreader.c:
splitmuxsrc: Add num-lookahead property
Add a `num-lookahead` property that will 'prepare' a number of
fragments in advance of the playhead if they have been deactivated
or closed by a limited number of `num-open-fragments`. It can help
to avoid any play stalls reading the indexes or headers of the next
file from high-latency media or on resource limited machines.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-05-16 01:26:51 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxpartreader.c:
* gst/multifile/gstsplitmuxpartreader.h:
* gst/multifile/gstsplitmuxsrc.c:
splitmuxsrc: Rename some internal terminology
A part reader can be 'loaded' (prepared, but not currently outputting anything)
or 'playing' (actively being used to output data)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-05-10 23:25:51 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxsrc.c:
* gst/multifile/gstsplitmuxsrc.h:
* tests/examples/splitmux/meson.build:
* tests/examples/splitmux/splitmux-record-and-play-live.c:
splitmuxsrc: Allow adding fragments during playback
Trigger measurement / inclusion of new fragments into
the playback timeline if they are added after the
element is already running.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-04-30 00:33:35 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxsink.c:
* gst/multifile/gstsplitmuxsink.h:
* tests/check/elements/splitmuxsink.c:
* tests/check/elements/splitmuxsrc.c:
* tests/examples/splitmux/meson.build:
* tests/examples/splitmux/splitmuxsink-fragment-info.c:
splitmuxsink: Add fragment offset and duration to message
Publish the playback offset for and duration into the
splitmuxsink-fragment-closed bus message as each fragment
finishes.
These can be passed to splitmuxsrc via the 'add-fragment'
signal to avoid splitmuxsrc measuring all files on startup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-04-30 00:33:35 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxsink.c:
splitmuxsink: Fix a race in fragment switching with async handling
Only do output/muxer operations at the output side of splitmuxsink
to avoid races if fragments are small, by moving the RUNNING_TIME
qdata setting.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-04-30 00:33:35 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxsink.c:
* gst/multifile/gstsplitmuxsink.h:
splitmuxsink: Refactor command queue buffer
Make the command struct a bit clearer by giving it an explicit
enum cmd_type instead of just a boolean to differentiate a
finish-fragment command from a release-gop command
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-05-10 01:00:08 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxsrc.c:
splitmuxsrc: Default to only keeping 100 files open
Add a reasonably large default for the number of simulataneous
files to open, that won't affect users that split recordings into
a few large files, but will help prevent fd exhaustion for users
that make recordings with lots of small fragments
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-05-10 00:48:11 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxpartreader.c:
* gst/multifile/gstsplitmuxpartreader.h:
splitmuxsrc: Keep streams aligned during adjustments
When calculating the timestamp offset to apply to
media streams in a fragment, ensure that all fragments
are offset "together" to preserve alignment in cases
where there might gaps in a recording at a fragment boundary.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-05-03 23:41:03 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxpartreader.c:
* gst/multifile/gstsplitmuxpartreader.h:
* gst/multifile/gstsplitmuxsrc.c:
* gst/multifile/gstsplitmuxsrc.h:
* gst/multifile/test-splitmuxpartreader.c:
* tests/examples/meson.build:
* tests/examples/splitmux/meson.build:
* tests/examples/splitmux/splitmuxsrc-add-fragment.c:
* tests/examples/splitmux/splitmuxsrc-extract.c:
splitmuxsrc: Add add-fragment signal and examples
Add a signal that allows adding fragments with a specific offset
and duration directly to splitmuxsrc's list. By providing the
fragment's offset on the playback timeline and duration directly,
splitmuxsrc doesn't need to measure the fragment making for faster
startup times.
Add a bus message that's published when fragments are measured,
reporting the offset and duration, so they can be cached by an
application and used on future invocations.
Add examples for handling the bus message and using the 'add-fragment'
signal.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-04-30 00:33:35 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxpartreader.c:
* gst/multifile/gstsplitmuxpartreader.h:
* gst/multifile/gstsplitmuxsrc.c:
* gst/multifile/gstsplitmuxsrc.h:
splitmuxsrc: Add num-open-fragments property
Add a property to limit the number of parts splitmux will open
simultaneously. Modify the part handling to support deactivating
and reactivating the demuxing for each part.
The default is '0', to preserve the existing behaviour of opening
all parts at the beginning.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-04-30 00:33:35 +1000 Jan Schmidt <jan@centricular.com>
* gst/multifile/gstsplitmuxpartreader.c:
splitmuxsrc: Report minimum timestamp for each media stream
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7053>
2024-07-31 09:06:21 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* ext/qt6/qt6glwindow.cc:
qt6: glwindow: Don't leak previously rendered buffer
If the consumer reads the buffers too slowily, simply unref the
previously rendered buffer instead of leaking it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7286>
2024-07-29 09:07:40 +0800 Shengqi Yu <shengqi.yu@mediatek.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: append non colorimetry structure to probed caps
If the stream has a special colorimetry that is not in the colorimetry
list, it will cause negotiation to fail. We should allow passing any
colorimetry, so add an extra structure without the colorimetry field.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7029>
2023-02-13 16:49:40 +0800 Hou Qi <qi.hou@nxp.com>
* sys/v4l2/gstv4l2object.c:
* sys/v4l2/gstv4l2object.h:
v4l2: Fix colorimetry mismatch for encoded format with RGB color-matrix
video-info supports encoded format to have RGB color-matrix, while
v4l2object just leave the v4l2 matrix to default when mapping
GST_VIDEO_COLOR_MATRIX_RGB. It causes gst matrix changed to be
GST_VIDEO_COLOR_MATRIX_BT601 when mapping v4l2 colorimetry.
So add support for encoded format with RGB color-matrix in v4l2object.
Note that for M2M encoders, we should in theory assume that that we can
transfer this value from OUTPUT to CAPTURE queues, though its only true
if the drivers does not do CSC. For now, we don't support any RGB
codecs, but leaving a note for the future.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3952>
2024-07-29 14:39:06 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: SRGB colorspace is documented limited-range
Split JPEG and SRGB so that we can follow the specified difference. The
SRGB definition in V4L2 does not follow the standard, and is document
so. This is also why JPEG colorspace exists.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3952>
2024-07-29 11:40:01 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: Fix size of plane_size array calculation
Due to missing parenthesys, only the first element of the array was
being cleared. As it is a staticly sized array in the object, this
code could also be simplified.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3952>
2024-07-29 11:37:29 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: Fix translation of quantization
The V4L2_MAP_QUANTIZATION macro has been fixed to something a lot saner,
fix our replica accordingly. The new macro now simply set the quantization
to full range is the pixel formats is RGB based, or if the JPEG
colorspace is used.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3952>
2024-07-26 16:38:31 +1000 Jan Schmidt <jan@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux-stream.c:
adaptivedemux: Fail cleanly if parsebin is not installed
Detect a failure to construct a parsebin and error out
cleanly instead of trying to operate on a null pointer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6969>
2024-05-30 00:32:30 +0300 Jan Schmidt <jan@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux-stream.c:
adaptivedemux2: Post a bus error when failing to start download
If a download completely fails to start, due to malformed URI or so,
post a bus error instead of just stalling out with no indication
why.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6969>
2024-05-30 00:31:38 +0300 Jan Schmidt <jan@centricular.com>
* ext/adaptivedemux2/downloadhelper.c:
* ext/adaptivedemux2/gstadaptivedemux.c:
adaptivedemux2: Implement file:// URI handling
Add the ability to play HLS and DASH from local files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6969>
2024-05-29 16:35:37 +0300 Jan Schmidt <jan@centricular.com>
* ext/adaptivedemux2/hls/m3u8.c:
hlsng: Check caps are not null after parsing HLS CODECS tag
If the mime codec wasn't recognised, caps will be NULL and cause
a critical
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6969>
2024-07-23 15:32:22 +0200 Loïc Yhuel <loic.yhuel@softathome.com>
* meson.build:
meson: fix SIZEOF_OFF_T when cross-compiling with Meson >= 1.3.0
https://mesonbuild.com/Release-notes-for-1-3-0.html#clarify-of-implicitlyincluded-headers-in-clike-compiler-checks
With only stddef.h, off_t is not defined, so when cross-compiling SIZEOF_OFF_T is -1.
We now use sys/types.h which should define off_t.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7217>
2024-07-07 10:14:40 +0300 Sebastian Dröge <sebastian@centricular.com>
* docs/gst_plugins_cache.json:
* gst/debugutils/gsttaginject.c:
* gst/debugutils/gsttaginject.h:
taginject: Modify existing tag events of the selected scope
Not doing so would mean that tags would be overidden by any tag events sent by
upstream. Also only send a tag event directly if upstream never sent one.
By default use GST_TAG_MERGE_REPLACE to override tags that exist in both the
upstream event and this element with the ones from this element, but provide a
new "merge-mode" property to adjust the behaviour.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7145>
2024-07-07 19:31:14 +0300 Sebastian Dröge <sebastian@centricular.com>
* docs/gst_plugins_cache.json:
* gst/debugutils/gsttaginject.c:
taginject: Add getters for the properties
There's no reason why they should be write-only.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7145>
2024-07-07 19:30:30 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/debugutils/gsttaginject.c:
taginject: Use proper GType macro for the GstTagScope enum
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7145>
2024-07-03 16:08:40 +0300 Tihran Katolikian <katolikian@outlook.com>
* ext/qt6/gstqsg6material.cc:
qt6: explicitly specify path to QtGui private headers when including qrhi_p.h
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7131>
2024-06-12 23:25:52 +1000 Matthew Waters <matthew@centricular.com>
* ext/qt/gstqsgmaterial.cc:
qml/glsink: also support GLES2 needing shader 'precision' directives
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3616
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7024>
2024-07-01 10:00:42 +0800 Shengqi Yu <shengqi.yu@mediatek.com>
* sys/v4l2/gstv4l2object.c:
v4l2object: use v4l2 reported width for padded_width when complex video formats
Stride means bytes per line, and padded_width means pixels. Here,
padded_width shoule be pix width reported by v4l2 instead of stride.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7076>
2020-04-08 10:40:42 -0400 Xavier Claessens <xavier.claessens@collabora.com>
* meson.build:
* meson_options.txt:
build: Add missing common options that are yielding in subprojects
- Align `glib_debug`, `glib_assert` and `glib_checks` options with GLib,
otherwise glib subproject won't inherit their value. Previous names
and values are preserved using Meson's deprecation mechanism.
- Add `extra-checks` and `benchmarks` options in the main project so it
can be inherited in GStreamer subprojects.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1165>
2024-06-02 11:40:04 +0300 Jan Schmidt <jan@centricular.com>
* ext/adaptivedemux2/hls/m3u8.c:
adaptivedemux: Fix handling closed caption streams
Fix a typo "CLOSED_CAPTION" -> "CLOSED-CAPTION" and
a broken if statement that always bailed out for
closed captions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6985>
2024-06-19 02:10:29 +0100 Tim-Philipp Müller <tim@centricular.com>
* gst/dtmf/gstrtpdtmfsrc.c:
rtpdtmfsrc: minor logging clean-up
Only serialise event structure for debug logging purposes
if logging is actually enabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7060>
2024-06-19 01:55:57 +0100 Tim-Philipp Müller <tim@centricular.com>
* gst/dtmf/gstrtpdtmfsrc.c:
* tests/check/elements/dtmf.c:
rtpdtmfsrc: fix leak when shutting down mid-event
.. and update rtpdtmfdepay unit test to trigger
the potential leak more reliably (without the fix).
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3633
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7060>
2024-06-14 16:50:12 +0100 Tim-Philipp Müller <tim@centricular.com>
* tests/check/elements/dtmf.c:
rtpdtmfdepay: add unit test for caps fixation issue with downstream audioconvert
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7036>
2024-06-14 16:20:31 +0100 Tim-Philipp Müller <tim@centricular.com>
* docs/gst_plugins_cache.json:
* gst/dtmf/gstrtpdtmfdepay.c:
* tests/check/elements/dtmf.c:
rtpdtmfdepay: fix caps negotiation with audioconvert
Specify "layout" field in src template to make sure it's
set and gets fixated properly if the downstream element
supports both interleaved and non-interleaved caps.
Fixes
gst_pad_set_caps: assertion 'caps != NULL && gst_caps_is_fixed (caps)' failed
critical with e.g.
gst-launch-1.0 rtpdtmfsrc ! rtpdtmfdepay ! audioconvert ! fakesink
Not that the layout really matters in our case since we always
output mono anyway, but non-interleaved requires adding AudioMeta,
so this is the easiest fix.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7036>
2024-06-13 18:23:46 +0200 Mathieu Duponchelle <mathieu@centricular.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: fix invalid seqnum assertions
Upon fatal errors the loop function will first post an error message
then push out an EOS event.
An application may react immediately to the error message by setting the
state of the pipeline to NULL, meaning by the time we push out the EOS
event PAUSED_TO_READY may have reset the seek seqnum to -1.
While this is harmless, the assertion when setting an invalid seqnum
isn't tidy, fix this by simply not resetting to INVALID as it serves no
practical purpose and the next READY_TO_PAUSED will select a new seqnum
anyway.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7032>
2024-06-11 19:03:21 +0000 Jakub Vaněk <linuxtardis@gmail.com>
* sys/v4l2/gstv4l2src.c:
v4l2src: Interpret V4L2 report of sync loss as video signal loss
Certain V4L2 drivers can report that a video receiver is seeing
some signal, but that it is unable to synchronize to it. IOW: the driver
can sometimes report V4L2_IN_ST_NO_SYNC and not report V4L2_IN_ST_NO_SIGNAL.
In particular, I've seen the tc358743 (HDMI-to-CSI2 converter) driver
sometimes report this when deployed to a fleet of embedded Raspberry Pis.
The relevant kernel code is in [1]. The video output is not practically
usable when V4L2_IN_ST_NO_SYNC is reported (only visually corrupted frames,
sometimes with random "snow", are received). I assume that this happens when
either the HDMI cable is poorly plugged in or damaged or when a CSI2 FFC
cable is used and is damaged.
The change in this commit is useful for detecting this working-but-not-really
condition in application code. Applications already listening for the "Signal lost"
message will gain the ability to handle this condition.
There seem to be more V4L2 error flags like this, see [2]. However, I do not
have practical experience with them and adding only V4L2_IN_ST_NO_SYNC seems
like a safer option.
[1]: https://github.com/raspberrypi/linux/blob/be8498ee21aa/drivers/media/i2c/tc358743.c#L1534
[2]: https://www.kernel.org/doc/html/v6.6/userspace-api/media/v4l/vidioc-enuminput.html
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7021>
2024-06-07 15:26:00 +0200 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux-private.h:
* ext/adaptivedemux2/gstadaptivedemux-track.c:
* ext/adaptivedemux2/gstadaptivedemux.c:
adaptivedemux2: Don't send FLUSH_{START|STOP} when losing sync
The initial goal was to support the case where we are paused watching a live
stream, and when we resume we can no longer resume from the previously
downloaded position. In that case we internally do a flushing seek back to the
"current live head position". This was also extended since to be able to
handle (utterly broken) servers when we can't really figure out where we are
anymore and therefore trigger that lost sync so we can try to get back on our
feet.
This does fix the issue... but results in spurious FLUSH_{START|STOP} events
being sent downstream. While that's fine for regular playback scenarios, it's a
bit of a wild scenario since a lot of pipelines/applications don't expect such
events when it wasn't triggered by downstream/application.
Fixes #3605
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7005>
2024-05-17 14:13:11 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/flv/gstflvmux.c:
flvmux: Use GDateTime instead of gmtime()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6872>
2024-06-04 15:30:37 +0000 Corentin Damman <c.damman@intopix.com>
* ext/qt6/gstqsg6material.cc:
gstqsg6material: fix RGB format support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6991>
2023-02-07 17:07:55 +0800 Chun-wei Fan <fanc999@yahoo.com.tw>
* ext/gtk/gtkgstglwidget.c:
* ext/gtk/meson.build:
GTK plugin: Support OpenGL/WGL on Windows
This attempts to implement the gtkglsink element on Windows using WGL,
as there were some more gotchas that are along the way, since we need to
juggle with libepoxy along the way, meaning that we need a recent
GTK+-3.24.x for this to work properly, i.e. the upcoming GTK+-3.24.43.
Since we are essentially using an overlay compositor only during
rendering, move its initialization and destruction into the
gtk_gst_gl_widget_render() function, so that things are safer as we are
doing things across threads between gstreamer (gst-gl) and GTK, as GL
operations, as above, have more gotchas on Windows.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4289>
2024-06-01 15:15:18 +0300 Piotr Brzeziński <piotr@centricular.com>
* sys/osxaudio/gstosxaudiodeviceprovider.c:
macos: Listen for audio devices being added/removed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6981>
2024-05-27 14:14:24 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Only update from the Content-Base header in the initial OPTION / DESCRIBE response
Some servers send a new content base in the SETUP response, which is
just the non-aggregate control URL of the individual streams.
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3563
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6926>
2024-05-26 14:03:11 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Handle the case of `*` as session-wide control URL from the SDP
Just like the comment above says this is supposed to indicate that the
same URL should be used as for the connection so far. If encountering
this case simply do nothing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6926>
2024-05-26 14:02:12 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Also handle `rtsps://` and similar URLs as absolute in other places
Previously a direct comparison with `rtsp://` was performed, which
didn't catch cases like `rtsps://`.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3563
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6926>
2024-05-26 13:00:02 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Don't try the SETUP workaround for broken servers with absolute control URIs
Previously only control URIs that started with "rtsp://" were ignored
but it makes more sense to ignore all absolute URIs.
gst_uri_is_valid() conveniently checks for exactly that.
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3563
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6926>
2024-01-08 20:06:24 +0900 Seungha Yang <seungha@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Handle keyunit trick mode in case of push mode too
Skip non-keyframe video frames if trickmode-keyunit flag is set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5900>
2024-05-14 19:14:13 +0900 Seungha Yang <seungha@centricular.com>
* gst/isomp4/atoms.c:
qtmux: Handle time information value > UINT32_MAX
If any duration in timescale is larger than UINT32_MAX, use version 1
atom, otherwise file header will be constructed with truncated values.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6843>
2024-05-28 13:04:20 +0200 Edward Hervey <bilboed@bilboed.com>
* ext/adaptivedemux2/hls/m3u8.c:
hlsdemux2: Minor refactoring of starting segment check
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>
2024-04-15 08:47:12 +0200 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/hls/m3u8.c:
hlsdemux2: Be more tolerant when matching segments with PDT
Some servers might not provide 100% matching PDT when doing updates, or accross
variants. This would cause the code matching segments using PDT to fail if the
segment PDT was 1 microsecond (or whatever small value) before the candidate
segment. And would pick the (wrong) following segment as the matching one.
In order to be more tolerant when matching, we instead check whether the
candidate segment is within the first segment of the segment we are trying to
match.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>
2024-04-12 15:53:08 +0200 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
hlsdemux2: Fix failure to find a replacement segment on resync
If we end up with a segment with an internal time that varies from the supposed
one, this could be for two reasons:
* We guess-timated the wrong segment to go to when advancing or switching
variants. In that case we try to find the actual segment to go to (just before
this change).
* There was a complete playlist change (for whatever reason) and we can't find a
replacement. In that case we want to carry on playback from this position but
need to remember that we moved (by setting the stream to DISCONT, and
resetting the new mapping).
Fixes playback on several broken stream
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>
2024-04-12 15:52:23 +0200 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
* ext/adaptivedemux2/hls/gsthlsdemux.c:
* ext/adaptivedemux2/hls/gsthlsdemux.h:
hlsdemux2: Refactor update of GstHLSTimeMap values
This was also missing transferring the PDT if present
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>
2024-04-12 15:48:34 +0200 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/hls/m3u8.c:
hlsdemux2: Fix parsing of EXT-X-DISCONTINUITY-SEQUENCE:0
Since the default value of `m3u8->discont_sequence` (before parsing of the
playlist data) was 0 .. we would never properly detect the presence of that
field if it was present with a value of 0.
This would later on cause havoc in playlist synchronization where we would
assume it didn't have a discontinuity sequence specified (whereas it did, and it
was 0).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>
2024-04-12 15:45:16 +0200 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
hlsdemux2: Increase tolerance for discontinuity detection
A lot of streams will do a poor job of estimating proper duration of fragments
in the playlist, but over several fragments have it correct.
Instead of constantly trying to realign the estimated stream time, allow for a
more realistic tolerance of 3-4 video frames
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>
2024-04-11 16:37:36 +0200 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
hlsdemux2: Ensure a discont will be set when resetting for lost sync
This is to ensures we inform the demuxer/parsers that what follows is not contiguous
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>
2024-04-11 15:30:27 +0200 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
* ext/adaptivedemux2/hls/gsthlsdemux.c:
* ext/adaptivedemux2/hls/m3u8.c:
* ext/adaptivedemux2/hls/m3u8.h:
hlsdemux2: Fix handling of variant switching and playlist updates
When updating playlists, we want to know whether the updated playlist is
continuous with the previous one. That is : if we advance, will the next
fragment need to have the DISCONT buffer set on it or not.
If that happens (because we switched variants, or the playlist all of a sudden
changed) we remember that there is a pending discont for the next fragment. That
will be used and resetted the next time we get the fragment information.
Previously this was only partially done. And it was racy because it was set
directly on `GstAdaptiveDemux2Stream->discont` when a playlist was updated,
instead of when the next fragment was prepared.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>
2024-04-11 15:19:50 +0200 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux-stream.c:
adaptivedemux2: Only set DISCONT on beginning of fragments
This avoids accidentally setting it in the middle of a fragment, which could
cause havoc in demuxer/parsers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>
2024-04-08 16:13:13 +0200 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/hls/m3u8.c:
hlsdemux2: Fix getting starting segment on live playlists
When dealing with live streams, the function was assuming that all segments of
the playlist had valid stream_time. But that isn't TRUE, for example in the case
of failing to synchronize playlists.
Fixes losing sync due to not being able to match playlist on updates
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6610>
2024-04-18 09:16:05 +0300 Sebastian Dröge <sebastian@centricular.com>
* docs/gst_plugins_cache.json:
* gst/rtpmanager/gstrtpjitterbuffer.c:
rtpbin: Regularly emit the sync signal
Even if no new synchronization information is available.
This is necessary because the timestamp offset logic in rtpbin depends
on the base RTP time that is determined by the jitterbuffer, but this
changes all the time (especially in mode=slave) and the timestamp
offsets have to be updated accordingly. Doing so is especially important
if they're only determined by the RTP-Info, which never changes from the
very beginning.
The interval can be configured via the new min-sync-interval property.
Synchronization happens at least that often, but at most as often as the
old sync-interval property allows.
Both intervals are now based on the monotonic system clock.
Additionally, clean up synchronization code a bit, only emit either
inband NTP or RTCP SR synchronization at the same time, based on which
one has the more recent time information, and only emit RTP-Info
synchronization if it wasn't provided previously at the same time as the
NTP-based synchronization information.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-04-17 17:49:11 +0300 Sebastian Dröge <sebastian@centricular.com>
* docs/gst_plugins_cache.json:
* gst/rtpmanager/gstrtpbin.c:
* gst/rtpmanager/gstrtpjitterbuffer.c:
* gst/rtsp/gstrtspsrc.c:
rtpjitterbuffer: Set max-rtcp-rtp-sync-time to -1 (disabled)
There is generally no requirement to ignore RTCP SR if the RTP time of
the SR differs a lot from the last received RTP packet. The mapping
between RTP and NTP time stays valid until there was a stream reset, in
which case we wouldn't use that information anyway.
When using rtcp-sync-send-time=false the default of 1s difference can
easily be exceeded, e.g. if encoding of the stream after capture adds
more than 1s of latency.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-04-17 17:31:28 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpbin.c:
* gst/rtpmanager/gstrtpjitterbuffer.c:
rtpbin: Allow synchronizing against RTP-Info without having received any RTCP
Previously the information was provided from rtpjitterbuffer to rtpbin
only once the first RTCP SR was received, which is not necessary at all
as all required information is available from the caps already.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1162
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-04-17 17:17:16 +0300 Sebastian Dröge <sebastian@centricular.com>
* docs/gst_plugins_cache.json:
* gst/rtpmanager/gstrtpbin.c:
* gst/rtpmanager/gstrtpbin.h:
rtpbin: Add new never/ntp RTCP sync modes
Never is useful for some RTSP servers that report plain garbage both via
RTCP SR and RTP-Info, for example.
NTP is useful if synchronization should only ever happen based on RTCP
SR or NTP-64 RTP header extension.
Also slightly change the behaviour of always/initial to take RTP-Info
based synchronization into account too. It's supposed to give the same
values as the RTCP SR and is available earlier, so will generally cause
fewer synchronization glitches if it's made use of.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-04-17 17:12:13 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpbin.c:
rtpbin: Handle switches between RTP-Info and NTP-based stream association better
Instead of switching on the very first stream, require that all streams
have switched before switching to the different synchronization
mechanism.
Without this there will be a noticeable gap during the switch. E.g. when
going from RTP-Info to NTP-based association, first the first stream
only would get an offset, then the first two, ... then all of them.
Depending on the order of streams this will cause a lot of changes in
ts-offset during the transition.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-04-17 17:10:03 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpbin.c:
* gst/rtpmanager/gstrtpjitterbuffer.c:
rtpbin: Pass NPT start from rtpjitterbuffer to rtpbin
And use it to detect synchronization changes (e.g. seeks) more reliably
when doing RTP-Info based synchronization.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-04-17 17:01:21 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpbin.c:
rtpbin: Clean up stream association state
Use fewer magic numbers and keep track of the different synchronization
mechanisms separately. Also keep track of more state to detect more
situations when resynchronization should happen.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-04-17 16:50:30 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpbin.c:
rtpbin: Constify function parameters and use correct types
Previously these parameters were randomly changed in the body of the
function to avoid having to declare a new variable, which made the code
very hard to follow. By marking them as const this won't be possible
anymore in the future.
Also the RTP clock-base (RTP time from RTSP RTP-Info) is an unsigned
64 bit integer as it's an extended RTP timestamp.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-04-17 13:44:38 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpbin.c:
* gst/rtpmanager/gstrtpbin.h:
rtpbin: Untangle NTP-based and RTP-Info based stream association
Both were entangled previously and very hard to follow what happens
under which conditions. Now as a very first step the code decides which
of the two cases it is going to apply, and then proceeds accordingly.
This also avoids calculating completely invalid values along the way and
even printing them int the debug output.
Also improve debug output in various places.
This shouldn't cause any behaviour changes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-04-17 13:33:41 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpbin.c:
rtpbin: Remove unused variable / function parameter
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-04-17 13:30:42 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpbin.c:
rtpbin: Handle ntp-sync=true before everything else
This simplifies the code as it's a much simpler case than the normal
inter-stream synchronization, and interleaving it with that only
reduces readability of the code.
Also improve some debug output in this code path.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-04-17 13:29:08 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpbin.c:
rtpbin: Add some documentation to gst_rtp_bin_associate()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-04-17 13:21:08 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpbin.c:
rtpbin: Don't do any timestamp offsetting in rfc7273-sync=true mode
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1160
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6543>
2024-05-13 11:08:15 +0300 Sergey Krivohatskiy <s.krivohatskiy@gmail.com>
* gst/audioparsers/gstflacparse.c:
flacparse: fix buffer overflow in gst_flac_parse_frame_is_valid
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6835>
2024-05-23 14:29:49 +0100 Tim-Philipp Müller <tim@centricular.com>
* gst/level/gstlevel.c:
level: fix old "message" property doc chunk
In the online documentation the new post-messages
property would show up as deprecated refering to
itself.
Fixes #3561
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6911>
2024-05-21 17:49:33 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/gtk/gstgtkbasesink.c:
gtk: Fail initialization of the sink if GTK4 is already initialized in the same process
Initializing GTK3 and GTK4 in the same process does not work and is not
supported.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6892>
2024-05-21 17:49:42 +0200 Piotr Brzeziński <piotr@centricular.com>
* sys/osxaudio/gstosxcoreaudio.c:
* sys/osxaudio/gstosxcoreaudio.h:
* sys/osxaudio/gstosxcoreaudiocommon.h:
osxaudio: Avoid using private APIs on iOS
Turns out AudioConvertHostTimeToNanos and AudioGetCurrentHostTime are macOS-only APIs, which prevents apps using
GStreamer on iOS from being accepted into App Store.
This commit replaces those functions with a manual version of what they do - mach_absolute_time() for the current time,
and data from mach_timebase_info() at the beginning to convert host timestamps to nanoseconds.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6789>
2024-05-21 10:45:24 +0200 Diego Nieto <diego.nieto.m@outlook.com>
* tests/examples/rtsp/test-onvif.c:
rtsp-server: Remove unused define in backchannel test
The caps match with the ones used in test-onvif-backchannel,
but they are actually not used here.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6885>
2024-05-18 01:24:44 +1000 Jan Schmidt <jan@centricular.com>
* gst/rtp/gstrtpmp4gdepay.c:
rtpmp4gdepay: Set duration on outgoing buffers
If we have constant duration buffers, set the duration on
outgoing buffers, like rtpmp4adepay does. This fixes
problems with (for example) muxers like mp4mux not writing
the duration of the final sample into the index.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6878>
2024-05-13 14:58:50 +0200 Guillaume Desmottes <guillaume.desmottes@onestream.live>
* gst/wavparse/gstwavparse.c:
wavparse: reset when receiving STREAM_START
We need to reset the internal state to be able to parse a new stream.
When doing so keep seek event and do not destroy the adapter.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6840>
2024-04-26 14:41:02 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/pulse/pulsesink.c:
audioringbuffer: Avoid overflows of segment done counter
This counter is incremented once for every segment, meaning it would
e.g. overflow after 24 days when using 1ms segments. Once that happens,
completely wrong positions are reported and invalid memory is handed out
for writing/reading the next segments.
As the affected variables are unfortunately part of the public API of
the struct, a second set of variables is added together with accessor
functions and both variables are kept in sync for backwards
compatibility.
All existing users of the two variables are moved to the new ones but
external code might still run into the overflow.
This also slightly breaks API as external code updating the variables
will have no effect anymore but the only known user of this is
pulsesink.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6740>
2024-05-09 10:01:22 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/level/gstlevel.c:
level: Don't post a message on EOS without a valid audio info
If EOS is received before caps, e.g. because of an error, then rate and
number of channels would be 0 and some divisions by zero would happen.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6819>
2024-04-18 17:07:25 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux-track.c:
* ext/adaptivedemux2/gstadaptivedemux.c:
* ext/adaptivedemux2/gstadaptivedemux.h:
* ext/mpg123/gstmpg123audiodec.c:
* ext/mpg123/gstmpg123audiodec.h:
* gst/multifile/gstsplitmuxsink.c:
* gst/multifile/gstsplitmuxsink.h:
* sys/osxaudio/gstatenc.c:
* sys/osxaudio/gstatenc.h:
gst: Move GstQueueArray as GstVecDeque to core
And change lengths and indices from guint to gsize for a more correct type.
Also deprecate GstQueueArray and implement it in terms of GstVecDeque.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6779>
2024-05-05 18:29:39 +0300 Sebastian Dröge <sebastian@centricular.com>
* tests/check/elements/qtdemux.c:
qtdemux: Use `G_GUINT64_CONSTANT` when creating test caps
Otherwise this fails on 32 bit platforms.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3521
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6804>
2024-04-27 00:37:52 +0900 Seungha Yang <seungha@centricular.com>
* docs/gst_plugins_cache.json:
video: Add Y216 and Y416 formats
The same memory layout as Y212 and Y412 formats, respectively
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6745>
2024-04-11 01:49:40 +0100 Tim-Philipp Müller <tim@centricular.com>
* gst/rtp/gstrtph264depay.c:
rtph264depay: fix FU-B handling
Skip extra 16-bit DON in FU-B header.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/806
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6607>
2024-04-11 01:27:28 +0100 Tim-Philipp Müller <tim@centricular.com>
* gst/rtp/gstrtph264depay.c:
rtph264depay: minor refactoring of FU handling code
Make code easier to follow, and prepare for next commit.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6607>
2024-04-22 10:40:13 -0400 William Wedler <william.wedler@videoray.com>
* ext/qt/qtitem.cc:
fix: qmlglsink: video content resizes to new item size
Mark geometry dirty when the item rectangle changes in the
QtGLVideoItem::updatePaintNode method. This allows changes in the bounding
rectangle to be applied to the scene graph geometry node.
Fixes #3493
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6711>
2024-04-22 10:35:18 -0400 William Wedler <william.wedler@videoray.com>
* ext/qt6/qt6glitem.cc:
fix: qml6glsink: video content resizes to new item size
Mark geometry dirty when the item rectangle changes in the
QtGLVideoItem::updatePaintNode method. This allows changes in the bounding
rectangle to be applied to the scene graph geometry node.
Fixes #3493
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6711>
2024-04-26 09:45:22 +0800 Tim Blechmann <tim@klingt.org>
* ext/soup/gstsouphttpsrc.c:
soup: fix thread name
thread names should be below 16char, otherwise they won't be shown on
linux.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6736>
2024-04-19 11:31:04 +0200 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux.c:
adaptivedemux2: Answer GST_QUERY_CAPS
If we have a generic caps, we can answer the query.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6690>
2024-04-19 11:29:25 +0200 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/gstadaptivedemux.c:
adaptivedemux2: Refactor output slot creation
Set as much information as possible on the slot (including the associated
track) *before* the associated source pad is added to the element.
We need this so that incoming event/queries can be replied to if they are
received when adding the pad
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6690>
2024-04-05 17:30:01 +0200 Philipp Zabel <p.zabel@pengutronix.de>
* sys/v4l2/gstv4l2allocator.c:
v4l2bufferpool: Ensure freshly created buffers are not marked as queued
Otherwise, if we run in to the copy case, this can cause these
groups to stay around with queued flag set, but never actually
queued, until gst_v4l2_allocator_flush() is called, which then
erroneously frees the associated memories, causing the release
function to decrement the allocator refcount where it was never
incremented, resulting in early allocator disposal, and either
deadlock or use after free.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6552>
2024-04-12 17:17:53 +0800 Qian Hu (胡骞) <qian.hu@mediatek.com>
* docs/gst_plugins_cache.json:
* sys/v4l2/gstv4l2object.c:
v4l2: add multiplane y42b(yuv422m)
for some jpg file, mediatek v4l2 jpeg decoder
hardware produce multi plane YUV 4:2:2 data
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6617>
2024-04-09 11:29:46 +0900 Hou Qi <qi.hou@nxp.com>
* sys/v4l2/gstv4l2bufferpool.c:
v4l2bufferpool: queue back the buffer flagged LAST but empty
Some decoder drivers need to wait enough capture buffers before
starting to decode. But the dequeued buffer flag LAST but empty
has no chance to queue back to driver, which makes decode hang
after seek. So need to queue back such kind of buffer to driver.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6579>
2024-04-05 14:09:18 +0200 Philipp Zabel <p.zabel@pengutronix.de>
* sys/v4l2/gstv4l2bufferpool.c:
v4l2: bufferpool: Drop writable check on output pool process
Output buffers don't have to be writable. Accepting read-only buffers
from the V4L2 buffer pool allows upstream elements to write directly
into the V4L2 buffers without triggering a CPU copy into a new buffer
from the same V4L2 buffer pool every time.
Tested with the vivid output device:
GST_DEBUG=GST_PERFORMANCE:7 gst-launch-1.0 videotestsrc ! v4l2sink device=/dev/video5
With this change, gst_v4l2_buffer_pool_dqbuf() must be allowed to not
resize read-only memories of output buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6572>
2024-04-13 10:57:43 +0100 Philippe Normand <philn@igalia.com>
* ext/vpx/gstvpxcompat.h:
* ext/vpx/gstvpxdec.c:
vpxdec: Include vpx error details in errors and warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6626>
2024-04-13 10:56:29 +0100 Philippe Normand <philn@igalia.com>
* ext/vpx/gstvp9enc.c:
vp9enc: Include vpx error details in errors and warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6626>
2024-04-13 10:55:55 +0100 Philippe Normand <philn@igalia.com>
* ext/vpx/gstvpxcompat.h:
* ext/vpx/gstvpxenc.c:
vpxenc: Rename GST_VPX_WARN to GST_VPX_ENC_WARN
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6626>
2024-04-12 16:57:00 +0800 Qian Hu (胡骞) <qian.hu@mediatek.com>
* gst/isomp4/qtdemux.c:
qtdemux: fix wrong full_range offset when parsing colr box
use colr_data[18] >> 7 to get full range information, instead
of colr_data[17] >> 7
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6616>
2024-04-11 10:10:19 -0400 William Wedler <william.wedler@videoray.com>
* ext/qt6/qt6glitem.cc:
fix: qml6glsink: Notify that the returned QSGNode node has changes
Sets the QSGNode::DirtyMaterial bit when a new buffer is used for the material's texture
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3469
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6609>
2024-04-11 07:15:51 +0200 Jochen Henneberg <jochen@centricular.com>
* docs/gst_plugins_cache.json:
* ext/qt6/gstplugin.cc:
* ext/qt6/gstqml6glmixer.cc:
* ext/qt6/gstqml6gloverlay.cc:
* ext/qt6/gstqml6glsink.cc:
* ext/qt6/gstqml6glsrc.cc:
* ext/qt6/qt6glitem.cc:
qt6: Let plugin documentation show up
* Added qml6 to plugin cache
* Added 'since' markers
* Moved plugin to plugins-good where it really is
* Fixed section comments
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6603>
2024-04-11 07:14:39 +0200 Jochen Henneberg <jochen@centricular.com>
* docs/meson.build:
* ext/qt/gstplugin.cc:
* ext/qt/gstqtoverlay.cc:
* ext/qt/gstqtsink.cc:
* ext/qt/gstqtsrc.cc:
* ext/qt/qtitem.cc:
qt: Let plugin documentation show up
* Enabled cc file parsing from hotdoc
* Moved package to plugins-good where it really is
* Fixed section comments
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6603>
2024-04-10 08:19:01 +0200 Jochen Henneberg <jochen@centricular.com>
* ext/qt6/YUV_BIPLANAR.frag:
* ext/qt6/gstqml6glsink.cc:
* ext/qt6/gstqsg6material.cc:
* ext/qt6/meson.build:
* ext/qt6/resources.qrc:
qt6: Added support for NV12 input format to qml6glsink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6582>
2024-04-03 21:16:46 +0200 Jochen Henneberg <jochen@centricular.com>
* docs/gst_plugins_cache.json:
* ext/qt/gstqsgmaterial.cc:
* ext/qt/gstqtsink.cc:
qt: Added support for NV12 input format to qmlglsink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6582>
2024-04-07 19:39:58 +0900 Jimmy Ohn <yongjin.ohn@lge.com>
* ext/pulse/pulsedeviceprovider.c:
pulsedeviceprovider: Add is_default_device_name function and missing lock
Add is_default_device_name function to simplify compare device type
name and fix the missing lock when accessing default_sink_name and
default_source_name.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6558>
2024-04-01 12:01:58 -0400 Arun Raghavan <arun@asymptotic.io>
* ext/pulse/pulsesink.c:
* ext/pulse/pulsesink.h:
pulsesink: Re-enable emission of stream status messages
This was disabled almost 10 years ago because we were missing libpulse API to
avoid a deadlock. That was fixed quite a long time ago, so let's enable this
again. The defer counter becomes an atomic, as we no longer have a threaded
mainloop lock protecting it.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3444
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6500>
2024-04-08 13:04:31 +0100 Philippe Normand <philn@igalia.com>
* ext/vpx/gstvpxenc.c:
vpxenc: Include vpx error details in errors and warnings
The vpx_codec_t err_detail string usually provides additional context about the
error, so include it in GStreamer warnings and errors, when it's not NULL.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6573>
2024-04-08 19:53:06 +0200 Jochen Henneberg <jochen@centricular.com>
qt6: Fixes for dummy texture
* RED_OR_ALPHA8 will map value to alpha for OpenGL, use R8 to avoid
2nd shader
* Determine texel size for proper texture memory preparation
* QByteArray::fromRawData() does shallow copy and thus leads to use of
corrupted memory
* Make sure RGBA dummy texture is fully opaque
* QRhiTexture::create() must be called to allocate texture resources
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6578>
2024-04-06 02:28:44 +0200 Jochen Henneberg <jochen@centricular.com>
* ext/qt/gstqsgmaterial.cc:
* ext/qt/gstqsgmaterial.h:
qt: Fixup for dummy textures
* Initialize dummy texture Ids
* Ensure YUV->RGB matrix set for dummy textures
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6578>
2024-04-04 13:21:44 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpbin.c:
rtpbin: Don't re-use a variable for a completely different purpose temporarily
During RTP-Info synchronization, clock_base was temporarily switched
from the actual clock-base to the base RTP time and then back some lines
later.
Instead directly work with the base RTP time. The comment about using a
signed variable for convenience doesn't make any sense because all
calculations done with the value are unsigned.
Similarly, rtp_clock_base was overridden with the rtp_delta when
calculating it, which was fine because it is not used anymore
afterwards. Instead, introduce a new variable `rtp_delta` to make this
calculation clearer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6536>
2024-04-04 13:19:18 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpbin.c:
rtpbin: Convert clock-base to extended RTP timestamp correctly
It's not in the same period as the current RTP base time but always in
the very first period. This avoids using it again at a much later time.
The code in question is only triggered with rtcp-sync=rtp-info.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6536>
2024-04-04 13:11:54 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtpmanager/gstrtpjitterbuffer.c:
rtpjitterbuffer: Use an extended RTP timestamp for the clock-base
It is compared to other extended RTP timestamps all over rtpjitterbuffer
and since 4df3da3bab8 the initial extended RTP timestamp is not equal
anymore to the plain RTP time.
Continue passing a non-extended RTP timestamp via the `sync` signal for
backwards compatibility. It will always be a timestamp inside the first
extended timestamp period anyway.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6536>
2024-04-03 15:01:52 +0300 Sebastian Dröge <sebastian@centricular.com>
* docs/gst_plugins_cache.json:
* gst/rtsp/gstrtspsrc.c:
* gst/rtsp/gstrtspsrc.h:
rtspsrc: Optionally timestamp RTP packets with their receive times in TCP/HTTP mode
Until https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6509
this was accidentally done inside rtpjitterbuffer for many years, and
doing so potentially solves problems on some streams while introducing
problems on others.
Make this configurable on rtspsrc and default to not set timestamps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6529>
2024-04-02 21:30:50 +1100 Jan Schmidt <jan@centricular.com>
* gst/rtpmanager/rtpjitterbuffer.c:
rtpjitterbuffer: Don't use estimated_dts to do default skew adjustment
When the buffer DTS is estimated based on arrival time at the
jitterbuffer (rather than provided on the incoming buffer itself),
it shouldn't be used for skew adjustment. The typical case is
packets being deinterleaved from a tunnelled TCP/HTTP RTSP stream,
and the arrival times at the jitter buffer are not well enough
correlated to usefully do skew adjustments.
This restores the original intended behaviour for the 'estimated dts'
path, that was broken years ago during other jitterbuffer refactoring.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6509>
2024-04-06 12:26:39 +0300 Sebastian Dröge <sebastian@centricular.com>
* ext/flac/meson.build:
flac: Add wrap file and add fallback for it to the flac plugin
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6553>
2024-02-28 11:28:23 +0800 Tim Blechmann <tim@klingt.org>
* sys/v4l2/gstv4l2object.c:
v4l2: enforce a pixel aspect ratio of 1/1 if no data are available
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6242>
2024-04-05 14:21:38 +0200 Philipp Zabel <p.zabel@pengutronix.de>
* sys/v4l2/gstv4l2allocator.c:
v4l2: allocator: Fix unref log/trace on memory release
Use gst_object_unref() instead of g_object_unref() in
gst_v4l2_allocator_release(), so refcounting log and
tracer get to know about this unref.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6551>
2024-03-29 11:14:54 +0900 Elliot Chen <elliot.chen@nxp.com>
* sys/v4l2/gstv4l2object.c:
v4l2: fix error in calculating padding bottom for tile format
This is a regression while porting to arbitrary tile dimensions
introduced in !3424.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6480>
2024-03-20 13:57:56 -0500 Elizabeth Figura <zfigura@codeweavers.com>
* sys/osxaudio/gstatdec.c:
* sys/osxaudio/gstatdec.h:
atdec: Handle channel counts greater than 2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6157>
2024-02-20 13:20:12 -0600 Elizabeth Figura <zfigura@codeweavers.com>
* sys/osxaudio/gstatdec.c:
atdec: Use gst_audio_decoder_set_output_caps() directly
The code currently sets the same caps in two different ways, and neither of them correctly handle the channel mask.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6157>
2024-04-01 14:41:21 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/audioparsers/gstwavpackparse.c:
wavpackparse: Use an unsigned integer for the block size calculations
It's never negative.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6498>
2024-04-01 14:36:19 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/audioparsers/gstwavpackparse.c:
wavpackparse: Fix potential integer overflow on ID_ODD_SIZE blocks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6498>
2024-04-01 14:33:05 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/audioparsers/gstwavpackparse.c:
* gst/audioparsers/gstwavpackparse.h:
wavpackparse: Explicitly handle ID_WVX_NEW_BITSTREAM
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6498>
2024-03-28 09:46:08 +0100 Robert Guziolowski <robert.guziolowski@gmail.com>
* ext/qt6/gstqsg6material.cc:
qml6glsink: fix destruction of underlying texture
One should not directly delete the QRhiTexture instance.
Instead it should be marked as to be deleted once QRhi::endFrame()
is called (see: https://doc.qt.io/qt-6/qrhiresource.html#deleteLater )
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3443
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6467>
2024-03-28 19:49:46 +0000 Tim-Philipp Müller <tim@centricular.com>
* tests/check/elements/rtpred.c:
tests: rtpred: fix out-of-bound writes
Don't write more data to the buffer than we allocated
space for.
Fixes #3312
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6474>
2024-03-27 15:21:56 +0900 Haihua Hu <jared.hu@nxp.com>
* sys/v4l2/gstv4l2src.c:
v4l2src: need maintain the caps order in caps compare when fixate
if the calculated "distance" of caps A and B from the preference are
equal, need to keep the original order instead of swap them
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6451>
2024-03-26 23:53:30 +1100 Jan Schmidt <jan@centricular.com>
* gst/rtp/gstrtpmp4adepay.c:
rtpmp4adepay: Set duration on outgoing buffers
If we can calculate timestamps for buffers, then set the duration
on outgoing buffers based on the number of samples depayloaded.
This can fix the muxing to mp4, where otherwise the last packet
in a muxed file will have 0 duration in the mp4 file.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6447>
2024-03-26 13:33:56 +0200 Sebastian Dröge <sebastian@centricular.com>
* docs/gst_plugins_cache.json:
* gst/rtpmanager/gstrtphdrext-ntp.c:
rtphdrext-ntp: Fix typo of the RFC number in the element metadata
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3417
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6439>
2024-03-21 18:07:42 +0900 Hou Qi <qi.hou@nxp.com>
* sys/v4l2/gstv4l2object.c:
v4l2: Also set max_width/max_height if enum framesize fail
Some driver doesn't implement enum_framesize. The maximum supported
size can be got by trying format with a very large size. Also need
to set max_width/max_height for this case, otherwise default encoded
buffer size 256kB is too small.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6416>
2024-03-20 08:44:31 +0100 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/downloadhelper.c:
adaptivedemux2: Add libsoup tracing debug
Provides more information for debugging
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6409>
2024-03-18 15:07:28 +0100 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
* ext/adaptivedemux2/hls/gsthlsdemux-preloader.c:
* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
* ext/adaptivedemux2/hls/gsthlsdemux.c:
* ext/adaptivedemux2/hls/m3u8.c:
adaptivedemux2: Don't use g_str_equal on potentially NULL strings
It is only meant to be used as a callback. The fallback macro uses strcmp which
doesn't handle NULL strings gracefully. Instead use g_strcmp0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6392>
2024-03-18 15:02:29 +0100 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/hls/gsthlsdemux.c:
hlsdemux2: Avoid NULL pointer usage
The pending/current variant are both NULL when the demuxer is resetted.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6392>
2024-03-18 15:00:02 +0100 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/gstadaptivedemuxutils.c:
adaptivedemux2: Handle context going away
This issue can happen when the scheduler loop was stopped (and context went
away). We no longer want to push/pop main context threads.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6392>
2024-03-18 14:57:43 +0100 Edward Hervey <edward@centricular.com>
* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
hlsdemux2: Improve detection of playlist updates
In the case we are not updating an existing playlist, we only want to reset the
download error count if the URI we are downloading was not the previous one we
were trying to load
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6392>
2024-03-13 13:39:21 +0100 Alexander Slobodeniuk <aslobodeniuk@fluendo.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: remove 'deprecated' flag from the 'push-backchannel-sample' signal
It seems that it was added by accident when copying from push-backchannel-buffer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6355>
2024-03-11 10:39:27 +0200 Sebastian Dröge <sebastian@centricular.com>
* ext/mpg123/gstmpg123audiodec.c:
mpg123audiodec: Correctly handle the case of clipping all decoded samples
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3365
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6318>
2024-02-28 19:25:52 +0100 Piotr Brzeziński <piotr@centricular.com>
* sys/osxaudio/gstatenc.c:
* sys/osxaudio/gstatenc.h:
* sys/osxaudio/gstosxaudio.c:
* sys/osxaudio/gstosxcoreaudiocommon.h:
* sys/osxaudio/meson.build:
macos: Add Apple AAC encoder (atenc)
Adds the `atenc` element capable of encoding AAC-LC audio, using the AudioToolbox framework.
It's able to encode up to 7.1 channel configurations.
Comes with basic knobs for rate control (bitrate for CBR, quality for VBR).
Support for more profiles (LD, HE-AAC) should be simple, but is not included here because of bugs
with parsing of the AudioSpecificConfig.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6254>
2024-02-26 14:57:32 +0100 Piotr Brzeziński <piotr@centricular.com>
* sys/osxaudio/gstatdec.c:
* sys/osxaudio/gstatdec.h:
* sys/osxaudio/gstosxaudio.c:
* sys/osxaudio/meson.build:
macos: Move atdec from applemedia (-bad) to osxaudio (-good)
osxaudio has a few helper methods potentially useful in atdec (or future atenc), like GStreamer -> CoreAudio
channel mapping. Doesn't make sense to duplicate them in applemedia, and atdec is the only audio-oriented
element there anyway.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6223>
2024-03-11 18:13:37 +0100 Piotr Brzeziński <piotr@centricular.com>
* gst/isomp4/qtdemux.c:
qtdemux: Fix wrapping temporary memory in buffers
That memory can disappear at any moment, doesn't cost much to just copy those few bytes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6320>
2024-01-31 00:32:22 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Don't invoke close when stopping if we've started cleanup
When we're doing a state change from PLAYING to NULL, first we invoke
gst_rtspsrc_loop_send_cmd_and_wait (..., CMD_CLOSE, ...) during
PAUSED_TO_READY which will schedule a TEARDOWN to happen async on the
task thread.
The task thread will call gst_rtspsrc_close(), which will send the
TEARDOWN and once it's complete, it will call gst_rtspsrc_cleanup()
without taking any locks, which frees src->streams.
At the same time however, the state change in the app thread will
progress further and in READY_TO_NULL it will call gst_rtspsrc_stop()
which calls gst_rtspsrc_close() a second time, which accesses
src->streams (without a lock again), which leads to simultaneous
access of src->streams, and a segfault.
So the state change and the cleanup are racing, but they almost always
complete sequentially. Either the cleanup sets src->streams to NULL or
_stop() completes first. Very rarely, _stop() can start while
src->streams is being freed in a for loop. That causes the segfault.
This is unlocked access is unfixable with more locking, it just leads
to deadlocks. This pattern has been observed in rtspsrc a lot: state
changes and cleanup in the element are unfixably racy, and that
foundational issue is being addressed separately via a rewrite.
The bandage fix here is to prevent gst_rtspsrc_stop() from accessing
src->streams after it has already been freed by setting src->state to
INVALID.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6302>
2024-03-07 17:36:33 +0100 François Laignel <francois@centricular.com>
* gst/rtpmanager/gstrtpptdemux.c:
webrtc: add all SSRC attributes getting CAPS for a PT
The transport stream only returned the CAPS for the first matching PT entry
from the `ptmap`. Other SSRC with the same PT where not included. For a stream
which bundled multiple audio streams for instance, only the first SSRC was
knowed to the SSRC demux and downstream elements.
This commit adds all the `ssrc-` attributes from the matching PT entries.
The RTP jitter buffer can now find the CNAME corresponding its SSRC even if it
was not the first to be registered for a particular PT.
The RTP PT demux removes `ssrc-*` attributes cooresponding to other SSRCs
before pushing SSRC specific CAPS to downstream elements.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6119>
2024-03-07 16:17:41 +0100 Michael Tretter <m.tretter@pengutronix.de>
* meson_options.txt:
meson: Fix description in qt options
The qt-x11 description contains a copy/paste error from the qt-wayland option.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6292>
2024-02-16 18:11:07 +0100 Mathieu Duponchelle <mathieu@centricular.com>
* gst/rtp/gstrtpgstpay.c:
rtpgstpay: flush on EOS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5173>
2023-08-11 13:06:24 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/rtp/gstrtpgstpay.c:
* gst/rtp/gstrtpgstpay.h:
rtpgstpay: Delay pushing of event packets until the next buffer
And also re-timestamp them with the current buffer's PTS.
Not doing so keeps the timestamps of event packets as
GST_CLOCK_TIME_NONE or the timestamp of the previous buffer, both of
which are bogus.
Making sure that (especially) the first packet has a valid timestamp
allows putting e.g. the NTP timestamp RTP header extension on it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5173>
2024-02-26 19:17:27 -0600 Elizabeth Figura <zfigura@codeweavers.com>
* gst/isomp4/qtdemux.c:
qtdemux: Do not set channel-mask to zero
Leave it uninitialized, so that the downstream decoder will initialize it appropriately. Setting it to zero is wrong.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6225>
2024-03-01 02:44:57 +1100 Jan Schmidt <jan@centricular.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Parse Speed/Scale before Range in responses
Parse the speed and scale in the server's response
*before* the range, so that the range start/stop
are swapped (or not swapped) correctly based
on the server's actual chosen values. Otherwise,
the old rate from the segment is used - what the
last seek asked for, but not necessarily what
the server chooses.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6248>
2024-02-29 12:06:25 +1100 Jan Schmidt <jan@centricular.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Handle queries and events with no manager
When doing direct output with no session manager, we still
want to respond to queries and events from downstream, so
install the handlers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6248>
2024-02-29 11:14:47 +1100 Jan Schmidt <jan@centricular.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: return NO_PREROLL on PLAYING->PAUSED too
When transitioning back to PAUSED and rtspsrc is live, return
NO_PREROLL so the pipeline knows to skip preroll here too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6248>
2024-02-24 11:07:26 +0000 Tim-Philipp Müller <tim@centricular.com>
* gst/rtsp/gstrtspsrc.c:
rtspsrc: Consider 503 Service Not Available when handling broken control urls
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6213>
2024-03-05 12:58:57 +0000 Tim-Philipp Müller <tim@centricular.com>
* README.md:
* RELEASE:
* meson.build:
Back to development
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6261>
=== release 1.24.0 ===
Generated by dwww version 1.16 on Sat Oct 3 03:25:08 CEST 2026.