Commit graph

121336 commits

Author SHA1 Message Date
Edward Hervey
6d30b82054 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-10 15:01:04 +00:00
Will Miller
05158769c3 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>
2025-01-10 11:19:52 +00:00
L. E. Segovia
bc285dbbbe ges: Fix Xcode-provided Python library name fetching
Both INSTSONAME and LDLIBRARY point to the Python interpreter, not to
libpythonX.Y.dylib, unlike the pythonX.Y-embed module Xcode provides.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8199>
2025-01-10 00:08:56 +00:00
L. E. Segovia
06192c125b ges: Fix Python library name fetching on Windows
The fix in 753aeccde7 is also needed here.

See #3368

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8199>
2025-01-10 00:08:56 +00:00
Olivier Crête
1485a387a4 codec-utils: Add missing nullable annotation to new APIs
Those APIs are documented to sometimes return NULL.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8271>
2025-01-09 22:43:54 +00:00
Colin Kinloch
4a56c82f0c wayland: Print table split when DMABuf format changes
The `zwp_linux_dmabuf_v1` doesn't specify an order for modifier events
to be sent.

In my case the linear format was sent last resulting in the first item
in each row being the previous format.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8272>
2025-01-09 18:34:51 +00:00
Mathieu Duponchelle
a15c786db5 docs: implement pre-commit hook to check cache updates and since tags
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8231>
2025-01-09 16:19:39 +00:00
Mathieu Duponchelle
c276f5daca doc: store path to dynamic library in plugin configuration
This can then be used by the pre-commit hook to avoid rebuilding
complete plugin caches to check a change, thus minimizing the potential
diff and making analysis of completely-unrelated cache diffs much less
likely.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8231>
2025-01-09 16:19:39 +00:00
Mathieu Duponchelle
7b4e6e67d3 docs: start using custom_target instead of run_command for sitemap
Intead of passing around the output of the config generator program,
which consists of paths joined by a separator we can have the generator
simply produce an extra file containing those paths.

This commit only implements the new approach for the core plugins, as
this was needed to avoid spurious meson rebuilds when the pre-commit
hook regenerates the core plugins_cache.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8231>
2025-01-09 16:19:39 +00:00
Mathieu Duponchelle
506680c86c docs: list doc sources explicitly for GStreamer core
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8231>
2025-01-09 16:19:39 +00:00
Mathieu Duponchelle
8fa87f45f9 docs: start listing sources explicitly in hotdoc configuration files
A JSON configuration file is generated for core plugins, which maps
plugin names with sources to parse for docstrings.

The file is then opened by the configuration generator script, which
will now favor explicitly listed files to (usually wildcarded) paths
passed on its command line.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8231>
2025-01-09 16:19:39 +00:00
Philippe Normand
14f6d9a53f wpevideosrc: Clear cached SHM buffers after caps re-negotiation
Otherwise buffers not corresponding to the negotiated caps might be pushed
downstream.

Fixes #4094

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8212>
2025-01-09 10:37:49 +00:00
Philippe Normand
0f667d140d wpevideosrc: Post progress messages on the bus
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8217>
2025-01-09 07:49:51 +00:00
Philippe Normand
e908d22c44 wpevideosrc: Handle latency queries
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8217>
2025-01-09 07:49:51 +00:00
Seungha Yang
f7e70e5261 d3d12mipmapping: Add mip-levels property
Generating full levels would result in waste of GPU resource
depending on rendering usecase. Adding a property to make it
controllable

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8255>
2025-01-08 22:46:14 +00:00
Seungha Yang
ca82e717c6 d3d12mipmapping: Add YUV and 64bits output formats
Add support for YUV and 64bits output formats to avoid
colorspace conversion and bitdepth loss

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8255>
2025-01-08 22:46:13 +00:00
Olivier Crête
33259e7ea4 analytics: Tensor dimensions are always row-major or col-major
Simplify by removing the extra fields, as this is what all
frameworks give us.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8250>
2025-01-08 21:47:52 +00:00
Thibault Saunier
bb6bf7d23b ges: pipeline: Implement context sharing logic
That is the logic from `playbin2`

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7883>
2025-01-08 21:01:17 +00:00
Tim-Philipp Müller
0cb829c589 svtjpegxsenc: add support for interlaced video
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219>
2025-01-08 19:48:31 +00:00
Tim-Philipp Müller
3dcc6f4807 video-info: add "field-order" field to serialised caps also for interlace-mode=fields
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219>
2025-01-08 19:48:31 +00:00
Tim-Philipp Müller
a62e517f6d videoencoder: copy over the field order for more interlace modes
.. when copying over video info things from the input state
to the output state.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219>
2025-01-08 19:48:31 +00:00
Tim-Philipp Müller
661c31f0bf svtjpegxsenc: factor out encoding of codestream into separate function
Prepare for interlacing support where an interlaced image
is coded as two codestreams each representing a field.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219>
2025-01-08 19:48:31 +00:00
Tim-Philipp Müller
ef57213426 mpegtsmux: add support for interlaced JPEG XS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219>
2025-01-08 19:48:31 +00:00
Tim-Philipp Müller
306200e10e svtjpegxsdec: add support for interlaced video
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219>
2025-01-08 19:48:31 +00:00
Tim-Philipp Müller
71aacec532 svtjpegxsdec: drop frames that had decoding errors
Follow-up to !8163

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219>
2025-01-08 19:48:30 +00:00
Tim-Philipp Müller
a589575bd8 svtjpegxsdec: factor out decoding of codestream into separate function
Prepare for interlacing support where an interlaced image
is coded as two codestreams each representing a field.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219>
2025-01-08 19:48:30 +00:00
Tim-Philipp Müller
23ffffe57b tsdemux: handle interlaced JPEG XS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8219>
2025-01-08 19:48:30 +00:00
Stéphane Cerveau
570c086254 vkh265dec: update only vps/sps on demand and pass pps always
As PPS can change over the stream, the pps should be always
updated to avoid missing picture parameters sets.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8124>
2025-01-08 18:50:33 +00:00
Stéphane Cerveau
73c4eb3001 vkh264dec: update only sps on demand and pass pps always
As PPS can change over the stream, the pps should be always
updated to avoid missing picture parameters sets.

See CABA3_TOSHIBA_E.264 in fluster resources.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8124>
2025-01-08 18:50:33 +00:00
Mathieu Duponchelle
33da5f0d5d appsink: fix initial pile-up of caps events
appsink was queuing the caps event both in its GstBaseSinkClass.set_caps()
and its GstBaseSinkClass.sink_event() implementation, but only signaling
new_event from `sink_event`.

This caused `new_event` callbacks to start lagging by one.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7749>
2025-01-08 09:00:31 +00:00
Samuel Thibault
727424452a meson: Fix build with gtk3 but not wayland
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8222>
2025-01-08 07:53:36 +00:00
Mathieu Duponchelle
cc7c3183f4 docs/contribute: add section about fixing since tags
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7531>
2025-01-07 20:05:19 +01:00
Alex Ashley
f3e9330575 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>
2025-01-07 14:49:26 +00:00
Piotr Brzeziński
8f5caeb86d 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 2df9283d3f

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7856>
2025-01-07 11:55:03 +00:00
Piotr Brzeziński
212290baf0 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>
2025-01-07 11:55:03 +00:00
Piotr Brzeziński
49489d35ae 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>
2025-01-07 11:55:02 +00:00
Piotr Brzeziński
307cfc2561 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-07 11:55:02 +00:00
Ruben Gonzalez
47c29127b6 tracers: Fix issue in the BC layer added in refactor to simplify params handling
Issue added in refactor done in commit 5e18499372, which includes a
logic to not break the backward compatibility. Issue found with Rust
pcap-writer tracer, fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/644

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8248>
2025-01-06 20:29:00 +01:00
Dean Zhang (张安迪)
e000a1ec1f 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>
2025-01-06 16:27:53 +00:00
Sebastian Dröge
06a0ab7b33 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>
2025-01-06 11:43:59 +00:00
Sebastian Dröge
32e79c1041 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>
2025-01-06 11:43:59 +00:00
Christian Meissl
422fca76ca qtdemux: fix accumulated base offset in segment seeks
analog to fix for matroska-demux
commit f3c126d07c

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8240>
2025-01-06 09:44:00 +00:00
Guillaume Desmottes
94253529c4 glmixerbin: derivate the mixer name from the bin name
Make it easier to identify a specific instance in logs in complex
pipelines.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8183>
2025-01-06 07:50:43 +00:00
Guillaume Desmottes
69cd1a2d60 glcontext: add trace log when scheduling function in GL thread
There is already a log when the function is executed. Adding one when
scheduled can be useful to know how long we are waiting.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8190>
2025-01-06 06:56:50 +00:00
Sam James
775a2bd26f codec2json: move option to right section
It has an external dependency (json-glib) so should be under
that heading.

Fixes: fd588a50e4
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8238>
2025-01-04 20:30:07 +00:00
Sam James
fd54c57260 analyticsoverlay: move option to right section
It has an external dependency (pango/cairo) so should be under
that heading. Also, fix an inconsistency with the ':' style.

Fixes: 95464c8977
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8238>
2025-01-04 19:53:00 +00:00
Tim-Philipp Müller
64970e721f tcpclientsrc, tcpserversrc: don't try to get stats from NULL socket
Fixes criticals during gst-inspect.

Wasn't an issue before because the entire stats gathering
code path was inactive.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8211>
2025-01-04 12:20:18 +00:00
Tim-Philipp Müller
b4bef7fd35 tcpclientsrc, tcpserversrc: fix tcp stats gathering
Fix-up after commit e56b78417. Unclear how that could
ever have worked. Code only built because basically
everything was disabled due to the missing config.h
include.

- Include config.h so that HAVE_* defines are available.
- Fix missing variable declarations that somehow disappeared
  when moving the stats gathering code block into a separate
  function in a new file.
- Fix structure variable modified to match name in new function.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8211>
2025-01-04 12:15:03 +00:00
Daniel Morin
e272e229e8 python tests: Adapt analytics unit test
- Adapt test to batch size moved into dims field

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8191>
2025-01-03 23:14:39 +00:00
Daniel Morin
0a343fa738 analytics: remove batch-size
- Batch-size will be the outer-most dimension. Presence of batch dimension can
  be identified using `dims` and `id`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8191>
2025-01-03 23:14:39 +00:00