Matthew Waters
2c86f18a99
rtpbin2: add support for RFC 4585 (RTP/AVPF)
...
Implements the timing rules for RTP/AVPF
Co-Authored-By: Sebastian Dröge <sebastian@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1426 >
2024-05-28 17:35:41 +10:00
Matthew Waters
27ad26c258
rtp: Initial rtpbin2 element
...
Can receive and recevie one or more RTP sessions containing multiple
pt/ssrc combinations.
Demultiplexing happens internally instead of relying on separate
elements.
Co-Authored-By: François Laignel <francois@centricular.com>
Co-Authored-By: Mathieu Duponchelle <mathieu@centricular.com>
Co-Authored-By: Sebastian Dröge <sebastian@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
984a9fe5ff
rtp: Don't restrict payload types for payloaders
...
WebRTC uses payload types 35-63 as dynamic payload types too to be able
to place more codec variants into the SDP offer.
Instead of allowing just certain payload types, completely remove any
restrictions and let the user decide. There's technically nothing wrong
with using any payload type, especially when using the encoding-name.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/551
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1587 >
2024-05-27 09:34:16 +00:00
Tim-Philipp Müller
4f74cb7958
rtp: klv: add test for fragmented payloads with packet loss
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1580 >
2024-05-26 12:34:44 +03:00
Tim-Philipp Müller
b6e24668a7
rtp: klv: add unit test with some packet loss
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1580 >
2024-05-26 12:34:44 +03:00
Tim-Philipp Müller
92a1e222f4
rtp: tests: add functionality to drop RTP packets after payloading
...
Add ExpectedPacket::drop() to flag RTP packets that should not
be forwarded to the depayloader.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1580 >
2024-05-26 12:34:44 +03:00
Tim-Philipp Müller
de71e9dadd
rtp: tests: print rtp timestamp mismatch minus the initial offset
...
Unit tests specify a 0-based offset, so printing that plus the
random initial offset on failure is just needlessly confusing,
so subtract the initial offset when printing expected/actual
values. The real values are still printed as part of the assert.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1580 >
2024-05-26 12:34:44 +03:00
Tim-Philipp Müller
be7da027f8
rtp: klv: add some basic tests
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1580 >
2024-05-26 12:34:44 +03:00
Tim-Philipp Müller
1e33926dc5
fixup: klv payloader indentation
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1580 >
2024-05-26 12:34:44 +03:00
Tim-Philipp Müller
c2f67bd3c9
fixup: klv depay: debug log indentation
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1580 >
2024-05-26 12:34:44 +03:00
Tim-Philipp Müller
e7d0e0702a
fixup: payloader
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1580 >
2024-05-26 12:34:44 +03:00
Tim-Philipp Müller
566e6443f4
rtp: Add KLV RTP payloader/depayloader
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1580 >
2024-05-25 20:21:50 +03:00
Sebastian Dröge
58e91c154c
rtp: basedepay: Reset last used ext seqnum on discontinuities
...
The ext seqnum counting is reset too so keeping the old one around will
cause problems with timestamping of the next outgoing buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1584 >
2024-05-24 10:23:06 +03:00
Sebastian Dröge
dcc0b47349
rtp: basepay: Fix header extension negotiation
...
Only configure header extensions from the source pad caps if they exist
already in the source pad caps, otherwise the configuration will fail.
Extensions that are added via the signals might not exist in the source
pad caps yet and would be added later.
Also, if configuring an existing extension from the new caps fails,
remove it and try to request a new extension for it.
Additionally don't remove extensions from the caps that can't be
provided. No header extensions for them would be added to the packets,
but that's not a problem. Removing them on the other hand would cause
negotiation to fail. This only affects extensions that are already
included in the caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1577 >
2024-05-20 07:53:50 +00:00
Sebastian Dröge
0d33077df6
rtp: basedepay: Clean up header extension negotiation
...
If configuring an existing extension from the new caps fails, remove it
and try to request a new extension for it.
Also remove all extensions from the list that are not provided in the
caps, instead of passing RTP packets to all of them anyway.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1577 >
2024-05-20 07:53:50 +00:00
Tim-Philipp Müller
16608d2541
rtp: opus: add multichannel depay/pay test
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
bab3498c6a
rtp: opus: add multichannel pay/depay test
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
72006215cb
rtp: tests: add run_test_pipeline_full() that checks output caps too
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
10e0294d5a
rtp: opus: fix payloader caps query handling and add tests
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
61523baa7b
rtp: opus: add minimal depayload / re-payload test
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
6f871e6ce2
rtp: opus: add simple payload / depayload test
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
92c0cf1285
rtp: opus: add test for payloader dtx packet handling
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Tim-Philipp Müller
2585639054
rtp: Add Opus RTP payloader/depayloader
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1571 >
2024-05-18 09:29:29 +00:00
Martin Nordholts
9a7f37e2b7
rtpgccbwe: Support linear regression based delay estimation
...
In our tests, the slope (found with linear regression) on a
history of the (smoothed) accumulated inter-group delays
gives a more stable congestion control. In particular,
low-end devices becomes less sensitive to spikes in
inter-group delay measurements.
This flavour of delay based bandwidth estimation with Google
Congestion Control is also what Chromium is using.
To make it easy to experiment with the new estimator, as
well as add support for new ones in the future, also add
infrastructure for making delay estimator flavour selectable
at runtime.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1566 >
2024-05-14 16:25:48 +00:00
Martin Nordholts
71e9c2bb04
rtpgccbwe: Also log self.measure
in overuse_filter()
...
Also log `self.measure` in overuse_filter() since tracking
`self.measure` over time help a lot in making sense of
`self.estimate` (and `amplified_estimate`).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1566 >
2024-05-14 16:25:48 +00:00
Martin Nordholts
d9aa0731f4
rtpgccbwe: Rename variable t
to amplified_estimate
...
We normally multiply `self.estimate` with `MAX_DELTAS` (60).
Rename the variables that holds the result of this
calculation to `amplified_estimate` to make the distinction
clearer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1566 >
2024-05-14 16:25:48 +00:00
Martin Nordholts
a719cbfcc6
rtp: Change RtpBasePay2::ssrc_collision from AtomicU64 to Option<u32>
...
Rust targets without support for `AtomicU64` is still
somewhat common. Running
git grep -i 'max_atomic_width: Some(32)' | wc -l
in the Rust compiler repo currently counts to 34 targets.
Change the `RtpBasePay2::ssrc_collision` from `AtomicU64` to
`Mutex<Option<u32>>`. This way we keep support for these
targets.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1562 >
2024-05-10 14:23:41 +00:00
Martin Nordholts
aabb011f5a
rtpgccbwe: Log effective bitrate in more places
...
While monitoring and debugging rtpgccbwe, it is very helpful
to get continuous values of what it considers the effective
bitrate. Right now such prints will stop coming once the
algorithm stabilizes. Print it in more places so it keeps
coming. Use the same format to make it simpler to extract
the values by parsing the logs.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1567 >
2024-05-10 11:56:51 +00:00
Martin Nordholts
e845e3575c
rtpgccbwe: Add mising 'ps' suffix to 'kbps' of 'effective bitrate'
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1567 >
2024-05-10 11:56:51 +00:00
Sebastian Dröge
7e09481adc
rtp: Add JPEG RTP payloader/depayloader
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1543 >
2024-05-10 11:12:49 +03:00
Martin Nordholts
2b7488a4c8
rtpgccbwe: Log delay and loss target bitrates separately
...
When debugging rtpgccbwe it is helpful to know if it is
delay based or loss based band-width estimation that puts a
bound on the current target bitrate, so add logs for that.
To minimize the time we need to hold the state lock, perform
the logging after we have released the state lock.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1561 >
2024-05-08 19:12:44 +00:00
Sebastian Dröge
be3ae583bc
Fix new Rust 1.78 clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1559 >
2024-05-02 18:36:23 +03:00
François Laignel
16b0a4d762
rtp: add mp4gpay
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1551 >
2024-04-29 13:33:42 +00:00
François Laignel
b588ee59bc
rtp: add mp4gdepay
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1551 >
2024-04-29 13:33:42 +00:00
François Laignel
5466cafc24
rtp: add mp4apay
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1551 >
2024-04-29 13:33:42 +00:00
François Laignel
812fe0a9bd
rtp: add mp4adepay
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1551 >
2024-04-29 13:33:42 +00:00
Sebastian Dröge
7573caa8e9
rtpgccbwe: Move away from deprecated time::Instant to std::time::Instant
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1554 >
2024-04-25 15:37:28 +03:00
Sebastian Dröge
d6a855ff1b
rtp: Add VP8/9 RTP payloader/depayloader
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1487 >
2024-04-15 14:03:56 +00:00
François Laignel
42158cbcb0
gccbwe: don't log an error when handling a buffer list while stopping
...
When `webrtcsink` was stopped, `gccbwe` could log an error if it was handling a
buffer list. This commit logs an error only if `push_list()` returned an error
other than `Flushing`.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1535 >
2024-04-11 01:29:53 +00:00
Martin Nordholts
5d7e068a8b
rtpgccbwe: Add increasing_duration and counter to existing gst::log!()
...
Add `self.increasing_duration` and `self.increasing_counter`
to logs to provide more details of why `overuse_filter()`
determines overuse of network.
To get access to the latest values of those fields we need
to move down the log call. But that is fine, since no other
logged data is modified between the old and new location of
`gst::log!()`.
We do not bother logging `self.last_overuse_estimate` since
that is simply the previously logged value of `estimate`. We
must put the log call before we write the latest value to it
though, in case we want to log it in the future.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1522 >
2024-03-27 15:08:23 +00:00
Philippe Normand
be12c0a5f7
Fix clippy warnings after upgrade to Rust 1.77
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1512 >
2024-03-21 17:33:32 +00:00
François Laignel
cc7b7d508d
rtp: gccbwe: don't break downstream assumptions pushing buffer lists
...
Some elements in the RTP stack assume all buffers in a `gst::BufferList`
correspond to the same timestamp. See in [`rtpsession`] for instance.
This also had the effect that `rtpsession` did not create correct RTCP as it
only saw some of the SSRCs in the stream.
`rtpgccbwe` formed a packet group by gathering buffers in a `gst::BufferList`,
regardless of whether they corresponded to the same timestamp, which broke
synchronization under certain circonstances.
This commit makes `rtpgccbwe` push the buffers as they were received: one by one.
[`rtpsession`]: bc858976db/subprojects/gst-plugins-good/gst/rtpmanager/gstrtpsession.c (L2462)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1502 >
2024-03-20 18:19:14 +00:00
Sebastian Dröge
cca3ebf520
rtp: Switch from chrono to time
...
Which allows to simplify quite a bit of code and avoids us having to
handle some API deprecations.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1503 >
2024-03-20 15:05:39 +02:00
Tim-Philipp Müller
eb49459937
rtp: m2pt: add some unit tests
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1493 >
2024-03-16 10:07:37 +00:00
Tim-Philipp Müller
ce3960f37f
rtp: Add MPEG-TS RTP payloader
...
Pushes out pending TS packets on EOS.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1493 >
2024-03-16 10:07:37 +00:00
Tim-Philipp Müller
9f07ec35e6
rtp: Add MPEG-TS RTP depayloader
...
Can handle different packet sizes, also see:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1310
Has clock-rate=90000 as spec prescribes, see:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/691
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1493 >
2024-03-16 10:07:37 +00:00
Zhao, Gang
7a46377627
rtp: tests: Simplify loop
...
All buffers can be added in 100 outer loops. Add buffer less than 200 in the last (i = 99) loop.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1489 >
2024-03-10 16:47:30 +08:00
Sebastian Dröge
2839e0078b
rtp: Port RTP AV1 payloader/depayloader to new base classes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1472 >
2024-03-06 09:40:35 +00:00
Sebastian Dröge
f563f8334b
rtp: Add PCMU/PCMA RTP payloader / depayloader elements
...
These come with new generic RTP payloader, RTP raw-ish audio payloader
and RTP depayloader base classes.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1424 >
2024-02-23 14:43:45 +02:00
Sebastian Dröge
8ef12a72e8
rtpgccbwe: Don't reset PTS/DTS to None
...
The element is usually placed before `rtpsession`, and `rtpsession`
needs the PTS/DTS for correctly determining the running time. The
running time is then used to produce correct RTCP SR, and to potentially
update an NTP-64 RTP header extension if existing on the packets.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/496
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1462 >
2024-02-14 08:05:54 +00:00
Bilal Elmoussaoui
0615a16124
Use workspace features for crates metadata/deps
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1446 >
2024-02-05 15:34:31 +01:00
Sebastian Dröge
1a55c70114
Switch git dependencies to explicitly name branch
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1445 >
2024-02-05 12:51:36 +02:00
Sebastian Dröge
f2a7a34abf
rtp: gcc: Use x += ...
instead of x = x + ...
2024-01-31 18:46:55 +02:00
Sebastian Dröge
4ad101b53b
Use once_cell crate directly again
...
The glib crate does not depend on it anymore and also does not re-export
it anymore.
Also switch some usages of OnceCell to OnceLock from std.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1441 >
2024-01-31 18:07:57 +02:00
Sebastian Dröge
0bae18fe0d
rtp: Update to bitstream-io 2.0
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1404 >
2023-12-09 12:17:51 +02:00
Sebastian Dröge
16b917abb1
Update for gst::Rank
API changes
2023-11-02 14:10:59 +02:00
Sebastian Dröge
829469d0fe
rtpav1depay: Don't push stale temporal delimiters downstream
...
Only push them downstream once a complete OBU was assembled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1367 >
2023-10-24 11:13:35 +00:00
Sebastian Dröge
1f5e9a9335
rtpav1depay: Skip unexpected leading fragments
...
If a packet is starting with a leading fragment but we do not expect to
receive one, then skip over it to the next OBU.
Not doing so would cause parsing of the middle of an OBU, which would
most likely fail and cause unnecessary warning messages about a
corrupted stream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1367 >
2023-10-24 11:13:35 +00:00
Sebastian Dröge
d688aeb184
Update versions to 0.12.0-alpha.1
2023-08-10 17:21:11 +03:00
Sebastian Dröge
3b41f206bc
Don't generate .def files for plugins
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/389
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1299 >
2023-08-09 13:54:34 +03:00
Sebastian Dröge
31b1cb8ca6
Update minimum supported Rust version to 1.70
...
gtk-rs will update soonish too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1280 >
2023-07-19 09:19:34 +03:00
Bilal Elmoussaoui
dd2d7d9215
Use re-exported once_cell
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1268 >
2023-07-06 17:50:49 +03:00
Sebastian Dröge
c65b3429ad
Use MPL as license specifier for plugins only requiring GStreamer < 1.20
...
And use MPL-2.0 for all that require GStreamer 1.20 or newer. The new
string is only allowed in 1.20 or newer and using it in older versions
causes failure to load the plugin.
All affected plugins are of course still MPL-2.0 licensed.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/374
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1235 >
2023-06-07 19:13:55 +03:00
Edward Hervey
31b06e52ea
rtpgccbwe: Improve packet handling
...
Both the delay-based *and* loss-based estimates should be computed instead of
just one. This ensures faster adaptation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1179 >
2023-05-29 08:20:36 +00:00
François Laignel
7ba0073052
use Pad builders for optional name definition
...
Also, apply auto-naming in the following cases
* When building from a non wildcard-named template, the name of the template is
automatically assigned to the Pad. User can override with a specific name by
calling `name()` on the `PadBuilder`.
* When building with a target and no name was provided via the above, the
GhostPad is named after the target.
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/448
Auto-naming discussion: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1255#note_1891181
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1197 >
2023-05-12 12:55:31 +02:00
Edward Hervey
721d17e181
rtpgccbwe: Don't process empty lists
...
The structure parsing could result in an empty vector. Don't do any processing
since the loss code assumes it's non-empty for average estimates which would
result in weird/invalid results.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1181 >
2023-04-15 19:35:27 +02:00
Guillaume Desmottes
403004a85e
fix typos
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1170 >
2023-04-10 13:35:32 +02:00
David Revay
002a70a2a4
chore(webrtcsink): fix max-bitrate blurb and nick
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1150 >
2023-03-28 16:11:05 +11:00
Sebastian Dröge
9fc1404415
Update minimum supported Rust version to 1.66
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1096 >
2023-02-20 11:09:01 +02:00
Seungha Yang
6420fe43da
rtpav1pay: Fix Leb128Bytes size parsing
...
There are multiple ways of encoding the value, and don't assume
that bitstream used the way used in this plugin. Instead, count
the number of used bytes.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/312
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1090 >
2023-02-10 18:47:52 +00:00
Sebastian Dröge
1e13dbb99c
Update versions to 0.11.0-alpha.1
2023-02-10 00:23:56 +02:00
Sebastian Dröge
0ed74d0aa4
rtpgccbwe: Don't use clamp()
if there's no clear min/max value
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/305
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1078 >
2023-02-06 21:56:46 +02:00
Sebastian Dröge
5506f8001e
rtpav1pay: Add support for tu/frame aligned input
...
In this case every buffer can be sent out immediately and makes up a
whole frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
194c4e9e9f
rtpav1pay: Consider the marker flag to output packets immediately at the end of a frame
...
Otherwise it is necessary to wait for the beginning of the following
frame, which unnecessarily increases the latency.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/255
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
49350f738f
rtpav1depay: Fix depayloading of packets starting with a leading OBU fragment followed by more OBUs
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/288
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
1756d7a516
rtpav1depay: Fix error handling
...
Don't error out immediately on errors anymore but try again with the
next packet.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/289
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
ed4e9a50d5
rtpav1depay: Set DISCONT flag on buffers following a corrupted packet
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
d6cb9d72d8
rtpav1depay: Don't output full TUs but just OBUs as they come
...
Simplifies state tracking and potentially reduces latency as it's not
necessary to wait until all fragments of an OBU are received.
The last OBU of a TU is marked with the marker flag to allow parsers to
detect this without first seeing the beginning of the next TU.
Also use a simple `Vec` for collecting complete OBUs instead of a
`gst_base::Adapter` as this reduces the number of allocations.
And also handle invalid packets a little bit more gracefully.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/244
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
560bdc4cb7
Update for glib API changes
2023-01-31 12:24:07 +02:00
Sebastian Dröge
3b4c48d9f5
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1062 >
2023-01-25 10:31:19 +02:00
Sebastian Dröge
2c386fb792
Update for various deprecated APIs
2023-01-22 20:07:26 +02:00
Sebastian Dröge
4582ae91ab
Move remaining plugins to ParamSpec
builders
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1054 >
2023-01-21 18:34:55 +02:00
Philippe Normand
0fd63ece7d
rtpav1depay: Implement srcpad set_caps
...
Without this auto-pluggers such as decodebin or parsebin will be unable to
process AV1 RTP payloads.
Tested with: `videotestsrc num-buffers=50 ! videoconvert ! av1enc ! av1parse ! rtpav1pay ! queue ! decodebin3 ! videoconvert ! queue ! autovideosink`
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1034 >
2023-01-03 19:35:45 +02:00
Sebastian Dröge
3f904553ea
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1011 >
2022-12-13 11:43:16 +02:00
Sebastian Dröge
a8250abbf1
Fix various new clippy warnings
2022-11-01 10:27:48 +02:00
Sebastian Dröge
f2223cf2cb
Update versions to 0.10.0-alpha.1
2022-10-24 19:31:19 +03:00
Sebastian Dröge
9a68f6e221
Move from imp.instance()
to imp.obj()
...
It's doing the same thing and is shorter.
2022-10-23 23:08:46 +03:00
François Laignel
86776be58c
Remove &
for obj
in log macros
...
This is no longer necessary.
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1137
2022-10-23 21:22:31 +02:00
Sebastian Dröge
f045099fc1
Fix GObject type names, GStreamer debug category names and element factory names
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/198
2022-10-23 20:46:08 +03:00
Sebastian Dröge
5d44e0eb3c
rtp: Move GCC bandwidth estimation element from webrtc to rtp plugin
2022-10-23 20:25:08 +03:00
Sebastian Dröge
45168639e9
Rename rtpav1 plugin to just rtp
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/243
2022-10-23 20:04:43 +03:00