Commit graph

267 commits

Author SHA1 Message Date
Eva Pace
999d08c5bc net/webrtc/janusvr: add new source element
Co-authored-by: Guillaume Desmottes <guillaume.desmottes@onestream.live>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1473>
2025-05-27 05:56:06 +00:00
dukesook
6b54566a85 mp4mux: add extra brands
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2245>
2025-05-23 17:47:42 +03:00
Sebastian Dröge
b511beaf2c gtk4: Update default GTK4 target version to 4.10
If necessary, support for older versions can still be enabled by
disabling the default but like this it will at least work correctly
(even if less efficient as it could) with newer GTK versions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2252>
2025-05-22 17:12:53 +03:00
Sebastian Dröge
d8d988427f Update plugins docs cache
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2243>
2025-05-13 20:14:33 +03:00
Mathieu Duponchelle
2e03d4f693 awstranslate: expose new accumulator-lateness property
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2221>
2025-05-05 15:41:09 +00:00
Thibault Saunier
5a4e536d6a skia: Implement a video compositor using skia
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1847>
2025-04-28 21:26:02 +03:00
Sebastian Dröge
03e9a9f0fe fmp4mux: Add support for AC-3 / EAC-3
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2208>
2025-04-28 08:13:36 +00:00
Philippe Normand
6f7a1e21d5 pcap_writer: Mark target-factory and pad-path props as construct-only
Otherwise the tracer's constructed() vfunc will emit a warning and will not
configure the tracer hooks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2209>
2025-04-20 10:24:13 +00:00
Sebastian Dröge
c5e4181613 fmp4mux: Only allow caps-related header updates if header-update-mode=caps
In none mode nothing is expecting updated headers, in the other existing
modes the goal is to get an updated header at the end with the duration.

So add a new mode specifically for caps changes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2193>
2025-04-14 13:38:20 +00:00
Sebastian Dröge
a7f7b93ca0 fmp4mux: Add new start-fragment-sequence-number property
This allows configuring the sequence number used in the first mfhd and
defaults to 0.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2193>
2025-04-14 13:38:20 +00:00
Sebastian Dröge
dd6cf65a18 fmp4mux: Add new decode-time-offset property
This allows shifting the decoding timeline by changing the decode time
of all streams in the tfdt box.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2193>
2025-04-14 13:38:20 +00:00
Sebastian Dröge
c37e0b2fa9 livesync: Notify in/out/drop/duplicate properties on change
And add a new silent property that defaults to false for disabling the
notifications, just like in audiorate and videorate.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2200>
2025-04-11 11:31:51 +00:00
Sebastian Dröge
916e946bf1 fmp4mux: Add manual-split mode that is triggered by serialized downstream events
The chunk / fragment duration properties are only used for configuring
the latency in this mode, and split-at-running-time splits have no
effect. Similarly, no force-keyunit events are sent in this mode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2182>
2025-04-08 17:30:08 +03:00
Sebastian Dröge
a598fb2e28 fmp4mux: Add send-force-keyunit property
Setting this to false will cause fmp4mux to stop sending force-keyunit
events for the fragment boundaries.

By default this is enabled and keeps the existing behaviour.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2177>
2025-04-06 10:31:35 +00:00
eipachte
a82a4f6d0f hlssink3: Support NTP Timestamp in GstBuffer
We want to enable retrieving the segment start timestamp from the GST
buffer instead of calculating it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2017>
2025-03-26 22:32:05 +00:00
Sebastian Dröge
24536fef73 colordetect: Change to videofilter base class
And also work in passthrough mode to not require all input buffers to be
writable unnecessarily.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2131>
2025-03-26 19:17:35 +00:00
Sanchayan Maity
23c9b28ec7 hlsmultivariantsink: Allow specifying playlist/segment location for rendition & variants
Prior to this, the segment location was derived from the
multivariant playlist location and the template for the
segment was hard coded. Remove this restriction but note
that this also now requires users to specify the segment
and CMAF init track location per variant or rendition.

Do the same for media playlist location as well.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2062>
2025-03-13 15:42:32 +00:00
Thibault Saunier
1aee7b1670 doc: Update to latest way of generating hotdoc config files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2107>
2025-03-12 08:36:16 -03:00
Mathieu Duponchelle
780c724902 translationbin: expose read-only translator property on source pads
This lets users easily change the tokenization method on the translator
object for instance.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2124>
2025-03-10 10:02:58 +02:00
Carlos Bentzen
6ba49c4dce vvdec: add VVdeC VVC/H.266 decoder element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1279>
2025-03-05 20:51:44 +01:00
Mathieu Duponchelle
d0db66d61e transcriberbin: implement dynamic language update
Previously, transcriberbin only supported updating translation languages
while playing by resetting the state of the transcriber to NULL
beforehand, as for instance the speechmatics transcriber needs to
reestablish a connection to request new languages.

Now that translationbin exists, we can request new languages without
restarting the transcriber (this commit also implements support for this
in translationbin).

There is some code duplication as the old method still needs to be
supported, and not all code was trivially factorizable, but after some
refactoring most of the code for updating languages is shared
nevertheless.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2072>
2025-02-26 17:00:13 +01:00
Brad Hards
2130c3bfbe mux/mp4: add image sequence mode
Image sequence is defined in ISO/IEC 23008-12 (HEIF), as a variant of
video. The key difference is that image sequence timing is advisory.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2101>
2025-02-26 13:56:09 +00:00
Thibault Saunier
2a11f0b577 tracers: pipeline-snapshot: Add websocket support for dots-viewer
Allows connecting to a dots-viewer server instance to trigger pipeline
snapshots remotely through the web interface.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1956>
2025-02-24 16:27:25 -03:00
Thibault Saunier
bd6be75107 tracer: Add memory tracer
Requires updating gstreamer-rs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2092>
2025-02-21 15:40:59 +00:00
Matthew Waters
0a35219c90 closedcaption: add CDP service information inject element
Overwrites the service information descriptor with the value specified in the
services property.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2043>
2025-02-17 10:25:01 +00:00
Mathieu Duponchelle
71121a2380 aws: reimplement two separate wrappers for translate and transcribe
The original awstranscribe element has grown too complex when
integrating translations for reasons that in retrospect were wrong:

As awstranscribe outputs words one by one, I decided we wanted to
perform translations there with larger sentences if available, but an
alternative design where a separate translation element is composed
downstream is also possible, as long as that element accumulates words
and enough latency is set on the transcriber.

An important difference is that the new elements do not expose unsynced
pads, this use case is instead now served by simple messages on the bus.

The elements should otherwise be at feature parity with the original
element.

A higher-level bin is also provided for convenience (and usage within
transcriberbin): translationbin.

A transcriber element can be provided to this bin, which exposes an
always audio sink pad, and an always text sink pad (for the
transcripts).

Additional source pads can be requested for translations, for now the
bin always uses `awstranslate` as the translator, but this can be made
configurable.

This element is usable as a transcriber in `transcriberbin`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2055>
2025-02-10 11:16:44 +00:00
Mathieu Duponchelle
2d0effd781 speechmaticstranscriber: add properties for speaker detection
diarization=speaker can be set to enable speaker detection, and
max-speakers can be set to control the maximum number of detected
speakers.

An event is then forwarded downstream upon speaker changes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2055>
2025-02-10 11:16:44 +00:00
Sanchayan Maity
4218e88fce Add HLS sink with multi-variant playlist support
`hlsmultivariantsink` adds support for the following as per RFC 8216

- Multivariant/master playlist
- Alternate Renditions
- Variant Streams

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1515>
2025-01-28 16:37:35 +05:30
Brad Hards
251819a57d mux/mp4: support ISO/IEC 23001-17 uncompressed encoding
This adds support for direct encoding of common formats into ISO base media file
format.

There are unit tests for formats that are not completely supported, to
check that those functions work correctly, and to ease future extension.

End-to-end testing currently requires use of gpac to validate files.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1990>
2025-01-21 09:20:13 +00:00
Piotr Brzeziński
5b41d11f0c fallbacksrc: Add multi-stream support with the stream API
Brings support for multiple streams of each kind to fallbacksrc.

Usage past 1video/1audio stream now requires using the stream selection
API.
fallbacksrc will expose its own collection of streams, which will be
mapped to streams from the main and fallback source automatically.
This mapping can be changed via the map-streams signal.
The amount of streams being exposed by fallbacksrc is dictated by the
main source.

CustomSource has been updated to also support multi-stream scenarios,
both for stream-aware elements and for simple bins without such
functionality.

Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1832>
2025-01-14 13:04:25 +00:00
Thibault Saunier
aafebc6a97 pcap_writer: Move to using USE_STRUCTURE_PARAMS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2031>
2025-01-10 08:17:30 -03:00
Mathieu Duponchelle
69f927cc24 transcriberbin: expose subtitle-languages property
Similar to synthesis-languages, except that transcriberbin will not
place a textwrap element before the synthesizer, instead letting the
application do that itself if needed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2015>
2025-01-08 12:26:22 +00:00
Guillaume Desmottes
1b761f27ef uriplaylistbin: add caching
Add optional caching feature preventing to re-download playlist items
for each iteration.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2028>
2025-01-07 20:29:38 +00:00
Sebastian Dröge
81ff664666 rtp: Add AMR NB/WB RTP payloader/depayloader
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2016>
2025-01-02 16:42:14 +00:00
Sanchayan Maity
59cc4af3ba net/quinn: Support stream multiplexing in quinnwtclientsrc
While at it, drop the use-datagram property since the data handler
thread receives data for both streams and datagram irrespective of
the property.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1966>
2024-12-30 09:40:43 +05:30
Sanchayan Maity
e21e07c46a net/quinn: Fix ChildProxy implementation for muxer & demuxer
The demuxer did not need the ChildProxy implementation while
the muxer was missing the call to child_added, child_removed
and the interface entry in ObjectSubclass.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1998>
2024-12-20 17:45:50 +05:30
Thibault Saunier
82b98f7a9f docs: Allow updating the plugins_cache.json files without generating documentation
There is no dependencies between the 2 things, and it is often useful to be able
to update the cache even if we are not generating the documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1996>
2024-12-19 14:32:16 +00:00
Thibault Saunier
1e3eef253b webrtcsrc: Add a 'connect-to-first-producer' property
This is an helper property which allows to avoid requiring to know
peer IDs, which is very useful during development.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/386
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1996>
2024-12-19 14:32:16 +00:00
Matthew Waters
497b1e58bd cea708overlay: support changing the safe title area
By default it is 80% of the output size as recommended by CEA-708/608.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1985>
2024-12-18 12:57:49 +00:00
Mathieu Duponchelle
ae90dd4afe transcriberbin: expose language-filters property
When set, the bin will lookup the structure for either a bin description
or an element to link in when linking the transcriber to a language
tee.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1979>
2024-12-12 14:19:41 +01:00
Mathieu Duponchelle
be00ae7999 aws/polly: expose property for overflow control
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1965>
2024-12-10 14:19:30 +00:00
Mathieu Duponchelle
4852a4a5e6 gst_plugins_cache.json: generate tracer objects documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1965>
2024-12-10 14:19:29 +00:00
Mathieu Duponchelle
0376cd2752 speechmatics: expose properties for controlling punctuation joining
By default the transcriber will attempt to join punctuation with the
preceding word, expose a property to control that.

As speechmatics sometimes outputs punctuation for a sentence in the
next transcript, it will sometimes arrive too late for joining. In
order to work around this behavior, a lower max-delay is used by
default, that may not always be desirable, especially if low latency is
a concern.

Expose a property to disable the hack.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1909>
2024-12-09 17:29:47 +00:00
Mathieu Duponchelle
e3e7f55a8d transcriberbin: expose mix-matrix property on audio sink pads
As the application expects to have the bin buffer the audio stream
internally and output it again unchanged, and transcribers might
expect a set number of channels, we need to expose a property to
let the user control how to downmix the audio stream teed through
the transcriber.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1969>
2024-12-09 16:26:47 +00:00
Andoni Morales Alastruey
fe8e9c2891 quinn: update documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1867>
2024-12-09 12:26:48 +00:00
Mathieu Duponchelle
39a8db51de transcriberbin: register pad templates for unsynced source pads
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1963>
2024-12-06 09:38:39 +00:00
Mathieu Duponchelle
4e722d6dcc speechmatics: expose unsynced pads on transcriber
This can be used for storing original transcripts for editing after the
fact.

Modeled on the aws transcriber, to be usable from transcriberbin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1963>
2024-12-06 09:38:39 +00:00
Mathieu Duponchelle
9c844acba5 aws/transcriber: fix unsynced_translate_src_%u presence
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
4d45ae0e44 aws/polly: expose ssml-set-max-duration property
With standard voices, AWS polly supports passing a max-duration
attribute.

When the element gets raw text passed in, it can wrap it as SSML and set
the max duration attribute, this to make sure synthesized speech
doesn't overlap.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
4406851ae7 transcriberbin: add support for speech synthesis
This commit adds a new "synthesis-languages" property. Users can set it
to define a map of languages (typically translations) that should then
be routed through a "synthesis" bin, with its description specifiable
as the value of the map.

The output of this bin is then exposed as a new pad on the top-level
bin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00