Juliusz Chroboczek
9575b80893
Use mids instead of track ids for indexing labels.
...
It turns out that track ids are not necessarily the same on the local and
remote sides. Thanks to Ines Klimann for noticing the issue.
2020-05-21 22:40:11 +02:00
Juliusz Chroboczek
9fde029912
Send recovery if we're very mildly congested.
2020-05-21 13:25:45 +02:00
Juliusz Chroboczek
0e1f3cafea
Drop until end of frame when writer is congested.
2020-05-21 13:17:52 +02:00
Juliusz Chroboczek
e32f911ab9
Don't account failed writes in rate estimator.
2020-05-21 12:39:02 +02:00
Juliusz Chroboczek
a290325320
Wait for answer before sending data.
2020-05-21 00:55:00 +02:00
Juliusz Chroboczek
5a2dbf36b9
Signal new tracks explicitly.
2020-05-20 23:43:46 +02:00
Juliusz Chroboczek
5916028edd
Split the main up loop into two threads.
...
The reader and the writer now communicate through a channel and the packet
cache. If the writer thread drops behind, we drop packets after inserting in
the packet cache, which avoids building a backlog.
2020-05-20 23:42:52 +02:00
Juliusz Chroboczek
a6b09c9150
Implement packagecache.GetAt.
2020-05-20 23:41:29 +02:00
Juliusz Chroboczek
f641e263f1
Make packetcache.Get use a caller-allocated buffer.
2020-05-20 20:32:30 +02:00
Juliusz Chroboczek
12858e1f36
Implement commands /lock and /unlock.
2020-05-18 15:24:04 +02:00
Juliusz Chroboczek
037f002a29
Make the requested field of client requests into a dictionary.
2020-05-18 00:56:29 +02:00
Juliusz Chroboczek
b265aacd32
Push complete connections rather than individual tracks.
2020-05-17 23:55:54 +02:00
Juliusz Chroboczek
b26a8cad78
Label tracks explicitly.
...
For now, this is only used to request screen sharing as opposed to normal
videos. In the future, it will be used for simulcasting.
2020-05-17 23:28:19 +02:00
Juliusz Chroboczek
7281a09f6e
Use pushTracks in up.OnTrack.
2020-05-17 21:24:16 +02:00
Juliusz Chroboczek
7393ca8473
Make all communication between client threads asynchronous.
...
We used to deadlock with large numbers of tracks. This should fix that.
2020-05-12 18:27:40 +02:00
Juliusz Chroboczek
89695c3713
Implement reception of audio only.
2020-05-09 22:44:34 +02:00
Juliusz Chroboczek
0c7b77d919
Only send RTCP feedback if supported by the peer.
2020-05-09 18:49:22 +02:00
Juliusz Chroboczek
fd6b9f6bdd
Limit the video rate when we have large numbers of presenters.
2020-05-09 12:17:22 +02:00
Juliusz Chroboczek
7c83f2fa5a
Don't pass group to rtcpDownListener.
2020-05-07 10:29:48 +02:00
Juliusz Chroboczek
ac50973a99
Don't reset remote track on failure.
...
That would be racy.
2020-05-03 19:45:36 +02:00
Juliusz Chroboczek
0c4a625244
Simplify computation of available down bitrate.
...
Don't take packet loss into account, just clamp at 384kbps.
2020-05-03 18:30:01 +02:00
Juliusz Chroboczek
ae7e32a36a
Implement loss-based congestion control on the down side.
2020-05-03 18:30:01 +02:00
Juliusz Chroboczek
5205c0773b
Delete upstream connections on ICE failure.
2020-05-03 11:06:08 +02:00
Juliusz Chroboczek
92de141b97
Rework sending of NACKs.
2020-05-03 11:06:08 +02:00
Juliusz Chroboczek
4dd245712f
Include jitter and delay in receiver reports.
2020-05-03 11:06:08 +02:00
Juliusz Chroboczek
7961d7279b
Move monotonic time to separate package, use microseconds.
2020-05-03 11:06:08 +02:00
Juliusz Chroboczek
5715182978
Fix TotalLost value in receiver reports.
2020-05-03 11:06:08 +02:00
Juliusz Chroboczek
100f72e76c
Don't count NACK recovery as properly received packets.
2020-05-03 11:06:08 +02:00
Juliusz Chroboczek
a74e4f68b5
Don't honour NACKs if we're congested.
2020-05-03 11:06:08 +02:00
Juliusz Chroboczek
5a1ef1ddd7
Use a proper accessor for timestampedByterate.
2020-05-03 11:06:08 +02:00
Juliusz Chroboczek
8fa68f9605
Remove track muting.
2020-05-03 11:06:08 +02:00
Juliusz Chroboczek
5dd27e5067
Implement rate estimation.
2020-05-03 11:06:08 +02:00
Juliusz Chroboczek
10526d474e
Add command /clear.
2020-04-30 19:13:32 +02:00
Juliusz Chroboczek
f1deb84576
Increase the size of the NACK cache.
2020-04-30 19:13:32 +02:00
Juliusz Chroboczek
4996cf6931
Don't log unknown RTCP.
2020-04-30 19:13:32 +02:00
Juliusz Chroboczek
4173d6170e
Ignore PLI and NACK for muted tracks.
2020-04-30 19:13:32 +02:00
Juliusz Chroboczek
6ba5315a48
Don't mute clients unless they are suffering packet loss.
...
Otherwise we never recover from low throughput.
2020-04-29 18:49:09 +02:00
Juliusz Chroboczek
17941fa96d
Parse receiver reports, save loss rate.
2020-04-29 16:03:54 +02:00
Juliusz Chroboczek
b042bed9a3
Maintain reception statistics, send receiver reports.
2020-04-29 13:27:51 +02:00
Juliusz Chroboczek
e2d89c7c17
Merge packet list and window into cache.
2020-04-29 11:11:07 +02:00
Juliusz Chroboczek
a813cc9ce4
Split out sending loop into a separate function.
2020-04-29 02:00:40 +02:00
Juliusz Chroboczek
81dfabbe50
Implement sending NACKs on the upstream connection.
2020-04-28 23:45:19 +02:00
Juliusz Chroboczek
e5dae16da1
Rate-limit PLI.
2020-04-28 23:45:19 +02:00
Juliusz Chroboczek
bfeeeb4bcd
Handle NACKs arriving on down connections.
2020-04-28 23:45:19 +02:00
Juliusz Chroboczek
d84604832d
Don't complain on ErrClosedPipe.
2020-04-28 20:13:03 +02:00
Juliusz Chroboczek
151f37c062
Pass a track to the RTCP listener.
2020-04-28 20:13:03 +02:00
Juliusz Chroboczek
d9a7f3d6c0
Avoid reallocating the list of local tracks at each packet.
2020-04-28 20:13:03 +02:00
Juliusz Chroboczek
87f70c4345
Mute clients when bitrate is too low.
2020-04-28 20:13:03 +02:00
Juliusz Chroboczek
1de42bd80e
Kill obsolete function.
2020-04-28 15:07:58 +02:00
Juliusz Chroboczek
038ab46d2b
Use a separate track for each down connection.
2020-04-28 14:54:50 +02:00