Commit Graph

119 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ý
43f8fe339f webrtc peer do not set nil conn. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
5a2fcc1c8a move consts. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
fcf6822833 move estimator to peer. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
c2b29ccf21 handle use webrtc logger. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
e8aab98012 refactro cursor image and pos. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
728e27da34 minor changes, moving things around. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
a2e0aeec77 receiver stop error reporting. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
c676d7a3a2 move collectors to metrics. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
5f0aafca51 remove deprecated functions. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
9d362ed036 move change funcs to peer. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
ec8560b290 add session & metrics to webrtc peer. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
9928feefef refactor metrics. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
7cd469f7bd cleanup peer. 2023-04-18 12:07:49 +02:00
Miroslav Šedivý
2ff47ac920 fix: ensure webrtc close is executed only once. 2023-03-27 19:28:28 +02:00
Miroslav Šedivý
08a5d5abb4
Split ICE Servers to frontend and backend (#37)
* split iceservers to frontend and backend.

* no backend ice servers when ice lite enabled.

* update config.
2023-03-27 18:34:24 +02:00
Miroslav Šedivý
9936a04fea
add passive estimator & REMB back. (#35) 2023-03-13 17:55:52 +01:00
Miroslav Šedivý
17bfd2d58f
Sample listeners chan (#33)
* switch to sample listeners.

* add streamsink total bytes to metrics.

* on rtcp to chan.

* change logs.

* streamsink add real bitrate.

* add timing information to sample.

* bitrate buckets.

* switch to WriteSample.
2023-03-07 00:08:53 +01: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ý
0086900053
GCC No-Op Pacer (#29)
* on rtcp send multiple packets.

* use no op pacer.
2023-02-14 21:19:14 +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ý
e80ae8019e
set answering dtls role as server. (#24) 2023-01-30 11:31:30 +01:00
Miroslav Šedivý
813a0da30c
WebRTC ping over data channel (#23)
* add datachannel ping to webrtc.

* add ping pong decode func.
2023-01-20 23:08:27 +01:00
Miroslav Šedivý
fb8462b56a
Add WebRTC candidate metrics (#18)
* stats: add protocol to iceCandidates.

* add ice candidates used metric.

* NewICECandidate use whole struct.
2022-12-16 13:49:51 +01:00
Miroslav Šedivý
6b39e8e0e8
Fix WebRTC mux issues (#17)
* use NewMultiUDPMuxFromPort.

* tcp mux add write buffer size.
2022-12-13 11:35:03 +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ý
f4a4e0152e webrtc SetCursorPosition. 2022-07-28 12:43:31 +02:00
Miroslav Šedivý
3cd59b9f30 rename module name from gitlab to github. 2022-07-14 22:10:41 +02:00
Miroslav Šedivý
d5c934f2af add ReceiverReport. 2022-07-04 01:01:03 +02:00
Miroslav Šedivý
01b5d61e2b add receiverEstimatedMaximumBitrate. 2022-07-04 00:38:46 +02:00
Miroslav Šedivý
3fda00bac5 add video id for webrtc metrics. 2022-07-03 23:21:25 +02:00
Miroslav Šedivý
bb35695255 split sctp and ice bytes. 2022-07-01 00:16:39 +02:00
Miroslav Šedivý
fc5c017666 stats ice Candidates Count. 2022-06-30 23:50:47 +02:00
Miroslav Šedivý
527b1f08f8 add webrtc metrtics. 2022-06-25 20:12:42 +02:00
Miroslav Šedivý
149d74150b sessions in private still get cursor info & send inactive. 2022-03-27 00:35:33 +01: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ý
d068698836 update logging. 2022-02-12 18:55:56 +01:00
Miroslav Šedivý
d20fa071e7 register negotiation event after initial offer. 2022-02-10 23:39:52 +01:00
Miroslav Šedivý
924be20505 WebRTC TCP and UDP mux. 2022-02-09 20:45:03 +00:00
Miroslav Šedivý
14a2e698ac add stop fn to remote track. 2022-01-06 22:28:34 +01:00
Miroslav Šedivý
0f9f9a376c fix remote track logging. 2022-01-06 20:41:44 +01:00
Miroslav Šedivý
6b14e01415 add media to capture config. 2021-12-09 23:22:24 +01:00
Miroslav Šedivý
670e0ee17d member profile can share media. 2021-12-09 21:48:02 +01:00
Miroslav Šedivý
64c3449322 pipeline error handling. 2021-12-02 23:35:38 +01:00
Miroslav Šedivý
d70ae4410f implement webcam. 2021-12-02 23:06:21 +01:00
Miroslav Šedivý
5643e7abbc add streamsrc to capture. 2021-12-01 22:36:45 +01:00