Hi,

I've recently been exploring the images stored in Guacamole's recording
files, particularly those sent to the client as base64. By slightly
modifying the guacenc source code, I was able to save all the images to
disk and analyze the screen changes they represent. This has helped me
understand how screen updates are handled and recorded.

While reviewing the source code, I was curious to know whether Guacamole
simply accepts the image stream from the underlying FreeRDP library and
translates it directly into the Guacamole protocol, or if it performs
additional optimizations—such as identifying redundant or duplicate regions
and replacing them with copy or move instructions or techniques like bitmap
caching, etc.—to minimize recording size and improve streaming efficiency.

My ultimate goal is to fully understand Guacamole’s core architecture and
design a C#-based streaming solution that transmits dirty rectangles from a
target machine to any connected client.

This is my first experience diving into such a large-scale open-source
project, and I must say I’m very impressed by how clean and well-structured
Guacamole’s C code is. I’m really excited to continue learning from it.

This thread will really help the future beginners to be able to understand
the behaviour and techniques used by guacamole that makes it so much more
efficient and a light-weight clientless streaming solution.

Best regards,
Palaash Jain

Reply via email to