Verbesserte Präsenz durch Screensharing für ein Werkzeug zur verteilten Paarprogrammierung (ThesisDPPXIII)

Improved presence through screen sharing for a distributed pair programming tool (Bachelorarbeit)

von Stephan Lau, betreut von Karl Beecher und Stephan Salinger

Antrittsvortrag / Preparation presentation

is here

Ziele

Saubere und schnelle Implementierung von Screensharing in Saros wink

Planung / Approximate timeline

  • registration: 17.11.2009
  • delivery: 9.2.2010
  • ill: 21.12.09 - 8.1.10 (19 days)

  1. Week 1-2 9. - 20.11
    • base architecture and requirements for screensharing
    • start to implement
  2. Week 3-4 23.11 - 4.12
    • start integration in saros
      • UI
      • bytestream via XMPP
    • only passive features first
  3. Week 5-6 7.12 - 18.12
    • additional features
      • active screensharing
  4. Week 7-8 21.12 - 1.1.2010
    • prepare feature for release
    • alternative encoders
    • test/optimize
  5. Week 9-10 4. - 15.1
    • deal with scientific questions, theoretical preparation for thesis
      • evaluate screensharing
        • what has been done?
        • how is screensharing accepted (by saros' users)?
        • how (or does) screensharing improves saros?
        • are there remaining problems?
      • screensharing <→ collaboration awareness
        • how are they related?
        • can they be combined?
  6. Week 11-12 18.1 - 5.2.
      • final work on thesis

Anforderungen / Requirements

  • functional
    • client (consumer)
      1. see screen (or part) of remote desktop
      2. zoom into desktop
        • useful when desktop has higher resolution than video
      3. click and/or point on the remote desktop
        • send this activities to server
      4. resize video to size of player
    • server/host (provider)
      1. provide local desktop
        • capture desktop, put it in videostream
      2. execute actions send by client
      3. pretend overload of connection between server and client
        • control bitrate of stream and adjust when necessary
  • non-functional
    1. remote desktop is viewed in realtime or as fast as possible
    2. source of transmitted images and used encoder is replacable (by architecture)
    3. effective encoding
      • use xuggler
    4. fallback when native encoder not installed

Optional

Will be implemented when time is left.

  • focus sharing on one or more windows
  • support multi-monitor environments
  • switch between screen and webcam
  • record session, maybe with activities
  • share some parts of eclipse only
    • e.g. a console or something
  • one host, many clients
  • don't use slow codecs (e.g. libx264) on slow machines
    • ability to detect this

Anwendungsfälle / Use Cases

see ThesisDPPXIIIUseCases

Implementierung

see ThesisDPPXIIIProgramming

Literatur

see ThesisDPPXIIILiteratur

Status

StreamServices

This layer adds the ability to define services/features which need pure streams (Java's InputStream / OutputStream).

Current state

running, but sending is not reliable enough

Working features

  • session negotiation
  • smooth termination of sessions
  • configure characteristics of streams to meet non-functional requirements
    • size of buffer
    • minimal size of chunks transferred
    • maximal delay between sending sending data

Problems

  • =BinaryChannel= deadlocks sometimes → data lost, stream broken
  • when an OutputStream is closed which still contains data they will be lost
    • reason: MetaPacket send immediately, but data is queued

Concrete TODO's

  • solve stream-close problem (s.a.)
  • review errorhandling
  • =StreamSessionOutputStream= : public methods to get buffer's state
  • =SteramSessionInputSession= : count read bytes, public available

Nice-to-have features

  • integrate SubMonitor into streams methods
    • not really necessary, but DataTransferManager uses it

ScreenSharing (or VideoSharing)

This is the main feature of this thesis. It's purpose is to see the desktop of a participant in a saros-session. The implementation is a general framework to supply any sequence of images from one to another saros-user.

Current state

basically runs, a session can be started

Working features

  • start a session, see remote desktop
  • capture mouse- and keyboardevents in player
    • switch between fullscreen and mouse following
  • set up basic preferences via eclipses preferences

Problems

  • xuggler
    • resampling of images takes a lot of computation (more than compressing the picture) because it's not accelarated by hardware
    • on mac only supported for 64-bit java 1.6
      • good argument to implement different en-/decoder wink
  • player
    • draw and keep initial background
    • scrollable or resize input
  • desktop/screen
    • zoom-in/-out when following mouse
  • preferences
    • validate new chosen values (e.g. invalid container for xuggler)

Concrete TODO's

Nice-to-have features

Not sure I can make it for this thesis.

  • execute click/type action on host (active screensharing)
    • user-rights management in preferences
  • record session (transmitted stream and activities)

Berichte

Vorbereitungsphase / Preparatory stage

Working stage

Week ( 2.11 - 6.11.09)

Week( 9.11 - 13.11.09)

Week ( 16.11 - 20.11.09)

Week( 23.11 - 27.11.09)

Week( 30.11 - 4.12.09)

Week( 7.12 - 11.12.09)

Week( 14.12 - 18.12.09)

Week( 21.12 - 25.12.09)

Week( 28.12.09 - 1.1.10)

Week( 4.1 - 8.1.10)

Week( 11.1 - 15.1.10)

Week( 18.1 - 22.1.10)

Week( 25.1 - 29.1.10)

Week( 1.2 - 5.2.10)

Week( 8.2 - 12.2.10)

Week (15.2 - 19.2.10)

Week (22.2 - 26.2.10)

Activities
  • adapted patch for streaming

Results
  • streaming-patch
    • adapted due to hennings and flo's review

Problems
  • patch done too close to release, not released

Comments
  • still ill

Goals
  • get finally better
  • find some papers concerning video (esp. bandwidth-adaption)
  • write parts about saros, pp, dpp, ca and related work

Kommentare

Wer will, wer will, wer hat noch nicht? Ich würde mich über jede Anregung, Anmerkung, Kritik freuen. smile

 
Topic revision: r17 - 15 Feb 2010, StephanLau - This page was cached on 10 Apr 2025 - 13:09.

Freie Universität Berlin, Institut für Informatik