Commit graph

3610 commits

Author SHA1 Message Date
Guillaume Desmottes
d9e8f4054c webrtc: allow PAR change in webrtcsink input caps
We are already allowing resolution changes which can lead to change in
pixel-aspect-ratio.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1830>
2024-09-30 14:40:48 +02:00
Sebastian Dröge
dcb072ee23 webrtc: livekit: Set connection earlier during setup
Otherwise it's not available yet when handling the initial participants
that are already in the session when joining.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1794>
2024-09-30 13:04:24 +03:00
Sebastian Dröge
cd2b641321 livekitwebrtcsrc: Add API for disabling/enabling a track
A disabled track is still negotiated but no data is sent for it
temporarily until it is enabled again.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1794>
2024-09-30 13:04:24 +03:00
Sebastian Dröge
27dc76826e livekitwebrtcsrc: Add pad properties for various LiveKit participant / track metadata
The content of the TrackInfo and ParticipantInfo structs is exposed as
gst::Structure.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1794>
2024-09-30 13:04:24 +03:00
Sebastian Dröge
ceb88d960f rtpav1depay: Add wait-for-keyframe and request-keyframe properties
These behave the same as the properties in other depayloaders. Keyframe
detection is based on the N flag in the aggregation header.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/598

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1823>
2024-09-27 12:25:16 +03:00
Nick Steel
5f055160ba spotify: add missing tokio crate feature rt-multi-thread
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1818>
2024-09-26 09:56:46 +01:00
Nick Steel
32aaf19fa3 spotify: depend on librespot-core and librespot-playback only
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1818>
2024-09-26 09:54:27 +01:00
Nick Steel
e006c20556 spotify: avoid librespot::discovery dependency
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1815>
2024-09-26 06:48:56 +00:00
Mathieu Duponchelle
0d160d8cf6 Cargo.toml: turn lto off for dev profile
Turning on opt-level=1 is necessary to make things reasonably fast, but
it also turns on lto which since thinlto became enabled by default slows
down compile times by a factor of 2 compared to lto off.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1814>
2024-09-25 16:09:29 +00:00
Mathieu Duponchelle
87c6719e1d webrtcsink: add define-encoder-bitrates signal
When congestion control is used for a session with multiple encoders,
the default implementation simply divides the overall bitrate equally
between encoders.

This is not always desirable, and this patch exposes a new signal
that users can register to, with two arguments:

* The overall bitrate to allocate
* A structure with an encoder.stream_name -> bitrate mapping

Handlers should return a similar structure with a custom mapping.

An example is also provided.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1792>
2024-09-25 15:19:44 +00:00
François Laignel
f532d523b2 webrtcsink: fix RFC7273 attributes
RFC7273 related attributes are set in the SDP offer by passing them via the
transceiver `codec-preferences` signal. These attributes are intended to be set
at the media level so they must be prefixed by `a-` in the `Caps` argument to
the signal. Otherwise they end up under `a=fmtp`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1810>
2024-09-25 09:30:48 +00:00
Sebastian Dröge
b5586095bc tracers: Update to etherparse 0.16
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1808>
2024-09-25 09:05:56 +03:00
Mathieu Duponchelle
5c66d8c107 webrtcsrc: ensure source pad has msid when added
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1800>
2024-09-24 14:50:30 +00:00
Mathieu Duponchelle
f70482d9bc webrtcsrc: fix default msid property value
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1800>
2024-09-24 14:50:30 +00:00
Guillaume Desmottes
bd7b94e305 fmp4: use the right DEFAULT constant
Does not really matter as both have the same value but best to have it
right.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1799>
2024-09-23 12:48:42 +00:00
Jochen Henneberg
8313260e09 fmp4mux: Renamed caps_change_allowed() to header_update_allowed()
Because tag events like orientation and language require a header
update as well.

For proper logging the function now takes a reason parameter and logs
a debug message in case the header update is allowed.

And added some explanation to the function to make sure that it is
used in the right place.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Jochen Henneberg
c0f3eff18e fmp4mux: Renamed caps_changed to need_new_header
Because the header update is needed in case of language code or
orientation changes as well that come with tag events.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Jochen Henneberg
1be92c4b86 fmp4mux: Added tests for caps change feature
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Jochen Henneberg
0c8b84d8a8 fmp4mux: Send new fragment with header in case of caps change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Jochen Henneberg
4d71525eee fmp4mux: Simplified EOS detect logic
The all_eos cannot be set without having sinkpad.is_eos(). Thus
all_eos || sinkpad.is_eos() == sinkpad.is_eos().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Guillaume Desmottes
431adaa2f9 fmp4: examples: hls_live: don't set header-update-mode=update
No need to update the header in live mode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1798>
2024-09-23 12:24:22 +02:00
Jordan Petridis
b5e0e0713c ci: Set build jobs according to FDO_CI_CONCURRENT when available
The CI runners run multiple jobs concurrently, and as such we should
only be building with the number of jobs allocated to us when the
variable is set.

Related to https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1545

Also move the rest of the common flags we pass to cargo together so it's
a bit easier to read.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1791>
2024-09-20 15:05:21 +03:00
Jendrik Weise
1ff761e410 fmp4: Add tests for split-at-running-time signal
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1761>
2024-09-20 12:35:24 +03:00
Jendrik Weise
d5a9c7a940 fmp4: Add split-at-running-time signal
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1761>
2024-09-20 12:35:24 +03:00
Mathieu Duponchelle
a85b0cb72e webrtcsrc: expose MSID property on source pad
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1789>
2024-09-20 09:31:57 +03:00
Sebastian Dröge
c9b370a6e4 cea708mux: Fix off-by-one in deciding whether a buffer belongs to this or the next frame
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1774>
2024-09-19 12:05:42 +00:00
Sebastian Dröge
d69d0f8738 cea708mux: Stop with EOS if all pads are EOS instead of continuing forever
Also don't drop buffers if multiple tries are needed for aggregating
because some pads are not ready yet.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1774>
2024-09-19 12:05:42 +00:00
Sebastian Dröge
29b54ed2fc cea708mux: Don't create a separate source pad and actually push gap events downstream
The aggregator base class is already creating the source pad and the
source pad that was created here internally was never added to the
element at all. As such all gap events pushed on it never went anywhere.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1774>
2024-09-19 12:05:42 +00:00
Jan Schmidt
7905626a5f onvifmetadatapay: Set output caps earlier
As soon as input caps arrive, we can set output
caps. This means upstream can send gap events earlier,
before there is any actual metadata to send

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1779>
2024-09-19 20:45:43 +10:00
Mathieu Duponchelle
6a23ae168f webrtcsink: implement mechanism to forward metas over control channel
It may be desirable for the frontend to receive ancillary information
over the control channel.

Such information includes but is not limited to time code metas, support
for other metas (eg custom meta) might be implemented in the future, as
well as downstream events.

This patch implements a new info message, probes buffers that arrive at
nicesink to look up timecode metas and potentially forwards them to the
consumer when the `forward-metas` property is set appropriately.

Internally, a "dye" meta is used to trace the media identifier the
packet we are about to send over relates to, as rtpfunnel bundles all
packets together.

The example frontend code also gets a minor update and now logs info
messages to the console.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1749>
2024-09-19 08:41:47 +00:00
Mathieu Duponchelle
db026ad535 gstwebrtc-api: expose API on consumer-session for munging stereo
We cannot do that by default as this is technically non-compliant,
so we need to expose API to let the user opt into it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1754>
2024-09-19 07:37:23 +00:00
Sebastian Dröge
aae9d5c0e9 closedcaption: cea608utils: Avoid overflow when deciding which lines to retain
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1776>
2024-09-17 12:00:56 +03:00
Seungha Yang
1675e517b3 hlscmafsink: Add playlist-root-init property
Adding a property to allow setting base path for init fragment to be
written in manifest file

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1773>
2024-09-11 03:36:08 +09:00
Sebastian Dröge
1d20028b00 ci: Ignore test-with update until MSRV can be updated to 1.75+
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1772>
2024-09-10 09:19:18 +03:00
Sebastian Dröge
975e4e157b deny: Add link to issue about replacing sodiumoxide
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1772>
2024-09-10 09:19:18 +03:00
Sebastian Dröge
6a7118e535 deny: Ignore proc-macro-error being unmaintained
See https://github.com/yanganto/test-with/issues/91

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1772>
2024-09-10 09:19:18 +03:00
Sebastian Dröge
7843209692 ci: Ignore bitstream-io update until MSRV can be updated to 1.80+
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1772>
2024-09-10 09:19:18 +03:00
Sebastian Dröge
c505d9a418 Update to async-tungstenite 0.28
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1772>
2024-09-10 09:19:18 +03:00
Sebastian Dröge
0c9fb369d3 Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1772>
2024-09-10 09:19:18 +03:00
Jerome Colle
fef6601094 dav1ddec: add properties for film grain synthesis and in-loop filters
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1763>
2024-09-09 14:23:15 +00:00
Sebastian Dröge
24003a79f6 mpegtslivesrc: Make sure to use the object as context for all debug logs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1767>
2024-09-09 13:29:14 +00:00
Sebastian Dröge
c32cb20906 mpegtslivesrc: Check if old compared to new PCR clock estimation is too far off
It the difference between the two estimations is more than 1s then
consider this a discontinuity too.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1767>
2024-09-09 13:29:14 +00:00
Sebastian Dröge
c5b1ebc7d8 mpegtslivesrc: Fix order of parameters passed to add_observation()
The first one should be the internal time, i.e. the monotonic clock time
in our case, and the second one the external time.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1767>
2024-09-09 13:29:14 +00:00
Sebastian Dröge
44f64fb3f6 mpegtslivesrc: Scale monotonic time on PCR disconts to allow for continuous clock times
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1767>
2024-09-09 13:29:14 +00:00
Sebastian Dröge
453b3014e6 mpegtslivesrc: Set DISCONT flag on buffers at PCR discontinuities
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1767>
2024-09-09 13:29:14 +00:00
Sebastian Dröge
8fd2b7daa4 uriplaylistbin: Properly check for stream-collection/streams-selected events
There is only a new stream-collection event if the media has actually
changed, and that's also the only time in these tests when a
streams-selected event is sent as the default stream selection is always
used and never changed.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/597

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1769>
2024-09-09 14:37:48 +03:00
Sebastian Dröge
2e0f52de2c uriplaylistbin: Track actual caller in test assertion functions
Makes it easier to figure out from where it is actually called when the
assertion is failing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1769>
2024-09-09 14:35:40 +03:00
Sebastian Dröge
7a959b9e9d uriplaylistbin: Properly clean up the pipeline on panics/assertions too
Reduces log noise.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1769>
2024-09-09 14:35:10 +03:00
Sebastian Dröge
a709eb96d9 Fix new Rust 1.81 clippy warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1768>
2024-09-05 22:01:01 +03:00
Sebastian Dröge
295b9f01c2 ndisrc: Use correct receive time to re-initialize time tracking on disconts
The base receive time should not be the monotonic system clock time, but
the monotonic system clock time adjusted by the current clock calibration.
For the first time this is equivalent as the clock calibration is the default,
but for further discontinuities it is not and would cause a
discontinuity in the clock times at this point.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1766>
2024-09-05 10:18:48 +00:00