1
Fork 0
Commit Graph

209 Commits

Author SHA1 Message Date
Juliusz Chroboczek e175ef0e49 Replace changed connections.
We used to destroy and recreate connections, we now replace them atomically.
2020-06-10 20:25:25 +02:00
Juliusz Chroboczek 448bb0374d Use pushConn to delete connections.
The previous mechanism (going through up.local) was racy and complicated.
2020-06-10 19:50:18 +02:00
Juliusz Chroboczek d3655b8955 Handle client-side errors during negotiation. 2020-06-10 14:38:00 +02:00
Juliusz Chroboczek 0308719719 Implement local mute. 2020-06-09 18:10:11 +02:00
Juliusz Chroboczek 94c42ea784 Be more aggressive about growing the packet cache.
Also add a test.
2020-06-09 17:17:21 +02:00
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