Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FreeRDP/freerdp.github.io.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Miklautz <bernhard.miklautz@thincast.com>2019-02-20 15:34:12 +0300
committerBernhard Miklautz <bernhard.miklautz@thincast.com>2019-02-20 15:34:12 +0300
commite9fbb0cc1ad3ec3bd9064b2f85dbd9c59f6ed5fd (patch)
treeaf3bf1dd62054769c7cfba6616da760cac771931
parentb922f43cca97e81eb4ee68e71c1bca41fc919890 (diff)
new [hi series]: Thincast workstation
-rw-r--r--_data/authors.yml5
-rw-r--r--_posts/2019-02-20-hi-thincast-workstation.md66
-rw-r--r--assets/tcw/tcw_icon.pngbin0 -> 2503 bytes
-rw-r--r--assets/tcw/tcw_screenshot.pngbin0 -> 515626 bytes
4 files changed, 71 insertions, 0 deletions
diff --git a/_data/authors.yml b/_data/authors.yml
index 7279dda..05541a4 100644
--- a/_data/authors.yml
+++ b/_data/authors.yml
@@ -22,3 +22,8 @@ felixdeimel:
display_name: Felix Deimel
email: felix@lemonmojo.com
github: lemonmojo
+mf:
+ display_name: Martin Fleisz
+ email: martin.fleisz@thincast.com
+ github: mfleisz
+ web: https://www.thincast.com
diff --git a/_posts/2019-02-20-hi-thincast-workstation.md b/_posts/2019-02-20-hi-thincast-workstation.md
new file mode 100644
index 0000000..8524aa0
--- /dev/null
+++ b/_posts/2019-02-20-hi-thincast-workstation.md
@@ -0,0 +1,66 @@
+---
+layout: posts
+title: Hi! - The Thincast Workstation
+date: 2019-02-20
+author: mf
+---
+![tcw-icon](/assets/tcw/tcw_icon.png){:height="15%" width="15%"}
+
+# Thincast Workstation - Virtual Desktop Streaming built around FreeRDP
+In April 2018, Thincast released the first public Beta of Thincast Workstation, a new workstation hypervisor based on Oracle's VirtualBox.
+We use FreeRDP's server implementation to replace VirtualBox's VRDP extension which is only available with the Oracle VM VirtualBox Extension Pack.
+Together with our own powerful 3D graphics virtualization inside the guest we provide a smooth and rich user experience, no matter from where you are accessing your virtual machines.
+
+But now let's take a closer look at where and how FreeRDP comes into play in our product.
+
+# FreeRDP meets virtualization
+Our RDP server resides in a separate, platform independent library that we call "virtual server". One of the tasks of this library is to serve as a bridge between VirtualBox's
+remote desktop extension (VRDE) API and FreeRDP. It provides a full featured RDP server, including clipboard and sound redirection, user management as well as RemoteFX and H.264
+streaming. The great thing here is that thanks to FreeRDP, all the protocol related work has already been done for us. We don't have to worry about connection management, packet
+parsing or data marshalling. Our library just hooks the various callbacks that the FreeRDP API provides (i.e. handling mouse/keyboard input) and passes them into VirtualBox's VRDE.
+
+On the other hand our virtual server library receives notifications from VirtualBox i.e. when the display buffer is updated. Using FreeRDP we can easily forward all these
+updates to one, or multiple RDP clients connected to our server. Because RDP is a standardized protocol, the users are able to use any RDP compatible client to connect to their
+virtual machines. On top of that, FreeRDP gives us access to the latest desktop streaming extensions of the RDP protocol like RemoteFX and H.264 remoting.
+
+Thanks to WinPR it was an easy task for us to implement the virtual server library platform independent. Threading, synchronization or file access is all done using the Win32
+API. Platform specific code parts were reduced to just a handful of lines i.e. for user management. This allows us to have a single code base that we can reuse on multiple
+platforms by just linking to WinPR on non-Windows systems.
+
+# Streaming the Virtual Desktop
+With H.264 desktop streaming, introduced in RDP 10, we now also have new possibilities to transfer the desktop content to the user. We have developed a special load-balancing
+algorithm that adjusts image quality during streaming, based on current network characteristics. FreeRDP's network characteristics detection (which is part of the RDP core
+specification) provides us with all the necessary information about the connection's latency and bandwidth. Depending on these parameters we dynamically increase or decrease the
+quality level of the H.264 encoder. An implementation of the software H.264 encoder backend, using OpenH264, is also part of the FreeRDP library.
+
+# Performance matters
+As explained earlier, Thincast Workstation provides virtual graphics hardware to the guest that exposes full Direct3D11 support. This means all graphical operations in the guest
+OS are handled and accelerated by the host GPU. As we want to achieve the best performance possible, it would be a pity to do the H.264 encoding of our virtual desktop in
+software. Luckily, thanks to FreeRDP's modular architecture, we were able to plug-in our own hardware encoders and completely offload this work from the CPU. Because every vendor
+has its own multimedia framework we implemented encoders for all major GPU producers including NVidia, AMD and Intel.
+
+![tcw-screenshot](/assets/tcw/tcw_screenshot.png){:height="95%" width="95%"}
+Screenshot: Remote session to a virtual machine running UL's 3DMark benchmark.
+
+# Thincast Viewer - 3D Remoting with FreeRDP
+Thincast Workstation comes with its own FreeRDP based client called Thincast Viewer. The Viewer is part of the Thincast Client package and offers some advantages over other RDP
+clients like Microsoft's Windows client mstsc. The first advantage it offers is an improved performance mode for connections to local virtual machines. In this mode graphical
+updates are not streamed over RDP but directly fetched from the GPU. Thincast Viewer also provides various control options like starting, pausing or shutting down the virtual
+machine. These features are implemented using a custom virtual channel that we added to our FreeRDP library. Remote connections to a virtual machine using H.264 desktop streaming
+will be decoded on the client side using hardware support. All current GPUs offer hardware H.264 decoding support and especially mobile users will greatly benefit from the
+significantly lower CPU utilization. Again we simply replaced FreeRDP's default software decoder with our own hardware implementation, without modifying anything in the library
+itself. And last but not least, Thincast Viewer is available on Windows, Linux and macOS.
+
+# Future Development
+What is coming to Thincast Workstation in the future? We are thinking about adding some kind of gateway service that serves as a central access point to all virtual machines.
+Currently each VM listens on its own port for incoming connections which makes management and administration a bit troublesome.
+
+We also keep an eye out for further extensions or changes to the RDP protocol. For instance newer video codecs, i.e. H.265 or AOMedia Video 1 (a.k.a AV1), might become interesting for
+desktop streaming in the future.
+
+Apart from these RDP-related improvements we also want to improve the remaining parts of Thincast Workstation. Our current Beta for instance already contains virtual graphics
+hardware that offers support for Direct3D 12. The implementation is already close to completion but still has some known issues. We have also added Vulkan to our to-do list but
+work on this topic is just in its beginnings.
+
+If you want to know more about our products, give them a try or you can just keep in touch by signing up for our newsletter on our [website](https://thincast.com)!
+
diff --git a/assets/tcw/tcw_icon.png b/assets/tcw/tcw_icon.png
new file mode 100644
index 0000000..3fc6d8c
--- /dev/null
+++ b/assets/tcw/tcw_icon.png
Binary files differ
diff --git a/assets/tcw/tcw_screenshot.png b/assets/tcw/tcw_screenshot.png
new file mode 100644
index 0000000..7bac043
--- /dev/null
+++ b/assets/tcw/tcw_screenshot.png
Binary files differ