Commit Graph
16 Commits
Author SHA1 Message Date
David Colburn 708b8ea6ba sfu: use mediatransportutil/pkg/red in RedPrimaryReceiver (#5014)
RED depacketizing now lives in mediatransportutil so the SFU and
replay export share one implementation. Drop the local copies; the
encoder round-trip tests now exercise the shared package.
2026-10-14 16:57:01 -04:00
Raja SubramanianandClaude Opus 5.5 5111420e91 fix: copy RED history packets instead of keeping pointers (#4941)
RedReceiver kept pointers to the last forwarded packets for its
redundant blocks, but their payload is in the read buffer that
forwardRTP reuses for every packet, so the blocks carried the current
packet's bytes. Copy the history packets into slots RedReceiver owns.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 21:38:01 +05:30
Raja Subramanian 248d73948d Guard against timestamp inversion in RED -> Opus conversion. (#4414)
* Guard against timestamp inversion in RED -> Opus conversion.

Seeing timestamp inversion (sequence number is +1, but timestamp is
-960, i.e. 20ms) in the RED -> Opus conversion path. Not able to spot
any bugs in code. So, logging details upon detection and also dropping
the packet. If not dropped, downstream components like Egress treat it
as a big timestamp jump (because sequence number is moving forward) and
try to adjust pts which ends up causing drops.

* do not log time reversal at the start

* typo
2026-03-31 17:08:13 +05:30
Raja Subramanian 2510b9462e Taking a bunch of go modernize suggestions. (#4194)
This is not all of it as it is not possible (or at least I do not know
of a way) to get all suggestions for a repo/project. Did this via loop
searching mainly and taking the modernize suggestions.
2025-12-25 16:55:58 +05:30
Raja Subramanian 7c8ea11505 Refactor receiver and buffer into Base and higher layer. (#4185)
* Refactor receiver and buffer into Base and higher layer.

To be able to share code/functionality with relay.

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* clean up

* deps

* fix test

* fix test
2025-12-23 21:35:48 +05:30
Raja Subramanian 4872f2051d Return write count from WriteRTP. (#4059)
* Log write count atomic.

* Return write count from WriteRTP.

Apologies for the frequent changes on this. With relays, the down track
could write to several targets. So, use count to have an accurate
indication of how may subscribers were written to.
2025-11-06 13:29:21 +05:30
Raja Subramanian ae5fb7e882 Add packet to forwarding stats only if packet is forwarded. (#4056)
Packets not being forwarded were getting included in forwarding stats
calculation and skewing the measurement towards a smaller number.

The latency measurement does not include the batch IO of packets on
send. With a 2ms batching, that will add an average latency of 1ms.
2025-11-06 12:31:49 +05:30
cnderrauber 54f9f7de51 upgrade to pion/webrtc v4 (#3213) 2024-11-28 16:05:38 +08:00
cnderrauber deee816d0a Forward correct payload type for mixed up red/primary payload (#2847)
* Forward correct payload type for mixed up red/primary payload

* empty line

* log field & test case
2024-07-09 23:04:47 +08:00
wanshuangcheng e1b68012a1 chore: fix typos in comment (#2634)
Signed-off-by: wanshuangcheng <wanshuangcheng@outlook.com>
2024-04-10 09:27:48 -07:00
Raja Subramanian 73af5da956 Notify TrackInfo available from red receivers. (#2354)
* Notify TrackInfo available from red receivers.

That kicks off the down track scorer.

* test
2023-12-28 15:50:51 +05:30
David Zhao 981fb7cac7 Adding license notices (#1913)
* Adding license notices

* remove from config
2023-07-27 16:43:19 -07:00
Raja Subramanian e423873aa3 Do not include packet in RED if timestamp is too far back. (#1478)
* Do not include packet in RED if timestamp is too far back.

* add test case for large timestmap jump
2023-02-28 10:13:42 +05:30
cnderrauber 711799ecf8 Encoding primary packet only if red encoding don't have enough space (#1196)
* Encoding primary packet only if red encoding don't have enough space

* clean code
2022-11-28 13:58:01 +08:00
cnderrauber bed488ceeb Recover lost packet from red encoding for opus only client (#1139)
* Recover lost packet from red encoding for opus only client
2022-11-02 18:39:57 +08:00
cnderrauber bdd69c7a1c Add red encoding for opus only publisher (#1137)
* Add red encodings for opus only publisher

* Add test case for red receiver
2022-11-02 10:36:29 +08:00