Sebastian Dröge
54bc7a898e
webrtc: Silence two new Rust 1.82 clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1860 >
2024-10-17 21:38:10 +00:00
Mathieu Duponchelle
959463ff65
webrtcsink: fix session not in place errors
...
The InPlace/Taken logic was introduced to avoid using an extra lock
around the session, but it places expectations that are not always
obvious to meet around when a session is expected to be taken or not.
Any code that expects to have access to the sessions at all times thus
needs either extra logic in the session wrapper, or to maintain the
state of the session outside of the session (eg mids).
This commit removes the logic, and wraps sessions in Arc<Mutex>>.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1852 >
2024-10-17 12:29:53 +00:00
Mathieu Duponchelle
ef06421a25
webrtcsrc: make updated transceiver retrieval backward compatible
...
In 1.24 and before transceivers for remote sendonly medias are only
created at answer time. If that is the case, we can add the transceiver
ourself, it will get associated when creating the answer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1853 >
2024-10-16 14:48:20 +00:00
Mathieu Duponchelle
82d0eaf438
webrtcsrc: fix debug message on offer created
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1853 >
2024-10-16 14:48:20 +00:00
Mathieu Duponchelle
3d257b4819
webrtcsink: improve debut message when start session failed
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1853 >
2024-10-16 14:48:20 +00:00
Chris Bainbridge
785209cc7f
custom-signaller: add missing manual-sdp-munging property
...
All signallers must now implement this property
Fixes #611
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1854 >
2024-10-16 15:45:50 +02:00
Mathieu Duponchelle
5f0ca7acde
webrtcsink: fix custom_signaller hanging
...
Since 6a23ae168f
, the chain function
of webrtcsink adds a custom meta on input buffers.
That custom meta was registered only by the class_init of the subclasses
of BaseWebRTCSink, but the custom signaller example uses
BaseWebRTCSink::with_signaller() directly.
Fix by registering the meta in BaseWebRTCSink::class_init()
Fixes : #610
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1854 >
2024-10-16 15:25:09 +02:00
Mathieu Duponchelle
5e49f1d10e
webrtcsrc: address non-compliant transceiver creation
...
Instead of adding transceivers explicitly then setting the remote
description, expecting the manually added transceivers to get picked
up, we pass a promise to set-remote-description-set, and set the
relevant properties on the automatically created transceivers at that
point.
We then call create-answer and proceed as before.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/596
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1829 >
2024-10-14 11:19:38 +00:00
Guillaume Desmottes
027eead86d
webrtc: janus: add 'janus-state' property to the sink
...
This property can be used by applications to track the state of the
signaller, especially to know when the stream is up.
Fix #510
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1505 >
2024-10-10 10:59:50 -04:00
Guillaume Desmottes
d8b9a7a486
webrtc: janus: fix typo in doc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1505 >
2024-10-10 10:57:02 -04:00
Matthew Waters
d4fd21d197
rtp2/jitterbuffer: check for event query earlier
...
If a serialized query arrives (e.g. allocation) and the jitterbuffer has never
received a packet, then jitterbuffer would never forward the serialized query
resulting in a hang.
Fix by forwarding queries/events before the conditions that require the first
packet to arrive.
Also update unit test to check for this scenario.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1846 >
2024-10-09 16:21:13 +00:00
Mathieu Duponchelle
b3ace3678b
webrtcsink: fix naming of error dot files for discovery pipelines
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1843 >
2024-10-03 14:35:45 +00:00
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
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
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
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
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
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
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
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
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
Mathieu Duponchelle
bfc32cc692
net/aws: fix spurious dispatch failures
...
Since https://github.com/awslabs/aws-sdk-rust/discussions/956 , the AWS
SDK errors out HTTP streams that do not transfer data for more than 5
seconds.
This probably should be an opt-in bhevior as it clearly not generically
useful, but as it is we need to opt out.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1760 >
2024-09-05 07:43:23 +00:00
Mathieu Duponchelle
65508cfe75
net/aws: don't discard errors from transcribe loop
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1760 >
2024-09-05 07:43:23 +00:00
Arun Raghavan
e72db57179
webrtc: Fix whipclientsink name in README
...
The element name was changed, but the documentation wasn't updated to
match.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1764 >
2024-09-03 16:44:19 -04:00
Sebastian Dröge
871756bb70
ndisrc: Reset timestamp tracking if remote time goes backwards
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1727 >
2024-08-29 20:53:13 +03:00
Sebastian Dröge
ee4416ee5f
ndisrc: Add a clocked timestamp mode that provides a clock that follows the remote timecodes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1727 >
2024-08-29 20:53:13 +03:00
Sebastian Dröge
ab3db748be
ndisrc: Get rid of unnecessary AtomicRefCell dependency
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1727 >
2024-08-29 16:32:51 +00:00
Sebastian Dröge
0c4ec370cf
ndisrc: Remove slope workaround in timestamping code
...
This was needed for an old version of the NDI HX Camera iOS application
and is fixed since quite a while. Let's get rid of unnecessarily
complicated code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1727 >
2024-08-29 16:32:51 +00:00
Sebastian Dröge
57821cade4
ndisrc: Only calculate timecode/timestamp mappings if necessary
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1727 >
2024-08-29 16:32:51 +00:00
Sebastian Dröge
04da3b2047
ndisrc: receiver: Improve debug message when receiving frames
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1727 >
2024-08-29 16:32:51 +00:00
Sebastian Dröge
84fef267b5
ndisrc: receiver: Remove some code duplication
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1727 >
2024-08-29 16:32:51 +00:00
Sebastian Dröge
f2658eb773
ndisrc: Move from start/stop to change_state for slight code simplification
...
All state change related code is in a single place now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1727 >
2024-08-29 16:32:51 +00:00
Sebastian Dröge
fc29ff7d8b
hlssink3: Update to sprintf 0.2
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1757 >
2024-08-27 21:06:52 +03:00
Mathieu Duponchelle
2f9bb62b6b
gstwebrtc-api: create control data channel when offering
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1755 >
2024-08-27 07:52:12 +02:00
Sanchayan Maity
f3206c2e1a
aws: Add next-file support to putobjectsink
...
Add `next-file` support to `awss3putobjectsink` on similar lines to
the `next-file` support in `multifilesink`.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1550 >
2024-08-26 19:56:34 +00:00
Sanchayan Maity
d274caeb35
whepsrc: Fix incorrect default caps
...
add-transceiver needs application/x-rtp caps and not raw caps. We were
providing raw caps which is incorrect.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1748 >
2024-08-26 19:44:37 +05:30
Mathieu Duponchelle
66727188cf
net/aws: fix sanity check in transcribe loop
...
When we receive a new alternative we want to avoid iterating out of
bounds, but the comparison between the current index and the length of
the alternative should not log an error when partial_index == length, as
Vec::drain(length..) is valid, and it is completely valid for AWS to
send us a new alternative with as many items as we have already
dequeued.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1751 >
2024-08-26 11:37:08 +02:00