1
Fork 0
Commit Graph

982 Commits

Author SHA1 Message Date
Juliusz Chroboczek b6adc0b9a8 Rename Connection to Stream in the JS code. 2020-08-12 12:50:28 +02:00
Juliusz Chroboczek 675035ab29 Restructure group and client management messages. 2020-08-12 12:40:40 +02:00
Juliusz Chroboczek 88d2a96819 Restructure error and chat messages. 2020-08-12 12:17:56 +02:00
Juliusz Chroboczek 7b51296262 Split handshake into login/join.
For now, join must follow login, but it will make it easier to extend
the protocol for joining multiple groups (think federation).
2020-08-12 11:50:30 +02:00
Juliusz Chroboczek 6bde5f986a Store password in client structure.
No need to carry password around.
2020-08-12 11:49:23 +02:00
Juliusz Chroboczek 6a37033ca8 Allow both sides to initiate renegotiation.
More reliable reaction to network failures when they are detected
by just one side.
2020-08-11 15:49:33 +02:00
Juliusz Chroboczek 7aab79c4c6 Have chat messages go through the server even when sent to oneself. 2020-08-07 11:33:59 +02:00
Juliusz Chroboczek 23c4aea58f Implement renegotiation in the up direction. 2020-08-07 11:15:58 +02:00
Juliusz Chroboczek 9506615272 Restart ICE instead of restarting down connections. 2020-08-07 11:15:58 +02:00
Juliusz Chroboczek e724194ef6 Upgrade to pion/webrtc v3. 2020-08-07 11:15:58 +02:00
Juliusz Chroboczek 8a4d315c51 Move ice-servers.json under dataDir.
This makes it easier to deploy by putting all user-serviceable files
under data/.
2020-08-07 11:14:34 +02:00
Juliusz Chroboczek 4e594465cc Remove dead code. 2020-08-04 20:52:35 +02:00
Juliusz Chroboczek e9559d9a10 Remove unused field. 2020-08-04 20:51:07 +02:00
Juliusz Chroboczek 426c1e06d8 Remove half-baked compatibility code for old browsers. 2020-06-19 11:51:46 +02:00
Juliusz Chroboczek 9560779eb4 Move client interface to its own file. 2020-06-19 11:36:37 +02:00
Juliusz Chroboczek 1e977213d1 Check media status in setMediaStatus. 2020-06-12 21:28:35 +02:00
Juliusz Chroboczek a4d0741704 Perform congestion control at the connection level.
REMB applies to the whole transport, not to individual tracks.
2020-06-12 20:17:46 +02:00
Juliusz Chroboczek 903e499dd6 Don't reduce video rate in large groups. 2020-06-12 17:27:38 +02:00
Juliusz Chroboczek a8ca2e8559 Make stats reporting independent of the number of tracks. 2020-06-12 15:42:44 +02:00
Juliusz Chroboczek 23cceba7ba Restart downstream connections on ICE failure. 2020-06-11 20:22:28 +02:00
Juliusz Chroboczek dbd87895ba Add visual feedback for connection status. 2020-06-11 19:47:26 +02:00
Juliusz Chroboczek 4b32c55a57 Restart ICE in client on up connection failures. 2020-06-11 19:20:11 +02:00
Juliusz Chroboczek 9c25696d01 Update dependencies. 2020-06-11 13:51:54 +02:00
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