DisplayCast

High performance screen sharing for intranets.

DisplayCast targets screen sharing scenarios in which network and computation resources are abundant. We envision a collaboration scenario in which many users share their screens with many other users in an intranet setting. 

Screen sharing is an important collaboration feature. As a screencast, it is used to capture and archive screen contents for educational and training purposes. Real time screen sharing is widely used for remote logging, debugging and screen sharing. Some of the popular screen sharing applications include VNC (and variants such as Apple Remote Desktop), Microsoft Remote Desktop, Google Chrome Desktop and Cisco WebEx.

Historically, real time screen sharing systems were designed to operate over constrained networks. This design choice does not lend itself to scenarios in which such bottlenecks are irrelevant. DisplayCast targets intranet scenarios in which the wired/wireless networks and computation resources are abundant. We envision a collaboration scenario in which many users share their screens with many other users in an intranet setting. Our primary design goal is to faithfully reproduce the screen contents.

  • Users are not required to reconfigure their systems (e.g., lower screen resolution) in order to make them suitable for screen sharing.
  • Users can use any application and expect good performance.

We achieve many of these goals. Some remain unachievable because of processor limitations. For example, capturing, compressing and sharing full screen HD movies remain beyond reach even with the state of the art laptop processors.

DisplayCast system currently includes three components: Streamer, Player and Archiver.

  • Streamer: The streamer is the source component. It can either share the entire screen or a portion (using a configuration MASK region). It interacts with users using a task-bar interface (a windowed interface can be compiled using appropriate compile time flags).
  • Player: The player is the real time receiver. The created windows can be dragger around using the GUI. It can also be remotely controlled.
  • Archiver: This component captures a stream into a H.264 movie.

We also provide a HTTP/REST service that runs under Windows 7. This service listens to the various Zeroconf advertisements and provides a synchronous means of controlling DisplayCast.

Technical Info

  • Screen capture: On Mac OS X, we used the CGRegisterScreenRefreshCallback() call to receive asynchronous notifications regarding screen updates. On Windows 7, we usedthe DemoForge mirror driver to collect pixmap updates. This driver implements the Windows mirroring function. We poll the driver every 16 msec to collect stored updates. We then memory mapped the mirror driver’s framebuffer copy to access the pixels that correspond to each pixmap update.
  • Bitmap transformation for better Zlib compression: Zlib does not incorporate any inter-update redundancy. We incorporate them by first transforming each update pixmap. We separated pixmaps into a similarity byte-map and pixel data. We use 0x00 and 0xFF to represent similar and dissimilar pixels in the byte-map, respectively. The pixel data is a sparse array that stores the 24 bit RGB values of dissimilar pixels.
  • Naming: We use Apple Bonjour for naming the various components. Each component chooses a 8 character GUID to identify itself. It also provides a user friendly (and configurable) name that is displayed to the user to identify each component. By default, we use Bonjour local name resolution (within the .local domain) using link-local multicast. DisplayCast can be recompiled to use wide-area DNS
  • Location management: Like many intranet applications, DisplayCast could benefit from fine grain location information. For example, an user walking into a conference room might want to project their laptop to the projector (without explicitly choosing from the many Players available to her). Streamers currently use Bluetooth to locate nearby Players. All Players disclose their Bluetooth ID through Bonjour. The Streamers search for nearby Bluetooth devices. Once found, they match the observed Bluetooth ID with the Bonjour advertised Players to identify nearby Players. More accurate location management is an active area of research.

 

Related Publications

2012
Publication Details
  • ACM Multimedia 2012
  • Oct 29, 2012

Abstract

Close
Faithful sharing of screen contents is an important collaboration feature. Prior systems were designed to operate over constrained networks. They performed poorly even without such bottlenecks. To build a high performance screen sharing system, we empirically analyzed screen contents for a variety of scenarios. We showed that screen updates were sporadic with long periods of inactivity. When active, screens were updated at far higher rates than was supported by earlier systems. The mismatch was pronounced for interactive scenarios. Even during active screen updates, the number of updated pixels were frequently small. We showed that crucial information can be lost if individual updates were merged. When the available system resources could not support high capture rates, we showed ways in which updates can be effectively collapsed. We showed that Zlib lossless compression performed poorly for screen updates. By analyzing the screen pixels, we developed a practical transformation that significantly improved compression rates. Our system captured 240 updates per second while only using 4.6 Mbps for interactive scenarios. Still, while playing movies in fullscreen mode, our approach could not achieve higher capture rates than prior systems; the CPU remains the bottleneck. A system that incorporates our findings is deployed within the lab.
Publication Details
  • ACM Multimedia '12
  • Oct 29, 2012

Abstract

Close
DisplayCast is a many to many screen sharing system that is targeted towards Intranet scenarios. The capture software runs on all computers whose screens need to be shared. It uses an application agnostic screen capture mechanism that creates a sequence of pixmap images of the screen updates. It transforms these pixmaps to vastly improve the lossless Zlib compression performance. These algorithms were developed after an extensive analysis of typical screen contents. DisplayCast shares the processor and network resources required for screen capture, compression and transmission with host applications whose output needs to be shared. It balances the need for high performance screen capture with reducing its resource interference with user applications. DisplayCast uses Zeroconf for naming and asynchronous location. It provides support for Cisco WiFi and Bluetooth based localization. It also includes a HTTP/REST based controller for remote session initiation and control. DisplayCast supports screen capture and playback in computers running Windows 7 and Mac OS X operating systems. Remote screens can be archived into a H.264 encoded movie on a Mac. They can also be played back in real time on Apple iPhones and iPads. The software is released under a New BSD license.