Releases: any1/neatvnc
v0.5.3
v0.5.2
v0.5.1
v0.5.0
Highlights
- H.264 Encoding
- UNIX Sockets
- New framebuffer submission API
- Automatic buffer transforms
- Client side cursor rendering
- Now accepts DMA-BUFs
- Presentation time stamps
- New internal encoder abstraction layer
Shortlog
Andri Yngvason (92):
Add libdrm include path to cflags
Display Patreon account on GitHub page
fb: Add hold/release logic
Notify the user when an fb is released
Add a buffer pool
Remove nvnc_set_render_fn
fb: Use special context pointer for release callback
fb_pool: Fix reference counting error
server: process fb update requests in fb update request message handler
Add a cleanup callback to nvnc_set_userdata
fb_pool: Return true from resize when dimensions change
display & fb_pool: Clean up memory leaks
examples: draw: Use new buffer submission API
Remove damage checker
.gitignore: add .vimrc and sandbox
Add a stride parameter to nvnc_fb
Add a API function to get the pixel size of nvnc_fb
Add API function for creating nvnc_fb from an pre-allocated buffer
Remove nvnc_fb_flags
fb: Fix buffer allocation
Add gbm_bo nvnc_fb type
pixels: Add fourcc_to_pixman_fmt
Add transform utility functions from wayvnc
fb: Add transform attribute
Re-sample transformed framebuffers
transform-util: Add dimensions transform function
resampler: Transform output buffer dimensions based on input transform
resampler: Make resampler object opaque
resampler: Track buffer damage
Add damage refinery from wayvnc
fb: Fix mapped gbm buffer stride
fb: Unmap released fbs
display: Clean up transformed damage region
Create encoder abstraction
Remove unused headers
Add offset coordinates to encoders
Move update header out of encoders
Create h264-encoder
rfb-proto: Add identifier for Open H.264
Create an Open h.264 encoder
API: Add nvnc_fb_get_type
encoder: Add push/pull encoder interface
Plug open h264
encoder: Add impl flags
open-h264: Set "ignores-damage" flag
server: Keep a count of clients that use damage
display: Only run damage refinery when it's needed
h264-encoder: Automatically find a render node
enc-util: Round up division in calc_bytes_per_cpixel
pixels: Add 10-bits-per-colour formats
h264-encoder: Add 30 bit color depth formats
pixels: Add function to extract alpha mask
Add a cursor encoder
Implement client side cursor rendering
examples: draw: Add a client-side cursor
pixels: Handle different endianness for alpha mask
cursor: Fix alpha mask stride
Add some unit tests for pixel conversions
test: pixels: Add a unit test for pixel32_to_cpixel
pixels: Add function to convert drm format to string
pixels: Add function to get rfb pixel format name
examples: draw: Handle different endianness for cursor colour
cursor: Map cursor buffers before access
cursor: Use the right scan-line length when width != stride
Add width and height arguments to nvnc_set_cursor
Implement hiding cursors
Add back damage argument to nvnc_set_cursor
h264-encoder: Fix copy-pasta
server: Decrement n_pending_requests after dispathing encoding job
h264-encoder: Fully flush output packets
Add presentation timestamps
resampler: Extract function: resample_now()
cursor: Handle rotated cursors
Call encoder.on_done in a function
Add simple logging system
Use new logging system
server: Promote some log levels
open-h264: Convert to normal encoder
display: Add dtrace probes
resampler: Add dtrace probes
open-h264: Add dtrace probes
server: Add dtrace probes with pts
open-h264: unref result when finished with it
h264-encoder: Call on_packet_ready last in on_work_done
server: Reset encoder callback on frame done
h264-encoder: Clean up current_packet in destroy
server: Log encoder choices
server: Turn off Nagle's algorithm
h264-encoder: Add dtrace probes
meson_options: Enable h264 by default
Integrate libav into logging framework
h264-encoder: Set quality
Harm te Hennepe (1):
Don't call gbm symbols when they are not available
Jan Beich (1):
server: consistently use builtin byteswap after 53f88894d52a
Marco Felsch (1):
meson: Fix host leakage
Ryan Farley (1):
Support UNIX sockets
v0.4.0
This release adds support for the qemu extended key event. When this is also supported by the client, key codes will be used instead of symbols which eliminates the need for reverse key code lookup on the server-side.
Aisha Tammy (1):
add systemtap option for sys/std.h
Andri Yngvason (6):
rfb-proto: Add qemu key event extension
Add qemu extended key events
Notify client about qemu key capability
Decrement pending requests when sending pseudo frames
Translate XT keycodes to linux keycodes
Release v0.4.0
v0.3.2
This release fixes a bug with tight encoding reported by Jeroen Hofstee (@jhofstee) who also tracked down the cause of the bug. The issue was that if multiple clients connected to the server and requested tight encoding, frame updates to the clients stalled because each client would hold onto one worker thread while encoding took place.
Andri Yngvason (10):
Add common utilities for encoders
tight: Use encoder utils
zrle: Use encoder utils
raw-encoder: Use encder utils
server: Refactor schedule_client_update_fb
server: Move pixel format conversion out of do_client_update_fb
server: Extract finish_fb_update() from on_client_update_fb_done()
tight: Don't block 1 worker while encoding tiles
tight: Hold fb and client refs while encoding
Release v0.3.2
v0.3.0: server: Fix possible crash on fragmented packet messages
This release fixes a crash due to incorrect handling of fragmented packets and adds copy & paste support.
Scott Moreau (2):
server: Add remaining support for simple copy/paste
server: Fix possible crash on fragmented packet messages
v0.2.0
New features since v0.1.0:
- Tight encoding is no longer experimental and also more complete.
- The encoder employs multiple CPU cores, both for lossy and lossless
compression, which makes it considerably faster than ZRLE, even with
lossless compression. - Supports both lossy (JPEG) and lossless (DEFLATE) compression.
- Allows the client to choose the JPEG "quality" level.
- Allows the client to choose whether to enable lossy compression or not.
- The encoder employs multiple CPU cores, both for lossy and lossless
- Service-side resizing: the server can notify the client and resize buffers
when a different display mode is set. - The API has been prepared for adding multi-display suppport. It has not been
implemented, but the (hopefully) won't have to change when it is. - The library can now be linked statically.
- Version info is baked into the library, so applications linking to neatvnc
can report the version to the user. - The server can now looks up the address to which to bind using
getaddrinfo
I will try to keep the API & ABI stable from now on, but it depends on adoption
rate. If nothing else than wayvnc uses this library, then there is no point in
keeping it stable. Let me know if you want the API to be kept stable.
Andri Yngvason (59):
.gitignore: Add subprojects
Replace libuv with aml
examples: Add signal handler and clean up resources
README: Replace libuv with aml
Spawn as many workers as there are CPU cores
Merge pull request #24 from johnae/master
stream: Close if read() == 0
Make sure framebuffers are properly aligned
Add dtrace probe infrastructure
Add dtrace probes for framebuffer updates
tight: Add some error handling
tight: Limit rectangle max width according to spec
tight: Prepare for "basic" encoding method
tight: Implement bare minimum "basic" encoding
tight: Implement quality control
Replace miniz with system provided zlib
tight: Check quality level at start of each frame
Enable tight encoding by default
server: Add dtrace probe for stream_send inside update_fb_done
README: Add zlib to list of runtime dependencies
nvnc_fb: Add a mechanism for signaling that a frame is in use
Don't show partial frames to new clients
Fix turbojpeg dependency
Resolve host names in nvnc_open()
Revert "tight: Limit rectangle max width according to spec"
Enable SO_REUSEADDR again
Redesign framebuffer update loop
examples: draw: Draw a larget dot
tight: Don't drop MSB when encoding rect size
Don't render when a client is still encoding
meson: Let user choose x86_64 SIMD extension for release build
zrle: Replace an assert with return -1
tight: Replace an assert with return -1
fb: Add copyright notice
damage: Add copyright notice
raw-encoding: Add copyright notice
meson: Set -DNDEBUG for all other build types than debug or debugoptimized
Remove nvnc_set_dimensions()
Prepare API for multi-display support
tight: Allow lossy encoding with 16 bpp
meson_options: Set the default SIMD extension to sse2
Build benchmarks again
Fix version error handling
Use raw encoding by default if no encoding has been selected
Align with neatvnc API changes
Clean up dispatch hander on exit
tight: Re-implement with threads
Always enable tight, encoding but allow disabling lossy tight encoding
server: Assert that a client has a stream open when processing a message
Return failure if display buffer is not set in on_connect
Implement server-side resizing
stream: Ignore events after close instead of aborting
tight: Add method to resize encoder grid
Resize tight encoder on frame resize
stream: Add byte counters
Remove optimisation flags
Bake version info into library
README: Remove text about beta release
examples: Make all functions static
Jan Beich (1):
meson: allow static linking
John Axel Eriksson (1):
Remove libuv header include
Stefan Agner (5):
use static for functions not used outside this compile unit
add warning if a function is not declared
remove fb_lock/unlock
fix below zero message count check
fix build warnings when building without tls