Sebastian Dröge
7e59c3f0fd
Remove once_cell dependency
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1868 >
2024-10-21 17:53:18 +00:00
Sebastian Dröge
120c62964d
Update to bitstream-io 2.5
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1864 >
2024-10-20 19:53:15 +00: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
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
Sebastian Dröge
30a5987c9e
rtp: mp4gpay: Don't set seqnum-base on the caps
...
This is supposed to be set by another layer, e.g. rtspsrc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1693 >
2024-08-10 08:06:40 +00:00
Sebastian Dröge
de42ae432c
rtp: basepay: Fix off-by-one with seqnum-offset
...
Setting a seqnum-offset of 1 would've caused the first packet to have a
seqnum of 2 instead of 1.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1693 >
2024-08-10 08:06:40 +00:00
Sebastian Dröge
c5163a73ee
rtp: basepay: Don't negotiate twice in the beginning
...
If srcpad caps are already set as part of sinkpad caps handling, unset
the reconfigure flag so negotiation does not happen yet another time on
the first buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1693 >
2024-08-10 08:06:40 +00:00
Sebastian Dröge
31e836f4d6
rtp: basepay: Negotiate SSRC and PT with downstream if not set via property
...
This makes the new payloaders closer to the old ones, and makes usage in
webrtcbin easier.
Also properly configure default PT of subclasses. Previously any PT that
was set for these subclasses via g_object_new() would be overridden by
the default one during construction.
Additionally, do SSRC collision handling while queueing output packets.
This is the more natural place as that's where the SSRC is actually
used, it happens potentially earlier and also allows to drain any
pending packets before the SSRC change in the caps.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/557
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1693 >
2024-08-10 08:06:40 +00:00
Sebastian Dröge
914ffc8be9
rtp: basepay: Initialize class fields
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1693 >
2024-08-10 08:06:40 +00:00
Sebastian Dröge
c554a5dc76
rtp: basepay: Don't unset stats on FlushStop
...
They are still valid and unsetting them here would cause no stats to
ever be updated again until the next state change.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1693 >
2024-08-10 08:06:40 +00:00
Sebastian Dröge
035a199109
rtp: basepay: Don't use suggested SSRC on collissions if it's the current one
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1693 >
2024-08-10 08:06:40 +00:00
Sebastian Dröge
fa060b9fa0
Fix various 1.80 clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1688 >
2024-08-05 14:14:17 +03:00
Sebastian Dröge
d4d02d70a8
rtp: Require bitstream-io < 2.4.0
...
Version 2.4.0 contains a breaking change that it shouldn't, and updating
to 2.4.0 requires a newer Rust version.
See https://github.com/tuffy/bitstream-io/issues/22
2024-07-16 19:13:49 +03:00
Sebastian Dröge
98b28d69ce
Update for new debug log macro syntax
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1658 >
2024-07-08 11:25:23 +03:00
Philippe Normand
eee93aea52
rtp2: Fix typo on auto-header-extension property name
...
The rtp (de)pay elements use auto-header-extension so the new elements should do
the same.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1646 >
2024-07-02 09:35:39 +01:00
Matthew Waters
39b61195ad
rtprecv: ensure that stopping the rtp src task does not critical
...
When pad a released, then we were removing the pad from an internal
list. If the pad was not already deactivated, the deactiviation would
attempt to look for the pad in that list and panic if it was not there.
Fix by delaying removal of the pad from the list until after pad
deactivation occurs.
Also includes test.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1618 >
2024-06-24 13:13:28 +00:00
Matthew Waters
10a31a397e
rtp/recv: support pushing buffer lists from the jitterbuffer
...
Multiple concurrent buffers produced by the jitterbuffer will be
combined into a single buffer list which will be sent downstream.
Events or queries that interrupt the buffer flow will cause a split in
the output buffer list.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1618 >
2024-06-24 13:13:28 +00:00
Matthew Waters
d036abb7d2
rtp/recv: support buffers lists on rtp sink pad
...
In one case, improves throughput by 25% when buffer lists are used.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1618 >
2024-06-24 13:13:28 +00:00
Matthew Waters
df4a4fb2ef
rtp/send: support receiving buffer lists
...
Can reduce processing overhead if many buffers are pushed concurrently.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1618 >
2024-06-24 13:13:28 +00:00
Matthew Waters
2d1f556794
rtp/session: guard against a busy wait with no members
...
If the number of members is 0, then the calculated time to the next rtcp
wakup would be 'now' and could result in a busy loop in the rtcp
processing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1618 >
2024-06-24 13:13:28 +00:00
Matthew Waters
84a9f9c61f
rtp/source: use extended sequence number helper
...
Instead of rolling our own
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1618 >
2024-06-24 13:13:28 +00:00
Sebastian Dröge
9b323a6519
Use Option::is_some_and(...)
instead of Option::map_or(false, ...)
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1630 >
2024-06-19 13:03:37 +00:00
Sebastian Dröge
4677948a82
rtp: av1pay: Derive Default trait for the state instead of manual implementation
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1624 >
2024-06-18 08:07:24 +03:00
Sebastian Dröge
d357a63bf9
rtp: av1pay: Correctly use N flag for marking keyframes
...
The "first packet of a coded video sequence" means that this should be
the first packet of a keyframe that comes together with a sequence
header, not the first packet of a new frame.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/558
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1624 >
2024-06-18 08:06:59 +03:00
Sebastian Dröge
5cd9e34265
rtp: av1pay: Correctly skip over ignored OBUs
...
The reader is already after the header at this point so only the OBU
content has to be skipped.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1624 >
2024-06-18 08:06:59 +03:00
Sebastian Dröge
bbe38b9599
rtp: av1: Drop padding OBUs too like Chrome does
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1624 >
2024-06-18 08:06:59 +03:00
Sebastian Dröge
343680ffea
rtp: av1depay: Don't return an error if parsing a packet fails
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1612 >
2024-06-14 13:13:21 +00:00
Sebastian Dröge
477855789d
rtp: av1depay: Also log warnings on errors
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1612 >
2024-06-14 13:13:21 +00:00
Sebastian Dröge
93c9821cba
rtp: av1depay: Drop unusable packets as early as possible
...
Otherwise they would pile up until a discontinuity or until we can
actually output something.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1612 >
2024-06-14 13:13:21 +00:00
Sebastian Dröge
0ca4a3778a
rtp: av1depay: Parse internal size fields of OBUs and handle them
...
They're not recommended by the spec to include in the RTP packets but it
is valid to include them. Pion is including them.
When parsing the size fields also make sure to only take that much of a
payload unit and to skip any trailing data (which should not exist in
the first place).
Pion is also currently storing multiple OBUs in a single payload unit,
which is not allowed by the spec but can be easily handled with this
code now.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/560
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1612 >
2024-06-14 13:13:21 +00:00
Sebastian Dröge
69c3c2ae46
Fix various new clippy 1.79 warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1620 >
2024-06-14 08:33:49 +03:00
Matthew Waters
260b04a1cf
rtpbin2: protoct against adding with overflow
...
If jitter is really bad, then this calculation may overflow. Protect
against that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1605 >
2024-06-06 11:43:26 +00:00
Tim-Philipp Müller
ab2f5e3d8d
rtp: ac3: add some unit tests
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1586 >
2024-06-01 12:43:27 +00:00
Tim-Philipp Müller
2b68920f82
rtp: tests: add possibility to make input live
...
.. for payloaders that behave differently with live
and non-live inputs (e.g. audio payloaders which by
default will pick different aggregation modes based
on that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1586 >
2024-06-01 12:43:27 +00:00
Tim-Philipp Müller
6597ec84eb
rtp: tests: add possibility to check duration of depayloaded buffers
...
.. and clarify an expect panic message.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1586 >
2024-06-01 12:43:27 +00:00
Tim-Philipp Müller
6b628485c5
rtp: Add AC-3 RTP payloader/depayloader
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1586 >
2024-06-01 12:43:27 +00:00
Sebastian Dröge
a7418fb483
rtp: Use released version of rtcp-types
2024-05-29 10:30:40 +03:00
Matthew Waters
df32e1ebfa
rtpsend: ensure only a single rtcp pad push
...
Otherwise, it can occur that multiple rtcp packets may be produced out
of order.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 19:58:09 +10:00
Matthew Waters
525179f666
rtpbin2: handle ssrc collisions
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 19:58:09 +10:00
Matthew Waters
1600d3b055
rtpbin2: split send and receive halves into separate elements
...
There is now two elements, rtpsend and rtprecv that represent the two
halves of a rtpsession. This avoids the potential pipeline loop if two
peers are sending/receiving data towards each other. The two halves can
be connected by setting the rtp-id property on each element to the same
value and they will behave like a combined rtpbin-like element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 19:58:09 +10:00
Matthew Waters
0121d78482
rtpbin2: expose session signals for new/bye ssrc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 19:58:09 +10:00
Matthew Waters
d480c6c2d3
rtpbin2/config: add stats to session GObject
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 19:58:09 +10:00
Matthew Waters
7d5789032a
rtpbin2/config: add a new-ssrc signal
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 19:58:09 +10:00
Matthew Waters
06f40e72cb
rtpbin2: implement a session configuration object
...
Currently only contains pt-map
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 19:58:09 +10:00
Matthew Waters
48e7a2ed06
jitterbuffer: handle flush-start/stop
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 19:58:09 +10:00
Matthew Waters
66306e32f2
jitterbuffer: remove mpsc channel for every packet
...
It is very slow.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 19:58:09 +10:00
Mathieu Duponchelle
327f563e80
jitterbuffer: implement support for serialized events / queries
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 19:58:09 +10:00
Mathieu Duponchelle
74ec83a0ff
rtpbin2: implement and use synchronization context
...
Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
Co-Authored-By: Matthew Waters <matthew@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 19:58:09 +10:00
Mathieu Duponchelle
1865899621
rtpbin2: implement jitterbuffer
...
The jitterbuffer implements both reordering and duplicate packet
handling.
Co-Authored-By: Sebastian Dröge <sebastian@centricular.com>
Co-Authored-By: Matthew Waters <matthew@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 17:35:41 +10:00
Sebastian Dröge
2b4ec75bc5
rtpbin2: Add support for receiving rtcp-mux packets
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 17:35:41 +10:00