1
Fork 0
Commit Graph

91 Commits

Author SHA1 Message Date
Juliusz Chroboczek 78e9c96a53 Make SetPermissions part of the client interface. 2020-09-13 10:45:16 +02:00
Juliusz Chroboczek e37e27036e Implement graceful server shutdown.
This gives the user a friendly message when the server shuts down.
2020-09-12 13:59:55 +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 9560779eb4 Move client interface to its own file. 2020-06-19 11:36:37 +02:00
Juliusz Chroboczek d8b984979b Rename client to webClient. 2020-05-30 03:26:05 +02:00
Juliusz Chroboczek 50982fddc6 Forward received FIR to sender.
It would be better to terminate FIR, note that a keyframe was requested,
and send FIR on our own.
2020-05-30 03:26:05 +02:00
Juliusz Chroboczek d56628be15 Send FIR when WriteRTP returns ErrKeyframeNeeded. 2020-05-30 03:26:05 +02:00
Juliusz Chroboczek 88fbce262f Implement sendFIR. 2020-05-29 20:57:46 +02:00
Juliusz Chroboczek 49195ef990 Improve error handling in sendPLI. 2020-05-29 20:55:49 +02:00
Juliusz Chroboczek 72cbb5ffd3 Simplify some usages of client.error. 2020-05-28 04:27:15 +02:00
Juliusz Chroboczek 4b3ce50dac Use explicit add/remove messages in writerLoop. 2020-05-27 11:25:37 +02:00
Juliusz Chroboczek e7f9a8f3dc Make downTrack and downConnection into interfaces. 2020-05-27 11:24:52 +02:00
Juliusz Chroboczek d9f2a93615 Inline activateDownTrack. 2020-05-27 11:24:52 +02:00
Juliusz Chroboczek 9488d4a7c8 Add WriteRTP and Accumulate methods to downTrack. 2020-05-27 11:24:52 +02:00
Juliusz Chroboczek 0fd302d877 Don't drop connections on ICE failure.
This spuriously breaks client-to-server connections over IPv6.
Thanks to Fabien de Montgolfier for his help with debugging this.
2020-05-25 01:08:49 +02:00
Juliusz Chroboczek 75804adc5f Improve error handling. 2020-05-24 13:39:06 +02:00
Juliusz Chroboczek bfdc22ff83 Maintain local connections explicitly. 2020-05-23 02:34:28 +02:00
Juliusz Chroboczek 4699c338e1 Cache early ICE candidates. 2020-05-23 02:34:28 +02:00
Juliusz Chroboczek 57163c70a3 Better protection against duplicate connection ids. 2020-05-22 22:38:40 +02:00
Juliusz Chroboczek 6005ad9eb4 Create a connection interface, use it in gotICE. 2020-05-22 22:36:47 +02:00
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