Commit Graph

256 Commits

Author SHA1 Message Date
hn8 dcfe7eaf4f Enhancement: audio speakers (#44)
* refactor: active speakers

1. Observe the loudest adjusted with active ratio instead of linear average of decibel values
2. Follow RFC6465 to convert audio level from decibel to linear value.
3. Quantize audio level for stable slice comparison
4. Switch moving average algorithm from MMA to EMA to have the same center of mass with SMA
5. Minor: remove seenSids map allocation
6. Minor: minimize division arithmetic

* Update pkg/rtc/audiolevel.go

Co-authored-by: David Zhao <david@davidzhao.com>
2021-07-09 09:46:24 -07:00
David Colburn 145f058eaa send leave when client reconnects on server restart (#43) 2021-07-08 01:37:21 -05:00
David Colburn 3eba7fe25c update twirp and pb 2021-07-06 19:30:06 -07:00
David Zhao 4ec2959950 Use discreet ports by default due to write bottleneck (#40) 2021-07-06 15:08:46 -07:00
David Zhao 1ced03d72f fixed failing tests 2021-07-02 17:04:22 -07:00
David Zhao 6751361187 Feature: codec restrictions.
In order to ensure clients are publishing with compatible codecs, the server can enforce codec restrictions.
2021-07-02 16:54:54 -07:00
David Colburn e543aaa98a turn server tls (#38)
* tls

* acm

* use cert/key files

* turn -> turns

* turn cert config

* updates

* move panic

* tidy

* final updates
2021-07-01 17:00:49 -05:00
David Zhao 4e6eafa63c for test environments, allow use of internal IP if external IP isn't available 2021-06-30 15:14:58 -07:00
David Colburn b05da63fc3 send update on reconnect 2021-06-28 16:22:51 -07:00
David Zhao 083e7cc860 Reduce default PLI throttle values, ion-sfu resync fix 2021-06-28 15:49:17 -07:00
David Zhao 343aec98a0 Remove STUN candidates, disconnect clients on ICE failed 2021-06-28 12:47:16 -07:00
David Colburn 815fd5066d remove unconnected participants after 1m 2021-06-26 18:38:44 -07:00
David Zhao c0c38f2e1d Fixed deadlocks with updated simulcast logic 2021-06-25 17:12:22 -07:00
David Colburn 871ecd0366 best quality if < 10 subs 2021-06-23 22:01:23 -07:00
David Zhao d8b96ac2c8 Room API to support selective subscriptions 2021-06-23 14:12:51 -07:00
David Zhao 0c75924c73 increase subscription debounce interval 2021-06-23 12:44:40 -07:00
David Colburn eda5cfbfd5 better pli throttling 2021-06-23 12:00:18 -07:00
David Colburn 0ffb8a97e4 rtcpThrottle -> pliThrottle 2021-06-22 15:00:27 -07:00
David Zhao 3b2b3a4929 debounce track settings API to match client usage pattern 2021-06-22 14:13:24 -07:00
David Zhao bc8becaff6 fixed logic error in speaker updates 2021-06-22 00:35:33 -07:00
David Zhao f0d8b1c7ee fixed bug in smoothing algorithm, fixed tests 2021-06-21 22:18:18 -07:00
David Zhao d69e9f451e Smooth audio levels by averaging over samples. 2021-06-21 18:14:28 -07:00
David Colburn eebc2f5acd add throttle config 2021-06-21 17:13:58 -07:00
David Colburn 46ad247927 fix addTrack 2021-06-21 16:16:13 -07:00
David Colburn 31b4148052 don't send empty pkts 2021-06-21 15:54:42 -07:00
David Colburn fee6f426bb close rtcpThrottle 2021-06-21 15:30:18 -07:00
David Colburn e4a460f30b nil checks 2021-06-21 15:08:49 -07:00
David Colburn ce3199b8b1 throttle 2021-06-21 14:57:26 -07:00
David Zhao 69290c535b Send full update after joining when there are missed updates 2021-06-19 00:14:40 -07:00
David Zhao 38c81e5645 Support for video dimensions in publications (#36)
* send back video dimensions

* Store video dimensions in MediaTrack and forward in TrackInfo

* use committed protocol
2021-06-18 21:05:56 -07:00
David Zhao 515b1f0f7e exit downtrackRTCPWorker after disconnection 2021-06-17 23:31:17 -07:00
David Zhao b2201a7b34 don't set PeerConnection callbacks, ignore the responses instead 2021-06-17 22:54:09 -07:00
David Zhao e527a66096 endpoint to dump stacktraces 2021-06-17 22:54:09 -07:00
David Colburn 089d1d366d move createOffer to goroutine 2021-06-17 22:33:26 -07:00
David Zhao 3fad61b365 Fix "missing tracks" - always send participant updates 2021-06-16 13:39:04 -07:00
David Colburn f30fe90d98 remove buffer close 2021-06-15 11:44:09 -07:00
David Colburn 4f56d55d86 close rtp buffers 2021-06-15 00:50:33 -07:00
David Zhao 2cecbad29d fix: memory leaks with BufferFactory being held 2021-06-14 22:53:29 -07:00
David Zhao 0cecd81906 fix negotiation timing issue, potential deadlock in ICE restart 2021-06-09 17:50:12 -07:00
David Zhao b3e6bd10cf fixed potentially skipping offer in PCTransport
this could explain the "missing" track problem when the server fails to send some tracks to some of the subscribers
2021-06-09 16:06:10 -07:00
David Zhao b10d903d3e fix: avoid deadlocks when participant closing, adapt to ion-sfu changes 2021-06-09 14:16:48 -07:00
David Zhao db7d5fff52 Test reliability - give time for HTTP server to start 2021-06-09 13:54:52 -07:00
David Zhao 6278673b46 Fix test 2021-06-09 13:17:13 -07:00
David Zhao abedc05ce5 Improve logging, hook up ion with zap logger 2021-06-09 12:31:29 -07:00
Théo Monnom 321ebab99b Add the ability to send data to specific participants (#34)
* UserPacket destination filter

* Updated protocol to v0.5.2

* Added DataChannel tests
2021-06-09 12:14:14 -07:00
David Zhao bbf7f83784 Improve integration test reliability, wait for RedisRouter to start 2021-06-09 09:51:44 -07:00
David Zhao 7173dcc1d1 release read lock on AddSubscriber earlier 2021-06-08 15:28:49 -07:00
David Zhao e77c819d1a also increase send buffer size, 0.9.8 2021-06-07 21:22:42 -07:00
David Zhao fc41e14bf3 detect UDP buffer size w/o using original conn.
if we get FD on the mux connection, the connection will be set to blocking mode and then hang when stopping
2021-06-07 16:11:48 -07:00
David Zhao d949eaa99f set UDP read buffer size and info/warn during startup 2021-06-07 15:49:25 -07:00