Integrating BASS application into SIPc

Qijun Zhong
Columbia University
New York, NY 10025
USA
qz2133@columbia.edu

Abstract

This project is about integrating BASS - the desktop sharing application - into Sipc agent.

Introduction

SIPc is a SIP user agent that can be used for Internet telephony calls. It supports a range of media types, such as audio, video, text, white board, desktop sharing, and can be extended easily to additional media types. [1]

BASS Application Sharing System is efficient, reliable, independent of the operating system, scales well via heterogenous multicast, supports all applications, and features true application sharing. [2]

SIPc does not provide application sharing functionality itself; rather, it uses external media application for handling media streams. In earlier work, SIPc was using VNC - the famous remote control software - to implement the application sharing function.

Now we use BASS, which is more efficient and reliable, instead of VNC. Since the commands of BASS are quite different from the ones of VNC, we need to make some changes through the code of SIPc. Besides, BASS has some new functions that VNC has not: BASS can share the video and the desktop applications at the same time, which would require the client side to invoke two client processes. To meet this requirement, we also need to make some changes on the SIP messages.

Following is the list of this report:

Background: Brief introduction of SIPc, VNC and BASS

Related Work: Introduction of the software that SIPc used to implement the application sharing function, and the differences between the current version and the previous version.

Architecture: Brief overview of the architecture of SIPc, and the introduction of modules which is related to application sharing.

Program Documentation: Links of Program Documentation.

Task List: Information of the task.

Background

SIPc is a SIP user agent that can be used for Internet telephony calls. It supports a range of media types, such as audio, video, text, white board, desktop sharing, and can be extended easily to additional media types.

However, SIPc does not provide audio, video and desktop sharing functionality itself; rather, it uses external media application for handling media streams. [3]

In previous version, SIPc use VNC to implement the desktop sharing function. Here we use BASS, a more efficient and reliable program to implement the desktop sharing.

BASS Application Sharing System is efficient, reliable, independent of the operating system, scales well via heterogenous multicast, supports all applications, and features true application sharing. Currently, BASS has a Java client and Windows XP server. [2]

Related Work

In earlier work, SIPc was using VNC - the famous remote control software - to implement the application sharing function. Now we use BASS, which is more efficient and reliable, instead of VNC.

Since the commands of BASS are quite different from the ones of VNC, we need to make some changes through the code of SIPc. Besides, BASS has a new function that VNC has not. BASS can share the video and the desktop applications at the same time, which would require the client side to invoke two client processes. To meet this requirement, we also need to make some changes on the SIP messages.

Here are some differences between VNC and BASS:

Commands:

    To invoke the server application in Windows System:

     VNC:
           set the VNC password (in SIPc, this is implemented by changing the values of Windows registry);
           winvnc -connect <ip_address>:<port>  

    BASS:
           java -cp {.;bass/libraries/jheora-patch.jar;bass/libraries/jogg-0.0.7.jar;bass/libraries/theora-java.jar;} -Xms32M -Xmx128M bass.AppShareServerManager

    To invoke the client application in Windows System:

    VNC:
            vncviewer -listen <port>

    BASS:
            java -cp {.;bass/BassClient.jar;} bass.AppShareClient -e <ip_address>/<port>

In VNC, the client must be run before the server is run; while in BASS, the server must be run before the client, or else the client would lost connection. They have different order. In the previous SIPc version, VNC client would be run before the connection is set up. In the latest version, the BASS client would be run after the connection is set up, to ensure that the BASS server is already run.

SIP messages:

Since BASS introduces a new function of sharing the video and the desktop applications at the same time, which would require the client side to invoke two client processes, the SIP messages would be changed to meet this requirement.

SIP messages use "media-descriptions field" ("m=" line) and "attribute-field" ("a=" line) of SDP to describe the multi-media applications.

In previous version which is using VNC, VNC is described as:

Server:

    m=application 6000 TCP rfb
    a=fmtp:rfb vncserver

Client:

    m=application 6000 TCP rfb
    a=fmtp:rfb vncviewer

In the version using BASS, BASS is described as:

Server:

    m=application 6006 TCP rfbs
    a=fmtp:rfbs bassserver
    m=application 6000 TCP rfb
    a=fmtp:rfb bassserver

Client:

    m=application 6006 TCP rfbs
    a=fmtp:rfbs bassviewer
    m=application 6000 TCP rfb
    a=fmtp:rfb bassviewer

Architecture

Here is the function set in SIPc which is described in the paper "SIPC, a multi-function SIP user agent". [4]

To meet the requirements of BASS, I have changed the code of "SIP Multimedia call control" part, which is related to the controlling of desktop sharing application.

Following graph would describe the architecture of the modules which are related to "SIP Multimedia call control".

Controller: Controller is the central part of the system. It connects the GUI service and the stack. It handles events from GUI, like making a call, hanging up, etc.; handles events when received a message, like parsing the message and encoding a response message; and communicates with service, like preprocessing the applications which user had chose. The Controller is implemented by 18 source files, which are named begin with "controller".

    The source files which are related to the "SIP Multimedia call control" in this part are:

    controller.tcl: Handle events from GUI and communicates with service.

    controller_invite.tcl: Handle invite request and response to the received messages.

    controller_cancle.tcl: Handle cancel request and responses to it.

GUI: GUI (Graphical User Interface) provides the interface to interact with the user. GUI is implemented by 33 source files, which are named begin with "gui" and "addressbook".

    The source files which are related to the "SIP Multimedia call control" in this part are:

    gui.tcl: Initialize the main GUI (Graphical User Interface).

    gui_call.tcl: Handle the user activities which are made on GUI, like choosing the media applications, clicking on the button, etc.

    addressbook_callarrive.tcl: Pop up invite window when an incoming call arrived, handles the user events and process the corresponding functions.

The main functions which would be call when handling the "SIP Multimedia call control":

    application.tcl: Invoke the application which is to be run, and kill the application which is to be closed.

    sdp.tcl: Handle SDP of SIP messages parsing when the SDP message is received, and also encode the SDP of response SIP messages when necessary.

Configuration files which are related to the "SIP Multimedia call control":

    mimecap: The mapping between media type and media application.

    mime.tcl: Load or save the information of external media applications from mimecap.

    media.conf: Media configuration file, stores the port and codec information for each media type.

    media.tcl: Handle media application and media transmission based on the information in media.conf.

Program Documentation

User Manual

Changed and Added Source Files: All the changed code is commented with my name "Qijun" and the original code. To find out the changed code, please search the files using the keyword "Qijun".

Task List

Following are the source files that had to be changed:
3pcc.tcl
addressbook_callarrive.tcl
app.conf
application.tcl
controller.tcl
controller_cancel.tcl
controller_invite.tcl
gui.tcl
gui_call.tcl
images.wrap
main.tcl
media.conf
mimecap
sdp.tcl
sipc.wrap

Following are the source files that were added:
sipcmd.tcl
/image/recv_location.gif
/image/tkbt.gif
/tkcon/pkgIndex.tcl
/tkcon/tkcon.tcl (this file is an open source plugin which is downloaded from website of sourceforge.net [5])

All the changed and added files are available here. All the changed code has comment with my name "Qijun" and the original code. To find out the changed code, please search using the keyword "Qijun".

References

1
Introduction to the projects in IRT-Lab (SIPc Project):
 
2
Project List of IRT Lab (information about BASS)
 
3
Introduction to Columbia SIP User Agent
 
4
Xiaotao Wu, Henning Schulzrinne, "SIPc, a multi-function SIP user agent", Proceedings of 7th IFIP/IEEE International Conference, Management of Multimedia Networks and Services (MMNS'04), pp. 269-281, Oct. 2004, San Diego, CA, USA
 
5
Enhanced Tk Console: tkcon
http://tkcon.sourceforge.net/
 

Last updated: 2008-10-24 by Qijun Zhong