Juliusz Chroboczek
f3b58bbf5c
Don't complain about rate limiting.
2020-06-09 15:15:59 +02:00
Juliusz Chroboczek
4a526b4133
Implement packet pacing.
...
We used to send all of the packets corresponding to a received packet
as a single burst, which led to persistent packet drops for clients
at the end of the queue. Pace the writer, which introduces up to 1ms
extra jitter.
2020-06-09 15:15:59 +02:00
Juliusz Chroboczek
2454e33df3
Use jiffies in rate estimator.
...
This avoids locking in estimate.
2020-06-09 14:14:32 +02:00
Juliusz Chroboczek
f277b42e26
Check for connection state if not sending report packet.
...
This avoids a situation when an RTCP sender never terminates.
2020-06-09 13:46:04 +02:00
Juliusz Chroboczek
f70ff2424e
Detect sends on closed websocket explicitly.
...
It turns out that send on a closed websocket doesn't throw, so handle
this case explicitly. Thanks to Giuseppe Castagna for noticing.
2020-06-09 01:49:55 +02:00
Juliusz Chroboczek
191624130a
Use packet timestamps when saving to disk.
2020-06-09 01:06:09 +02:00
Juliusz Chroboczek
f9edde6526
Maintain time offsets on the sender side.
2020-06-09 01:06:09 +02:00
Juliusz Chroboczek
917fa33d38
Don't duplicate username in call to addClient.
2020-06-08 22:31:12 +02:00
Juliusz Chroboczek
208f023d9e
Make upConnections generic.
2020-06-08 22:14:28 +02:00
Juliusz Chroboczek
0f96f94417
Implement packetcache.GetLast.
2020-06-08 21:55:38 +02:00
Juliusz Chroboczek
da97560cb3
Protect upConn.tracks by the upConn mutex rather than the client mutex.
...
Also don't rely on tracks being immutable in sendRR.
2020-06-08 19:11:20 +02:00
Juliusz Chroboczek
8ba50bd2ca
Tweak SR sending policy.
...
Don't send SRs for tracks for which we have no time offset yet.
Send an unscheduled SR when we get our first time offset.
2020-06-04 19:12:52 +02:00
Juliusz Chroboczek
ce7f3670bc
Resize packet cache dynamically.
2020-06-04 01:51:36 +02:00
Juliusz Chroboczek
b00d2abacf
Implement packetcache resizing.
2020-06-04 00:36:01 +02:00
Juliusz Chroboczek
b1542af47c
Remove dead code.
2020-06-03 23:45:45 +02:00
Juliusz Chroboczek
4da03a3ce5
Make rate estimator estimate packet rates too.
2020-06-03 23:45:45 +02:00
Juliusz Chroboczek
19a65318c9
Compute down track RTT.
2020-06-03 23:45:45 +02:00
Juliusz Chroboczek
49bccda5ee
Send client notification to oneself too.
...
This was broken when we pushed user notifications into addClient.
2020-06-03 21:09:24 +02:00
Juliusz Chroboczek
b447a2e9a0
Maintain sender report time in jiffies.
2020-06-03 21:05:03 +02:00
Juliusz Chroboczek
3e305e9827
Use jiffies instead of microseconds.
2020-06-03 20:58:01 +02:00
Juliusz Chroboczek
dddecd8610
Implement jiffies.
2020-06-03 20:18:06 +02:00
Juliusz Chroboczek
7ae9a9ea69
Rename mono to rtptime.
2020-06-03 20:12:25 +02:00
Juliusz Chroboczek
e373054f7e
Use bytes.Equal in packetcache_test.go.
2020-06-03 11:11:25 +02:00
Juliusz Chroboczek
b7a680671d
Remove padding in packetcache.
...
Since the packet entries are already overdimensioned, there's no
need to add additional padding.
2020-06-03 02:45:34 +02:00
Juliusz Chroboczek
d723d20ee6
Add packetcache benchmarks.
2020-06-03 02:36:23 +02:00
Juliusz Chroboczek
4d2bd6e473
Fix initialisation of maxLossBitrate.
2020-06-01 01:48:22 +02:00
Juliusz Chroboczek
dcb2111181
Send sender reports.
2020-06-01 01:34:44 +02:00
Juliusz Chroboczek
f851622191
Export mono.FromDuration.
2020-06-01 01:34:44 +02:00
Juliusz Chroboczek
5b92226860
Maintain full time information from sender reports.
2020-06-01 01:09:15 +02:00
Juliusz Chroboczek
a6db6b105d
Keep track of total numbers sent.
2020-06-01 00:42:00 +02:00
Juliusz Chroboczek
8fb8f7b7d5
Implement NTP time.
2020-06-01 00:36:33 +02:00
Juliusz Chroboczek
303d15539c
Handle sender reports for down tracks.
...
In principle, we should be receiving receiver reports only, but let's
be robust.
2020-06-01 00:35:37 +02:00
Juliusz Chroboczek
8fda40b544
Set delay in receiver report to 0 if no sender report received.
2020-06-01 00:26:23 +02:00
Juliusz Chroboczek
70dee15f5c
Rename rate.Add to rate.Accumulate.
2020-06-01 00:02:17 +02:00
Juliusz Chroboczek
c4284a45c5
Delay rtcpUpSender until the connection is complete.
...
This avoids locking in sendRR.
2020-06-01 00:02:17 +02:00
Juliusz Chroboczek
7786aa12aa
Update README.
2020-06-01 00:02:17 +02:00
Juliusz Chroboczek
8830870ded
Implement downloading of recorded videos.
2020-06-01 00:02:17 +02:00
Juliusz Chroboczek
b8128f81a0
Move client notifications into addClient and delClient.
2020-06-01 00:02:17 +02:00
Juliusz Chroboczek
8472f9bf0b
Relax web server timeouts.
2020-05-31 16:49:54 +02:00
Juliusz Chroboczek
57e08201ab
Split out web serving into a separate file.
2020-05-31 16:46:41 +02:00
Juliusz Chroboczek
8ef01d4e0f
Update dependencies.
...
This fixes leaking of rtpUpSender goroutines.
2020-05-31 16:33:20 +02:00
Juliusz Chroboczek
e28a390ab9
Move check for incorrect username earlier.
2020-05-30 13:23:31 +02:00
Juliusz Chroboczek
50ad751e7d
Protect against stream being null in connection.close.
...
This may happen if we close a connection before getting any tracks.
2020-05-30 13:15:12 +02:00
Juliusz Chroboczek
65637c1832
Tweak error message.
2020-05-30 12:53:58 +02:00
Juliusz Chroboczek
32e8f08b8d
Move dead errors into webclient.
2020-05-30 12:38:13 +02:00
Juliusz Chroboczek
2dd230ca45
Don't complain about unknown local tracks on close.
2020-05-30 12:33:30 +02:00
Juliusz Chroboczek
37b1994069
Fail addLocal if connection is closed.
2020-05-30 03:44:03 +02:00
Juliusz Chroboczek
7972edfc8b
Document recording.
2020-05-30 03:26:05 +02:00
Juliusz Chroboczek
0a2c4eb381
Implement recording.
2020-05-30 03:26:05 +02:00
Juliusz Chroboczek
c1ab839f02
Implement disk tracks.
2020-05-30 03:26:05 +02:00