Commit Graph

77 Commits

Author SHA1 Message Date
fc3b6f2e21 OnProfileChanged add new & old profile. 2024-06-09 18:02:01 +02:00
0e8108e9a4 add session delete and disconnect to API. 2024-05-09 10:28:58 +02:00
416faa3df4 add session to host change. 2024-05-06 23:47:13 +02:00
57ffca0bed add session to settings change. 2024-05-05 00:03:32 +02:00
b90eb87c22 unify types.ScreenSize and add ID to screen size update. 2024-05-03 22:40:56 +02:00
0f45aa3f19 implement control protection. 2024-04-21 20:10:16 +02:00
a61eade929 add LockedLogins to settings. 2024-04-20 14:27:15 +02:00
00c7e6dfb2 Move X11 error handler registration to before screen sets (#62)
If X11 throws an error during screen config get/set, the default error
handler at the time will be one which causes a program exit. This
splits the error handler registration in xevent into its own call,
allowing us to register our error handler earlier on. This results in
the safe error handling logic actually being called instead of a full
program exit.
2024-03-27 21:38:33 +01:00
5a16143cfe fix mode info memory leak. 2024-02-20 18:15:22 +01:00
3dbcc41795 upload drop to config. 2023-11-24 10:44:24 +01:00
b40c0778c8 file chooser dialog diabled by default. 2023-11-24 10:39:09 +01:00
501280f8aa server proxy, router opts and optional CORS. 2023-11-19 14:35:19 +01:00
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
5ceef394ca maintain backward compatibility with g_memdup. 2023-09-06 19:12:41 +02:00
05403cc0c6 Upgrade to bookworm (#54)
* upgrade to bookworm.

* g_memdup is deprecated: Use g_memdup2 instead.

* upgrade nvidia dockerfile.

* revert devcontainer.
2023-09-05 23:01:18 +02:00
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
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
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
848556adbd add time stats to state. 2023-05-15 16:47:59 +02:00
cf4e0666fe add locked controls to settings. 2023-05-15 16:47:28 +02:00
a75ae187b4 add plugin scope to settings. 2023-04-28 22:53:41 +02:00
c70c8217de add unminimize. 2023-04-24 22:19:48 +02:00
466185fc24 fixed by using XFlush. 2023-04-24 22:19:48 +02:00
47a3f6d6fb twice toggle maximizes for fullscreen. 2023-04-24 22:19:48 +02:00
3ef4c5ce0f use DefaultRootWindow. 2023-04-24 22:19:48 +02:00
0ea1c2870f Refactor websocket session sync (#44)
* refactor websocket peer and comment functions.

* update comments.

* add DestroyWebSocketPeer.
2023-04-23 11:23:20 +02:00
728e27da34 minor changes, moving things around. 2023-04-18 12:07:49 +02:00
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
09508638ce session save & load from a file. (#38) 2023-03-27 18:33:51 +02:00
9936a04fea add passive estimator & REMB back. (#35) 2023-03-13 17:55:52 +01:00
0de8ffc773 update screen rate set. (#34) 2023-03-13 17:55:41 +01:00
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
977662affe Upgrade to go 1.20 (#30)
* upgrade dependencies.

* videoscale element to nearest neighbor.
2023-02-26 21:57:02 +01:00
ccaaacac7c do not round height to 8. 2023-02-20 19:49:39 +01:00
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
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
bfabee12e2 gst emit video keyframe on demand. (#27) 2023-02-07 21:43:14 +01:00
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
ba0dea8022 switch to xkb. 2023-01-16 13:54:17 +01:00
eac9796c47 no free keycodes, pick last two keycodes anyway. 2023-01-16 13:54:17 +01:00
67cc23fd53 circular list for free keycodes. 2023-01-16 13:54:17 +01:00
1fb5ae43dd allow multiple users to be set in object provider. 2023-01-13 12:01:58 +01:00
e5c84469ce MemberProvider: add variable names. 2023-01-13 12:01:58 +01:00
b793e5b377 add stereo to opus codec. 2023-01-12 20:34:09 +01:00
2cb64d15a0 send heartbeat with ping. (#16) 2022-11-11 17:58:54 +01:00
d894e888b8 fix generic plugin error message. 2022-10-25 22:46:21 +02:00
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
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
095f9fe8ee gst as interface. (#11) 2022-10-13 19:57:31 +02:00
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