Commit Graph

151 Commits (6d8645d6e97658571f8423081f331f39957d95de)

Author SHA1 Message Date
Andri Yngvason adef210252 fb-pool: Add setter for fb allocator 2022-10-29 18:40:02 +00:00
Philipp Zabel affd7f3f6d Allow to query client-side cursor support
Add a function nvnc_client_supports_cursor() to enable the API user to
make an informed decision whether nvnc_set_cursor() can be expected to
make the client draw the cursor, or whether it has to be rendered into
the framebuffer.
2022-07-29 08:37:29 +00:00
Andri Yngvason d18cc4fc57 Add constants for left and right scroll 2022-07-28 20:13:48 +00:00
Andri Yngvason b9a5b9a3f1 h264: Set quality according to client's wishes 2022-07-10 13:53:32 +00:00
Andri Yngvason 528eac51a3 Fix jpeg quality setting
The encoding identifiers are supposed to be interpreted as a range. I
interpreted the upper and lower limits as two discrete quality settings
instead, which is wrong.
2022-07-10 12:41:20 +00:00
Andri Yngvason 362918a8cf Integrate libav into logging framework 2022-07-09 17:15:35 +00:00
Andri Yngvason ad4a834cfc Use new logging system 2022-06-25 16:15:32 +00:00
Andri Yngvason 45da0fc157 Add simple logging system 2022-06-25 16:15:32 +00:00
Andri Yngvason 9285594e9d Call encoder.on_done in a function 2022-06-11 11:44:51 +00:00
Andri Yngvason bab78857e1 resampler: Extract function: resample_now() 2022-06-11 11:44:51 +00:00
Andri Yngvason 53f88894d5 Add presentation timestamps 2022-04-14 18:10:09 +00:00
Andri Yngvason aca09358ea Add back damage argument to nvnc_set_cursor
It's better to keep feeding buffers to keep buffers in rotation for damage
tracking purposes.
2022-02-21 21:43:41 +00:00
Andri Yngvason 1553c88f5e Add width and height arguments to nvnc_set_cursor 2022-02-19 23:06:15 +00:00
Andri Yngvason c876b91541 pixels: Add function to get rfb pixel format name 2022-02-12 13:15:30 +00:00
Andri Yngvason 0e0fe5b73a pixels: Add function to convert drm format to string 2022-02-12 12:30:12 +00:00
Andri Yngvason 48baf74560 Implement client side cursor rendering 2022-02-06 16:33:46 +00:00
Andri Yngvason 258dccd768 Add a cursor encoder 2022-02-06 16:33:46 +00:00
Andri Yngvason 0cc6be091c pixels: Add function to extract alpha mask 2022-02-06 15:01:33 +00:00
Andri Yngvason c5a5437a9e server: Keep a count of clients that use damage 2021-12-26 13:10:41 +00:00
Andri Yngvason d702939969 encoder: Add impl flags 2021-12-26 13:10:41 +00:00
Andri Yngvason 0a70f7fa6a encoder: Add push/pull encoder interface 2021-12-26 13:10:41 +00:00
Andri Yngvason e1ba4e1085 API: Add nvnc_fb_get_type 2021-12-26 13:10:41 +00:00
Andri Yngvason 1113b6b12a rfb-proto: Add identifier for Open H.264 2021-12-26 13:10:41 +00:00
Andri Yngvason b71598b334 Create h264-encoder 2021-12-26 13:10:41 +00:00
Andri Yngvason 65c0e91c37 Move update header out of encoders 2021-12-12 16:05:29 +00:00
Andri Yngvason 8b2c81c3dd Add offset coordinates to encoders 2021-12-11 21:55:56 +00:00
Andri Yngvason 42b102df0c Remove unused headers 2021-12-11 21:07:41 +00:00
Andri Yngvason a7241658b0 Create encoder abstraction 2021-12-11 21:03:18 +00:00
Andri Yngvason 26ff812ea6 Add damage refinery from wayvnc 2021-09-20 21:40:21 +00:00
Andri Yngvason 943bd33993 resampler: Make resampler object opaque 2021-09-20 21:40:21 +00:00
Andri Yngvason 0d4ab56568 transform-util: Add dimensions transform function 2021-09-19 21:11:54 +00:00
Andri Yngvason 02559a7f7e Re-sample transformed framebuffers 2021-09-19 20:12:30 +00:00
Andri Yngvason 691e835d1b fb: Add transform attribute 2021-09-19 19:56:56 +00:00
Andri Yngvason 784af9fa5d Add transform utility functions from wayvnc 2021-09-19 19:54:59 +00:00
Andri Yngvason dad7312814 pixels: Add fourcc_to_pixman_fmt 2021-09-19 19:54:23 +00:00
Andri Yngvason cf42f76f56 Add gbm_bo nvnc_fb type 2021-09-12 18:51:22 +00:00
Andri Yngvason dad1948e98 Remove nvnc_fb_flags 2021-09-05 00:46:24 +00:00
Andri Yngvason b75eeac03d Add API function for creating nvnc_fb from an pre-allocated buffer 2021-09-05 00:46:24 +00:00
Andri Yngvason 96886e21d5 Add a API function to get the pixel size of nvnc_fb 2021-09-05 00:46:24 +00:00
Andri Yngvason c7dd062498 Add a stride parameter to nvnc_fb 2021-09-05 00:46:24 +00:00
Andri Yngvason e8e4a9469a Remove damage checker
There's a much better one in wayvnc
2021-09-05 00:46:24 +00:00
Andri Yngvason 77d8efcbe3 fb_pool: Return true from resize when dimensions change 2021-09-04 21:21:23 +00:00
Andri Yngvason 1b7b51af44 Add a cleanup callback to nvnc_set_userdata 2021-09-04 21:21:23 +00:00
Andri Yngvason f5b0f508f0 fb: Use special context pointer for release callback 2021-09-04 21:21:23 +00:00
Andri Yngvason f566105ab5 Remove nvnc_set_render_fn 2021-09-04 21:21:23 +00:00
Andri Yngvason 981256d8d5 Add a buffer pool 2021-09-04 21:21:23 +00:00
Andri Yngvason d63feadeab Notify the user when an fb is released 2021-09-04 21:21:23 +00:00
Andri Yngvason 031555c85d fb: Add hold/release logic 2021-09-04 21:21:23 +00:00
Ryan Farley b320723049 Support UNIX sockets
Adds support for UNIX domain sockets with `nvnc_open_unix()` function.
Closes #1.
2021-04-04 20:24:33 +00:00
Andri Yngvason ea98af75de Notify client about qemu key capability 2020-11-29 18:36:48 +00:00
Andri Yngvason dbe35bc3ad Add qemu extended key events 2020-11-29 18:36:48 +00:00
Andri Yngvason efaa2bf265 rfb-proto: Add qemu key event extension 2020-11-29 18:36:48 +00:00
Andri Yngvason e69006fc48 tight: Hold fb and client refs while encoding 2020-09-27 17:17:22 +00:00
Andri Yngvason af38a643d9 tight: Don't block 1 worker while encoding tiles 2020-09-27 12:37:00 +00:00
Andri Yngvason 25a533e22b Add common utilities for encoders 2020-09-26 16:10:25 +00:00
Scott Moreau 81a8ba9d0e server: Handle cut text messages of up to 10MB 2020-09-25 21:47:59 +00:00
Scott Moreau 6d29937e15 server: Add remaining support for simple copy/paste
- Add function to set callback for client_cut_text
- Add server_cut_text structure and function

This in conjunction with wayvnc #66 closes #4.
2020-09-21 21:15:45 +00:00
Andri Yngvason addcc50483 Bake version info into library 2020-07-26 11:43:29 +00:00
Andri Yngvason e1c0923915 stream: Add byte counters 2020-07-26 11:43:29 +00:00
Andri Yngvason 76beec6415 tight: Add method to resize encoder grid 2020-07-19 16:57:44 +00:00
Andri Yngvason a0801f04e4 Implement server-side resizing 2020-07-19 11:54:39 +00:00
Andri Yngvason 497f9adb29 tight: Re-implement with threads 2020-07-11 20:06:45 +00:00
Stefan Agner a37eed4a4a remove fb_lock/unlock
The two functions have been removed from the external header file.
Remove them and the now unnecessary field is_locked.
2020-05-21 17:44:31 +00:00
Andri Yngvason f3e09fd622 Prepare API for multi-display support
These changes are made now to make it possible to add multi-display
support in the future while keeping the public interface stable.
2020-04-12 18:16:19 +00:00
Andri Yngvason 737dd311a0 Remove nvnc_set_dimensions()
This information is now figured out based on the nvnc_fb passed into
nvnc_set_buffer()
2020-04-12 16:08:33 +00:00
Andri Yngvason d12e66b043 raw-encoding: Add copyright notice 2020-04-12 13:18:42 +00:00
Andri Yngvason a616423c49 fb: Add copyright notice 2020-04-12 13:17:54 +00:00
Andri Yngvason 77b866096d Redesign framebuffer update loop
Rendering may now only happen inside the rendering callback. The user is
also allowed to change out the entire buffer in the callback.

The callback is triggered by nvnc_damage_region(), nvnc_damage_whole()
and/or framebuffer update requests.

This fixes #26
2020-04-07 23:35:57 +00:00
Andri Yngvason 8fc5c18b28 Don't show partial frames to new clients 2020-04-04 14:00:03 +00:00
Andri Yngvason f45f90ed9b nvnc_fb: Add a mechanism for signaling that a frame is in use 2020-04-04 12:33:18 +00:00
Andri Yngvason b44d1a1f58 Replace miniz with system provided zlib
miniz is simply broken, so I can't use it.
2020-04-03 22:39:55 +00:00
Andri Yngvason 25626a9048 tight: Implement quality control 2020-04-03 20:09:26 +00:00
Andri Yngvason 17e0d6036f tight: Implement bare minimum "basic" encoding 2020-04-03 00:18:54 +00:00
Andri Yngvason cfb2abfc58 tight: Prepare for "basic" encoding method 2020-04-02 21:52:04 +00:00
Andri Yngvason dc70f2b409 Add dtrace probe infrastructure 2020-04-01 22:49:58 +00:00
Andri Yngvason 76e721c4cd Replace libuv with aml 2020-03-21 16:59:10 +00:00
Andri Yngvason 992b4445ed tight: Add copyright notice 2020-02-09 12:03:14 +00:00
Andri Yngvason 61efca48f0 damage: Increment/decrement reference count before/after check
This is prudent. The user might throw away these buffers before the
damage check finishes.
2020-01-29 21:33:13 +00:00
Andri Yngvason c29e747ecf bsd queue: Remove #include <sys/cdefs.h>
This fixes #17, failing compilation with musl
2020-01-29 19:59:14 +00:00
Andri Yngvason fef9ca1d7c stream: Change api for stream_write 2020-01-25 15:46:52 +00:00
Andri Yngvason caf9fe0130 Remove unused code 2020-01-25 15:39:23 +00:00
Andri Yngvason 19e4e42036 Implement VeNCrypt with x509 plain authentication 2020-01-25 15:35:14 +00:00
Andri Yngvason 113f262115 Add some debug printout macros 2020-01-25 15:33:36 +00:00
Andri Yngvason 2f99659077 Create a network stream object with TLS support 2020-01-25 15:33:36 +00:00
Andri Yngvason f8d53635e4 Create a reference counted buffer 2020-01-25 15:29:25 +00:00
Andri Yngvason f9d1effb0d Add BSD queue 2020-01-25 15:22:01 +00:00
Andri Yngvason a387b6c589 Add missing copyright notice to header file 2020-01-24 22:30:07 +00:00
Andri Yngvason 4ebd60b8cc pixels: Delete useless code 2020-01-24 22:29:29 +00:00
Andri Yngvason ee3f2fefff server: Extract pixel format functions into pixels.c 2019-12-30 20:13:40 +00:00
Andri Yngvason a0376f2fd4 Pass entire client structure to tight encoder 2019-12-30 17:48:22 +00:00
Andri Yngvason d9f80ad196 server: Extract structure definitions into header 2019-12-30 17:22:19 +00:00
Andri Yngvason 8cd33d8a07 Add JPEG Tight encoding 2019-12-30 10:00:15 +00:00
Andri Yngvason 4ebf4623cb Fix read buffer and drop older outgoing frames 2019-12-23 09:33:29 +00:00
Andri Yngvason 80b1f3cb4c Re-format using clang-format 2019-10-20 22:13:51 +00:00
Andri Yngvason e9f200f4cc Excise y-inversion code 2019-10-08 17:58:35 +00:00
Andri Yngvason 4beaf88a35 Turn around frame update model
Keeping a framebuffer for clients to request from seems to be a better fit for
the VNC standard.
2019-10-07 20:29:12 +00:00
Andri Yngvason 3196a7a46b Make nvnc_fb opaque 2019-10-07 17:39:54 +00:00
Andri Yngvason 40f16fe63b Add raw encoding
It's useful for debugging
2019-09-19 18:14:26 +00:00
Andri Yngvason 7d4af0e741 Encode on worker threads 2019-09-15 21:53:10 +00:00
Andri Yngvason 70b2448c6e Create utility function for checking buffer damage 2019-09-15 21:53:10 +00:00