Application and Desktop Sharing Omer Boyaci November 1, 2007
Overview Introduction Demo Architecture Challenges Features Conclusion
Application Sharing Models Application specific + Efficient - Participants need application - Application has to be modified Generic - Inefficient (sometimes) + Participants don't need application + All applications are supported
Application Sharing Models Application specific + Efficient - Participants need application - Application has to be modified Generic - Inefficient (sometimes) + Participants don't need application + All applications are supported
Overview Introduction Demo Architecture Challenges Features Conclusion
Application Sharing Sharing an application with multiple users There is only one copy of the application Participants do not need application itself Briefly, participants receive screen updates send keyboard and mouse events Desktop sharing is also supported.
Screenshot
Screenshot (2)
Screenshot (Overlapped Windows) 1 2 4 3
Screenshot (Multicast App. Tool) 1 2 4 3 4
Screenshot (Ultra VNC) 1 2 4 3 4
Screenshot (App & Desk Sharing) 1 2 4
Supported Platforms/OS Windows *nix Mac OS X * is Java based. Server + -+ - * + + +
Overview Introduction Demo Architecture Challenges Features Conclusion
Demo Demo
Overview Introduction Demo Architecture Challenges Features Conclusion
System Architecture /Server Software Architecture
System Architecture /Server Software Architecture Screen Updates
System Architecture /Server Software Architecture Keyboard Mouse Events
(Viewer) Architecture can Connect to server Wait for incoming connections supports TCP UDP (+Multicast)
(Viewer) Architecture receives these commands Open new window Window size changed Pixel update Close window sends BFCP (Binary Floor Control Protocol) commands Keyboard and mouse events
Windows Server Architecture Server Main Thread User space 0 Kernel space X 300,500 Y 200,600 Window coordinates Mirror Driver
Windows Server Architecture Server Main Thread User space Kernel space X 320,340 Y 100,200 X 320,340 Y 100,200 X 320,340 Y 100,200 X 320,340 Y 100,200 2 X 300,500 Y 200,600 Window coordinates Mirror Driver
Windows Server Architecture Server Main Thread User space Kernel space X 320,340 Y 100,200 X 320,340 Y 100,200 X 320,340 Y 100,200 2 X 300,500 Y 200,600 Window coordinates Mirror Driver
Windows Server Architecture X 3 2 0,3 4 0 X 3 2 0,3 4 0 X 3 2 0,3 4 0 Y 4 0 0,5 0 0 Y 4 0 0,5 0 0 Y 4 0 0,5 0 0 t im e s t a m p t i m e s t a m p t im e s t a m p P NG PN G T h r e a d -1 T h r e a d -2 Server Main Thread T h r e a d -3 User space K e rn e l s p a c e X 320,340 Y 400,500 X 4 2 0,4 4 0 Y 2 0 0,6 0 0 X 320,340 Y 450,550 2 W i n d o w coordinates
Overview Introduction Demo Architecture Challenges Features Conclusion
Challenges Different client bandwidths/speeds Late Joiner The effects of packet loss Reliable multicast
Multimedia Support (Movies)
Multimedia Support (Movies) Our system uses to compress and transmit the region updates is lossless and effective for computer generated images but ineffective for real world captures like pictures or movies JPG is more suitable for photographic images However, JPG is lossy and not effective for computer generated images (text, line, shapes,...) Our system should use both
Multimedia Support (Movies) Composite image comparing JPEG and : notice artifacts in JPEG versus solid background.
Multimedia Support ( vs JPG) Image Size Size x 360x150 162K 150 140 130 120 Size 4x 720x300 648K 110 100 90 JPG 80 70 60 50 40 30 20 10 0 1:4 1:20 Size x 1:5 1:30 Size 4x
Multimedia Support ( vs JPG) FPS KB/s 22.5 1100 20 1000 900 17.5 800 15 700 JPG 12.5 JPG 600 500 10 400 7.5 300 5 200 2.5 100 0 0 Size x Size 4x Size x Ethernet (60Mb/s) Size 4x
Multimedia Support ( vs JPG) KB/s FPS 22.5 400 20 350 17.5 300 15 250 JPG 12.5 JPG 200 10 150 7.5 100 5 50 2.5 0 Size x Size 4x 0 Size x Wireless (4Mb/s) Size 4x
/JPG Detection Algorithm -1,0,1 Region> 40,000px? coordinates Size counter YES Time Stamp New Region? YES Create a record & Start Checking NO Continue Checking NO Detected? YES Use Detected Format Region record
Sharing a Movie (Media Player)
Sharing a Movie File Capturing from the Frame Buffer is expensive. Instead Transcode the movie on the fly to JPGs FFmpeg (subproject of mplayer) FFmpeg is a complete solution to record, convert and stream audio and video. It includes libavcodec, the leading audio/video codec library. FFmpeg is developed under Linux, but it can compiled under most operating systems, including Windows. FFmpeg-Java (subproject of FMJ) Java wrapper (JNA: Java Native Access)
Sharing a Movie (Our Method)
Sharing a Movie File Movie File (wmv,mpg,divx) decodenextframe() encodeframetojpg() FFmpeg-Java JPG images Java Streaming Server Java UDP/Multicast Java
Demo Demo Multimedia Support
Challenges Different client bandwidths/speeds Late Joiner The effects of packet loss Reliable multicast
Different Bandwidths/Speeds S e r v e r M a in T h r e a d 3Mbps Thread -3 X 3 2 0,3 4 0 X 3 2 0,3 4 0 Y 4 0 0,5 0 0 Y 4 0 0,5 0 0 ti m e s t a m p t i m e s t a m p PN G Thread -2 X 3 2 0,3 4 0 Y 4 0 0,5 0 0 t im e s t a m p 2Mbps X 3 2 0,3 4 0 X 3 2 0,3 4 0 X 3 2 0,3 4 0 Y 4 0 0,5 0 0 Y 4 0 0,5 0 0 Y 4 0 0,5 0 0 t im e s t a m p t i m e s t a m p t im e s t a m p PN G P NG PN G C lie n t Thread -1 1Mbps
Different Bandwidths/Speeds Possible Solutions Slowest one Average speed Fastest one
Different Bandwidths/Speeds Possible Solutions Slowest one Problem: Penalize everybody except the slowest Average speed Fastest one
Different Bandwidths/Speeds Possible Solutions Slowest one Problem: Penalize everybody except the slowest Average speed Possible solution Fastest one
Different Bandwidths/Speeds Possible Solutions Slowest one Problem: Penalize everybody except the slowest Average speed Possible solution (Can we do better?) Fastest one
Different Bandwidths/Speeds Possible Solutions Slowest one Problem: Penalize everybody except the slowest Average speed Possible solution (Can we do better?) Fastest one The best solution bandwidths are fully utilized
Different Bandwidths/Speeds Thread Main Server 3Mbps Thread -3 X 3 2 0,3 4 0 X 3 2 0,3 4 0 Y 4 0 0,5 0 0 Y 4 0 0,5 0 0 ti m e s t a m p t i m e s t a m p PN G Thread -2 X 3 2 0,3 4 0 Y 4 0 0,5 0 0 t im e s t a m p PN G 2Mbps X 3 2 0,3 4 0 X 3 2 0,3 4 0 X 3 2 0,3 4 0 Y 4 0 0,5 0 0 Y 4 0 0,5 0 0 Y 4 0 0,5 0 0 t im e s t a m p t i m e s t a m p t im e s t a m p PN G P NG PN G Thread -1 1Mbps
Different Bandwidths/Speeds Server Main Thread 2Mbps Thread -2 3Mbps Thread -3 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 timestamp timestamp timestamp timestamp timestamp timestamp Thread -1 1Mbps
Challenges Different client bandwidths/speeds Late Joiner The effects of packet loss Reliable multicast
Late Joiner Force server to generate full screen update
Late Joiner Force server to generate full screen update Problems Misbehaving clients can degrade performance If Join/Leave rate is high, too much burden on server Solution Generate full screen updates if really necessary Otherwise start the new client from last full screen update
Different Bandwidths/Speeds Thread -1 X 320,340 X 320,340 Y 400,500 Y 400,500 timestamp timestamp 1Mbps Server Main Thread 2Mbps Thread -2 3Mbps Thread -3 8Mbps Thread -4
Different Bandwidths/Speeds Thread -1 X 320,340 X 320,340 Y 400,500 Y 400,500 timestamp timestamp 1Mbps Server Main Thread 2Mbps Thread -2 FR I 3Mbps Thread -3 8Mbps Thread -4
Different Bandwidths/Speeds Server Main Thread 2Mbps Thread -2 3Mbps Thread -3 8Mbps Thread -4 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 timestamp timestamp timestamp timestamp timestamp timestamp timestamp Thread -1 1Mbps
Different Bandwidths/Speeds Server Main Thread 2Mbps Thread -2 3Mbps Thread -3 8Mbps Thread -4 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 timestamp timestamp timestamp timestamp timestamp timestamp timestamp Thread -1 1Mbps
Different Bandwidths/Speeds Server Main Thread 2Mbps Thread -2 3Mbps Thread -3 8Mbps Thread -4 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 timestamp timestamp timestamp timestamp timestamp timestamp timestamp timestamp Thread -1 1Mbps
Different Bandwidths/Speeds Server Main Thread 2Mbps Thread -2 3Mbps Thread -3 8Mbps Thread -4 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 timestamp timestamp timestamp timestamp timestamp timestamp timestamp timestamp Thread -1 1Mbps
Different Bandwidths/Speeds Server Main Thread 3Mbps Thread -3 8Mbps Thread -4 2Mbps Thread -5 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 timestamp timestamp timestamp timestamp timestamp timestamp timestamp timestamp Thread -2 2Mbps Thread -1 1Mbps
Different Bandwidths/Speeds Server Main Thread 3Mbps Thread -3 8Mbps Thread -4 2Mbps Thread -5 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 X 320,340 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 Y 400,500 timestamp timestamp timestamp timestamp timestamp timestamp timestamp timestamp Thread -2 2Mbps Thread -1 1Mbps
Challenges Different client bandwidths/speeds Late Joiner The effects of packet loss Reliable multicast
The effects of Packet Loss This problem applies to Multicast UDP The images can be large Regular desktop can be ~900KB ~600 Ethernet packets One packet loss wastes all image
The effects of Packet Loss Solution Small images Around ~1500 bytes Consist of a few scanlines Disadvantages Increased CPU usage (client&server) Lower compression ratio (%20 lower) Advantages One packet loss = no update for a few scanlines
The effects of Packet Loss
Challenges Different client bandwidths/speeds Late Joiner The effects of packet loss Reliable multicast
Reliable Multicast RTP Library stores last N rtp packets s send NACK for lost packets RTP Library resend the requested packets
The effects of Packet Loss
Overview Introduction Demo Architecture Challenges Features Conclusion
Recording s can record the whole/part session Anybody can play these files locally These files can be streamed to receivers via streaming server Streaming server supports multiple receivers Also late joiners
Listening waits for incoming connections It can display windows from multiple user Can be used for RGB cable replacement
Overview Introduction Demo Architecture Challenges Features Conclusion
Conclusion Application sharing allows users to share a single application with multiple participants. Participants don't need the application. It is not specific to a single application. Extra features like recording is added.
Thanks Questions?