Commit Graph

39 Commits

Author SHA1 Message Date
Miroslav Šedivý
e3e9d1606d
Refactor signaling for video and audio (#51)
* add audio and signal request.

* disable audio by default.

* fix SignalProvide.

* disable estimator when track disabled.
2023-06-26 21:27:14 +02:00
Miroslav Šedivý
3e8d686c0f
Bandwidth estimator refactor (#46)
* rewrite to use stream selector.

* WIP.

* add nacks to metrics.

* add estimate trend.

* estimator based on trend detector.

* add estimator unstable duration.

* add estimator debug.

* add stalled duration.

* estimator move values to config.

* change default estimator values.

* minor style changes.

* fix websocket video messages.

* replace video track with ivdeo id.
2023-05-15 19:29:39 +02:00
Miroslav Šedivý
728e27da34 minor changes, moving things around. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
a4a3ff79ad
Toggle estimator config (#32)
* add estimator to conifg.

* ensure video auto is false when estimator is disabled.
2023-02-26 21:54:10 +01:00
Miroslav Šedivý
2364facd60
WebRTC congestion control (#26)
* Add congestion control

* Improve stream matching, add manual stream selection, add metrics

* Use a ticker for bitrate estimation and make bandwidth drops switch to lower streams more aggressively

* Missing signal response, fix video auto bug

* Remove redundant mutex

* Bitrate history queue

* Get bitrate fn support h264 & float64

---------

Co-authored-by: Aleksandar Sukovic <aleksandar.sukovic@gmail.com>
2023-02-06 19:45:51 +01:00
Miroslav Šedivý
6067367acd
Capture bandwidth switch (#14)
* Handle bitrate change by finding the stream with closest bitrate as peer

* Convert video id into bitrate when creating peer or changing bitrate

* Try to fix prometheus panic

* Revert metrics label name change

* minor fixes.

* bitrate selector.

* skip if moving to the same stream.

* no closure for getting target bitrate.

* fix: high res switch to lo video, stream bitrate out of range

* revert dev config change.

* white space.

Co-authored-by: Aleksandar Sukovic <aleksandar.sukovic@gmail.com>
2022-10-25 20:25:00 +02:00
Miroslav Šedivý
5ad5daa6bb
Stream bucket manager (#12)
* refactor webrtc.

* bind track with a single connection.

* audio+video codec.

* move stream selection to bucket manager.

* audio w/o bucket manager.

* revert peer changes.

* return video IDs.

* destroy & recreate all.

* add video ID change.

* Track -> Recevier.
2022-10-17 13:39:31 +02:00
Miroslav Šedivý
3cd59b9f30 rename module name from gitlab to github. 2022-07-14 22:10:41 +02:00
Miroslav Šedivý
d004ddd68f private mode implementation. 2022-03-26 23:20:38 +01:00
Miroslav Šedivý
8593d2d0fd move shared code to pkg. 2022-03-20 11:43:00 +01:00
Miroslav Šedivý
94c17e9a42 rename module to gitlab.com/demodesk/neko/server. 2022-03-20 11:27:41 +01:00
Miroslav Šedivý
d20fa071e7 register negotiation event after initial offer. 2022-02-10 23:39:52 +01:00
Miroslav Šedivý
7b2c1570bf add SDP answer. 2021-11-28 18:36:47 +01:00
Miroslav Šedivý
44e74e3088 implement signal offer. 2021-11-25 00:07:17 +01:00
Miroslav Šedivý
5130d94bbc websocket handler simplified logging. 2021-09-01 23:10:18 +02:00
Miroslav Šedivý
49c48b3200 remove event from messages. 2021-09-01 21:58:39 +02:00
Miroslav Šedivý
8f8cd47e85 websockets logging. 2021-08-29 18:23:58 +02:00
Miroslav Šedivý
7df642a346 add iceTrickle for restart from config. 2021-06-27 22:05:37 +02:00
Miroslav Šedivý
09fdea1b11 add ice restarts. 2021-06-27 22:02:05 +02:00
Miroslav Šedivý
014b757734 webrtc connect with selected video. 2021-04-30 14:05:07 +00:00
Miroslav Šedivý
552223d031 iceservers with auth. 2021-03-17 15:47:49 +01:00
Miroslav Šedivý
a9aa62f062 lint & logging fixes. 2021-03-16 10:53:03 +01:00
Miroslav Šedivý
4a28307c1e session profile decoupled. 2021-03-14 00:45:51 +01:00
Miroslav Šedivý
45679f1b86 format Go source code. 2021-02-14 14:40:17 +01:00
Miroslav Šedivý
626164df89 SignalVideo reply. 2021-02-07 17:29:40 +01:00
Miroslav Šedivý
dd2ca03955 choose video with CreatePeer. 2021-02-07 17:07:55 +01:00
Miroslav Šedivý
5cdb6e074e send video IDs with signal provide. 2021-02-07 16:52:30 +01:00
Miroslav Šedivý
6756114e30 replace video track on demand. 2021-02-05 20:35:30 +01:00
Miroslav Šedivý
c81bca9b2f session GetWebRTCPeer. 2021-02-05 18:14:45 +01:00
Miroslav Šedivý
cae8201908 add Trickle ICE support. 2021-02-02 20:43:33 +01:00
Miroslav Šedivý
ace7b254a3 split webrtc ConnectPeer function. 2021-02-02 19:21:48 +01:00
Miroslav Šedivý
4fe74fd112 + CanWatch. 2020-12-06 18:49:20 +01:00
Miroslav Šedivý
743ab2bf6a signal provide upon request WS. 2020-11-30 18:27:25 +01:00
Miroslav Šedivý
2c210f3cf1 signal provide remove ID. 2020-11-30 17:33:34 +01:00
Miroslav Šedivý
b675e4cc82 member name refactor. 2020-11-28 15:03:38 +01:00
Miroslav Šedivý
da7e6f7728 Broadcast should not return error. 2020-11-18 20:30:33 +01:00
Miroslav Šedivý
eec285cd07 Rename displayname to name. 2020-11-16 22:22:19 +01:00
Miroslav Šedivý
f136a31b03 minor refactor ifs. 2020-11-14 16:09:00 +01:00
Miroslav Šedivý
5d906e0a8b major refactor. 2020-11-01 16:09:48 +01:00