Commit Graph

44 Commits

Author SHA1 Message Date
Miroslav Šedivý
4da7869e70
Add Xorg modifiers (#57)
* implement additional modifiers to xorg.

* xorg modifiers to API.

* update modifiers api & add ws.

* scroll pos rename to delta and add ctrl key.
2023-09-11 16:34:57 +02:00
Miroslav Šedivý
ea5517b270
Xorg input driver (#53)
* add xf86 input driver.

* cleanup.

* rewrite to unix socket PoC.

* add input rebuild.

* lint & docs.

* add input driver struct.

* comments, lint, socket name from config.

* add touch events to webrtc.

* switch to uint32.

* misc update logging & linting,

* fix screen size

* set touchscreen as core pointer.

* add touch to ws control.

* SendCoreEvents.

* extract to own xinput folder.

* add debounce.

* switch pressure to uint8.

* check buffer size.

* send touch events with system init.
2023-08-17 16:14:59 +02:00
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ý
848556adbd add time stats to state. 2023-05-15 16:47:59 +02:00
Miroslav Šedivý
cf4e0666fe add locked controls to settings. 2023-05-15 16:47:28 +02:00
Miroslav Šedivý
a75ae187b4 add plugin scope to settings. 2023-04-28 22:53:41 +02:00
Miroslav Šedivý
0ea1c2870f
Refactor websocket session sync (#44)
* refactor websocket peer and comment functions.

* update comments.

* add DestroyWebSocketPeer.
2023-04-23 11:23:20 +02:00
Miroslav Šedivý
728e27da34 minor changes, moving things around. 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ý
09508638ce
session save & load from a file. (#38) 2023-03-27 18:33:51 +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ý
977662affe
Upgrade to go 1.20 (#30)
* upgrade dependencies.

* videoscale element to nearest neighbor.
2023-02-26 21:57:02 +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ý
1fb5ae43dd allow multiple users to be set in object provider. 2023-01-13 12:01:58 +01:00
Miroslav Šedivý
e5c84469ce MemberProvider: add variable names. 2023-01-13 12:01:58 +01:00
Miroslav Šedivý
b793e5b377 add stereo to opus codec. 2023-01-12 20:34:09 +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ý
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ý
d5863d8b95 set WebRTC video codec H.264 profile-level-id to 42e01f to be compatible with Firefox clients. 2022-09-13 22:21:56 +02:00
Miroslav Šedivý
6d2ba7b640 name caps and encoder. 2022-09-10 23:26:41 +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ý
01b5d61e2b add receiverEstimatedMaximumBitrate. 2022-07-04 00:38:46 +02:00
Miroslav Šedivý
52642dbeb6 add plugins to member profile. 2022-05-08 00:15:36 +02: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ý
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ý
f549171ded opus useinbandfec. 2022-03-24 21:48:51 +01:00
Miroslav Šedivý
8593d2d0fd move shared code to pkg. 2022-03-20 11:43:00 +01:00