Commit Graph

117 Commits

Author SHA1 Message Date
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ý
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ý
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ý
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ý
3cd59b9f30 rename module name from gitlab to github. 2022-07-14 22:10:41 +02:00
Miroslav Šedivý
e37f5c13ca fix bug. 2022-07-04 18:03:35 +02:00
Miroslav Šedivý
8e80ef2c69 streamsrc mutex. 2022-06-25 23:53:19 +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ý
6deaa64884 capture metrics. 2022-06-15 00:23:16 +02: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ý
f32e7e7075 fix-races. 2022-02-14 17:41:47 +00:00
Miroslav Šedivý
d068698836 update logging. 2022-02-12 18:55:56 +01:00
Miroslav Šedivý
c2cf9277dc emit /recevie samples on demand. 2022-01-22 17:58:05 +01:00
Miroslav Šedivý
8b6a2ed6d6 add webcam resolution + to config. 2022-01-08 23:53:45 +01:00
Miroslav Šedivý
6b14e01415 add media to capture config. 2021-12-09 23:22:24 +01:00
Miroslav Šedivý
b653856994 fix v4l2sink sync. 2021-12-05 22:25:35 +01:00
Miroslav Šedivý
6431f63da7 v4l2 drop-allocation. 2021-12-05 22:11:52 +01:00
Miroslav Šedivý
9a6eb942a4 keep appsrc / appsink in ctx. 2021-12-05 22:06:42 +01:00
Miroslav Šedivý
8de5cb2f4a fix gst log. 2021-12-05 21:33:30 +01:00
Miroslav Šedivý
f9fe303b50 gst destroy remove. 2021-12-05 21:31:40 +01:00
Miroslav Šedivý
b932e94f77 gst refactor to use ctx. 2021-12-05 18:16:26 +01:00
Miroslav Šedivý
7c3a24a613 add zerolog to gst. 2021-12-05 17:52:25 +01:00
Miroslav Šedivý
09cb1e9c6a webcam add videoconvert. 2021-12-05 16:35:04 +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
Miroslav Šedivý
0a94191a5f rename to StreamSink. 2021-12-01 20:30:18 +01:00
Miroslav Šedivý
065a7a2e84 gst minor changes. 2021-12-01 19:55:57 +01:00
Miroslav Šedivý
7bc9a40677 gst push function. 2021-11-28 22:37:17 +01:00
Miroslav Šedivý
710d0c9cd0 gst extract appsink. 2021-11-28 22:19:06 +01:00
Miroslav Šedivý
e45bd7098f replace chan struct{}. 2021-10-04 14:40:20 +02:00
Miroslav Šedivý
8960fc2371 MoveListenerTo ensure atomic execution. 2021-10-01 14:41:21 +02:00
Miroslav Šedivý
27cb473ef9 stream implement MoveListenerTo. 2021-10-01 13:46:10 +02:00
Miroslav Šedivý
c9c8cc67ca refactor broadcast pipeline. 2021-09-30 20:06:43 +02:00
Miroslav Šedivý
4debddf27d remove leftover variable from capture manager. 2021-09-30 20:03:30 +02:00
Miroslav Šedivý
550084e195 refactor screencast pipeline. 2021-09-30 20:01:26 +02:00
Miroslav Šedivý
325af8fc5a RemoveListener add dispatcher. 2021-09-29 01:03:39 +02:00
Miroslav Šedivý
77d2ef9aaf stream listener use channel dispatcher. 2021-09-29 00:22:51 +02:00
Miroslav Šedivý
18fbdb2ff8 stream listener count <0 handling. 2021-09-29 00:21:53 +02:00
Miroslav Šedivý
5bb2da2732 stream fix listener counts. 2021-09-27 01:17:25 +02:00
Miroslav Šedivý
9d4d5766ef webrtc refactor peer track. 2021-09-27 00:50:49 +02:00