Commit Graph

737 Commits

Author SHA1 Message Date
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ý
1a752e43d2
Add plugins required flag (#40)
* add required plugins flag.

* update plugins logs.

* add plugins subcommand.

* move preflight to prerun.
2023-03-31 12:02:33 +02:00
Miroslav Šedivý
43a649d2c4
websockets set max payload log size. (#42) 2023-03-31 12:02:19 +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ý
09508638ce
session save & load from a file. (#38) 2023-03-27 18:33:51 +02:00
Miroslav Šedivý
fa69ddd984 streamsink total bytes metric counter. 2023-03-17 20:20:23 +01: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ý
64abfd0b1a cursors increase max serial to 300. 2023-02-21 00:14:50 +01:00
Miroslav Šedivý
30200d4057
Switch to listeners for webrtc pause (#31)
* switch to listeners for webrtc pause.

* group track vars.

* do not set or remove stream when paused.
2023-02-20 19:48:04 +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ý
124c5ae117
Wait for keyframe on switching streams (#28)
* stream sink add keyframe lobby.

* change streamsink keyframe identifier.

* add h264.

* use gstreamers is delta unit for sample.

* use delta unit.
2023-02-14 21:19:02 +01:00
Miroslav Šedivý
f8b128e1e9
Custom sizes with XRandR (#25)
* xserver dummy with RandR.

* update.

* remove screen configurations from xorg.

* screen size cannot be nil anymore.

* use predefined screen configurations.

* use screen configurations.

* fix error.

* remove comment.
2023-02-14 21:18:47 +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ý
8381020415 default provider: multiuser. 2023-01-13 12:01:58 +01:00
Miroslav Šedivý
7601af9917 fix default pipeline. 2023-01-13 12:01:58 +01:00
Miroslav Šedivý
1fb5ae43dd allow multiple users to be set in object provider. 2023-01-13 12:01:58 +01:00
Miroslav Šedivý
107eba22a5 select profile primarily from corresponding session, if exists. 2023-01-13 12:01:58 +01:00
Miroslav Šedivý
2ff8d84ba2 fix errors. 2023-01-13 12:01:58 +01:00
Miroslav Šedivý
af95cb4d72 change dummy to noauth mode. 2023-01-13 12:01:58 +01:00
Miroslav Šedivý
319bd457f3 add multiuser provider. 2023-01-13 12:01:58 +01:00
Miroslav Šedivý
6574470278 login logout proper http error handling. 2023-01-12 23:21:56 +01:00
Miroslav Šedivý
3c3042d691
Add batch endpoint (#19)
* add batch endpoint.

* keep error code.

* use utils.HttpSuccess.

* add batch to openapi.

* body omitempty.
2023-01-09 23:18:47 +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ý
919a554a9e track WriteSample fix log message. 2022-12-12 22:53:26 +01:00
Miroslav Šedivý
2cb64d15a0
send heartbeat with ping. (#16) 2022-11-11 17:58:54 +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ý
d608e312eb
check if we already listen to requested stream. (#13) 2022-10-23 11:31:25 +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ý
095f9fe8ee
gst as interface. (#11) 2022-10-13 19:57:31 +02:00
Miroslav Šedivý
c34a76c8a3 broadcast url in config. 2022-09-23 17:21:33 +02:00
Miroslav Šedivý
194fd29679 capture fix replaces for pipelines. 2022-09-23 17:21:33 +02:00
Miroslav Šedivý
da24f92e72 broadcast log url. 2022-09-23 17:21:33 +02:00
Miroslav Šedivý
3eedbbf8ea broadcast pipeline fn. 2022-09-23 17:21:33 +02:00
Miroslav Šedivý
a6f117686f create pipeline fn return error. 2022-09-23 17:21:33 +02:00
Miroslav Šedivý
c793ff1ff6 kataras/go-events@v0.0.3 Once workaround. 2022-09-12 21:19:21 +02:00
Miroslav Šedivý
691150900b
Temporary websocket disconnect handling (#6)
* fix websocket close log error.

* logger session interface no pointer.

* websocket delayet disconnect.

* session host: save id not pointer to a session.

* fix if hostId not stored.
2022-08-26 20:16:40 +02:00
Miroslav Šedivý
a6813f994c ws control buttons & keys add optional pos. 2022-07-28 12:43:31 +02:00
Miroslav Šedivý
7d5ec0190a add button events to control WebSocket. 2022-07-28 12:43:31 +02:00
Miroslav Šedivý
f4a4e0152e webrtc SetCursorPosition. 2022-07-28 12:43:31 +02:00
Miroslav Šedivý
81531d74c1 websocket move cursor & scroll. 2022-07-28 12:43:31 +02:00
Miroslav Šedivý
babddacbf3
Go generics and changes in v1.18 (#5)
* ArrayIn to use generics.

* interface{} -> any.
2022-07-28 12:20:20 +02:00
Miroslav Šedivý
3cd59b9f30 rename module name from gitlab to github. 2022-07-14 22:10:41 +02:00
Miroslav Šedivý
2bf83f6217 add metrics to config. 2022-07-04 18:26:29 +02:00
Miroslav Šedivý
bf47e5a8d0 cleanup. 2022-07-04 18:23:35 +02:00
Miroslav Šedivý
8f83089c8e move to /health and exclude metrics from logging. 2022-07-04 18:09:47 +02:00
Miroslav Šedivý
e37f5c13ca fix bug. 2022-07-04 18:03:35 +02:00
Miroslav Šedivý
8ada0217d0 reset counters when closed. 2022-07-04 17:47:04 +02:00
Miroslav Šedivý
d5c934f2af add ReceiverReport. 2022-07-04 01:01:03 +02:00
Miroslav Šedivý
fb707f05a6 join bytes by a label. 2022-07-04 00:48:29 +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ý
e4261c53b1 iceCandidatesMu. 2022-07-03 23:06:56 +02:00
Miroslav Šedivý
bb35695255 split sctp and ice bytes. 2022-07-01 00:16:39 +02:00
Miroslav Šedivý
7a1c8813e6 metrics connection State Count. 2022-06-30 23:54:06 +02:00
Miroslav Šedivý
fc5c017666 stats ice Candidates Count. 2022-06-30 23:50:47 +02:00
Miroslav Šedivý
8e80ef2c69 streamsrc mutex. 2022-06-25 23:53:19 +02:00
Miroslav Šedivý
527b1f08f8 add webrtc metrtics. 2022-06-25 20:12:42 +02:00
Miroslav Šedivý
555fd803bc add active pipelines. 2022-06-19 01:03:16 +02:00
Miroslav Šedivý
5ab4848580 join pipelines_total. 2022-06-19 00:51:17 +02:00
Miroslav Šedivý
ef7e9b1a53 move metrics to /metrics. 2022-06-14 22:34:51 +00:00
Miroslav Šedivý
6deaa64884 capture metrics. 2022-06-15 00:23:16 +02:00
Miroslav Šedivý
0952be6a94 add chi metrics middleware. 2022-06-15 00:22:27 +02:00
Miroslav Šedivý
d5425ea457 clipboard set for control paste. 2022-05-03 19:57:31 +00:00
Aleksandar Sukovic
49ff490640 load plugins in order of dependencies. 2022-05-03 11:17:04 +00:00
Maksim Dorokhin
ae7e6dc2d7 add error to plugin start. 2022-04-20 09:31:37 +00:00
Miroslav Šedivý
61059c9b3c revert backwards compatibility. 2022-04-19 10:16:59 +00:00
Aleksandar Sukovic
fdd0639036 expose plugin service. 2022-04-19 10:14:59 +00:00
Miroslav Šedivý
a4bb108168 replace modules with go plugins. 2022-04-15 19:28:00 +00:00
Maksim Dorokhin
f447cabe2e add patch method to router. 2022-04-14 08:47:47 +00:00
Miroslav Šedivý
149d74150b sessions in private still get cursor info & send inactive. 2022-03-27 00:35:33 +01:00
Miroslav Šedivý
470f670865 private mode release control. 2022-03-27 00:32:21 +01:00
Miroslav Šedivý
58fca708a7 add settings update to API. 2022-03-27 00:26:25 +01:00
Miroslav Šedivý
7d53e59945 properly clear inactive cursors. 2022-03-27 00:26:11 +01:00
Miroslav Šedivý
81867d811b sessions: switch to settings struct. 2022-03-27 00:08:06 +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ý
d108343ced Logs JSON output. 2022-03-07 10:05:02 +00:00
Miroslav Šedivý
f32e7e7075 fix-races. 2022-02-14 17:41:47 +00:00
Miroslav Šedivý
89ba775a71 add pprof. 2022-02-12 20:22:50 +01:00
Miroslav Šedivý
d068698836 update logging. 2022-02-12 18:55:56 +01:00
Miroslav Šedivý
55a2b14aea webrtc implement signal close. 2022-02-12 18:46:00 +01:00
Miroslav Šedivý
d20fa071e7 register negotiation event after initial offer. 2022-02-10 23:39:52 +01:00
Miroslav Šedivý
369d8f3ccf peer webrtc connection check. 2022-02-10 00:12:30 +01:00
Miroslav Šedivý
924be20505 WebRTC TCP and UDP mux. 2022-02-09 20:45:03 +00:00
Miroslav Šedivý
c2cf9277dc emit /recevie samples on demand. 2022-01-22 17:58:05 +01:00
Miroslav Šedivý
26ab7fa12d add control cut. 2022-01-30 17:53:22 +01:00
Miroslav Šedivý
e8c7ab421a control actions with requests. 2022-01-30 17:52:50 +01:00
Miroslav Šedivý
f6eb8d0315 ws handler simplify logging. 2022-01-30 17:47:28 +01:00
Miroslav Šedivý
fcc85aa9d6 desktop control websocket. 2022-01-30 01:25:04 +01:00
Miroslav Šedivý
0d6335ebcd fileChooserDialog use keypress. 2022-01-30 01:23:05 +01:00
Miroslav Šedivý
b261217cbe add KeyPress func. 2022-01-30 01:22:07 +01:00