General Description: The goal of this project is to build a system capable of dynamically locating audio/video resources (e.g., network-attached speakers, monitors, and keyboards) available in the environment and allowing mobile users to access them on-demand. Imagine a scenario where a user with a PDA or other mobile wishes to access more powerful audio or video resources than are available on the PDA to listen to music, view a video, or initiate a teleconference. Rather than play the music through the tinny speakers on their PDA or view the video on the PDAs tiny screen, they request access to an unused set of network-attached speakers or a network-attached monitor "nearby". The PDA, on the user's behalf, locates an available output device in a nearby room, guides the user to this room, automatically retrieves the mp3 or mpg file from a server, and streams it directly to the network- -attached speakers/monitor. A more complicated scenario would be to present a seamless audio/video experience as the user walks between rooms, with the PDA automatically detecting the movement and migrating the output to new sets of speakers/monitors as the user moves. The major tasks of this project can be divided as follows: Service Discovery, i.e. the ability to find services in the environment Ability to choose a service from the available ones based on user intent Ability to stream audio/video files to the selected service Ability to dynamically relocate the playing of audio/video files from a service to another based on user selection (i.e modeling user movement) Work will be done on a (provided) Sharp Zaurus handheld device (running Linux) as the client. Architecture: (Designed for accomplishing all bare essentials features) Web Interface: Functionalities: 1. 2. 3. Provide a GUI to end-user (PDA user, laptop user) through a platform independent Web browser Be able to communicate with lookup server and report user-location to lookup server Be able to get mp3 file list from lookup server 4. 5. Be able to choose mp3 file from the list and report it to lookup server Be able to send play, stop, pause, restart and other requests to the streaming program Components: 1. 2. 3. Two nice looking web pages, one for PDA user, one for laptop (desktop) user Communication package to lookup server Communication package to streaming program Implementation approaches: 1. Web pages: Use Java Servlets to create web pages (Kana, please be more specific at here, I do not really know these stuff) 2. Communication packages: Socket based inter-process communication Interface to other modules: 1. To lookup server Standard socket based Linux inter-process communication interface 2. To Streaming program Same as above 3. To speaker client No interface to speaker client, there is no direct connection between the two Programming Languages: 3. Java (Kana, please be more specific at here again) Lookup Server: Functionalities: 1. Be able to provide mp3 file-list to Web interface 2. Be able to send mp3 files (names) to streaming program 3. Be able to maintain speaker clients (including response to change location request from Web interface) Components: 1. 2. 3. 4. 5. A database keeps all speaker clients status A database keeps all mp3 files A communication package to Web interface A communication package to Streaming program A central control package to control speaker clients (decide if playing certain music on certain speaker is possible & find speaker client by providing PDA location) Implementation approaches: 1. Build a speaker database by using MySQL. 2. Build an mp3 file database by using MySQL. 3. Communication package to Web interface will be a standard socket based inter-process communication interface 4. Communication package to Streaming program will be similar to communication package to Web interface 5. The control package will be a group of functions, and it will be a part of the lookup server. Interface to other modules: 1. To Web interface Linux standard socket based inter-process communication interface 2. To Streaming program Linux standard socket based inter-process communication interface 3. To Speaker clients There is no direct connection between the two Programming Languages: C/C++ for multimedia streaming Multimedia Streamer: Functionalities: 1. Be able to send audio stream to remote speaker clients upon request from Lookup server 2. Be able to send “adjusting volume”, “Play”, “Stop”, “Pause”, “Restart” and other requests to remote speaker client Components: 1. Mp3 Player (w/o GUI interface) i. Function (method) for Play ii. Function (method) for Stop iii. Function (method) for Pause iv. Function (method) for Restart (at a given time) 2. A streaming function. Take speaker identifier and audio stream as input parameter. 3. An adjust volume function. Take speaker identifier and volume as input parameter. 4. A listening program that handles incoming requests and controls streaming based off requests from speakers. Implementation approaches: Find an open source Mp3 player program on the Internet (maybe xine player at http://xinehq.de/), do some minor modification. For the player and streamer part, we are going to take the SOAP approach. Web Services Definition Language (WSDL) and Simple Object Access Protocol (SOAP). WSDL is an XML grammar for specifying properties of a service, such as what it does, where it is located, and how to invoke methods on a particular service. WSDL is the “contract” or binding between the service and its clients. SOAP is an XML-based lightweight protocol for performing RPC and data exchange in a decentralized, distributed environment. SOAP can be used with many transport protocols, the most common is HTTP. The Streamer will give the appropriate WSDL file bases off location. A nice feature would be to set up a UDDI server to do this. Interface to other modules: 1. To Web interface Linux standard inter-process communication interface 2. To lookup server Linux standard socket based inter-process communication interface 3. To Speaker client Interface to speakers will use SOAP to perform RPC. The Streamer and each speaker will run a small stand-alone gSOAP HTTP/HTTPS web server that serves regular dynamic HTML content and SOAP/XML web services. These gSOAP applications are intended to run as CGI applications. The Stream Server will act as client to Speakers to control volume, start streaming, stop streaming, etc. Programming Languages: The implementation of distributed commutation layer will use the gSoap library. The gSoap library is a C/C++ framework for Web Services and Clients. These applications are intended to run as a CGI application at a specified location. The Streamer and each speaker will run a small stand-alone gSoap HTTP/HTTPS Web server that server regular dynamic HTML conent and SOAP/XML web services. The client will use this library to use SOAP in order to send RPCs to the application. Speaker Client: Functionalities: 1. Inform the lookup server with its presence through streamer 2. Receive audio streaming from streamer 3. Be able to play, stop, adjust volume according to request from streaming module Components: 1. A reporter function 2. A receiving function 3. A mp3 player Implementation approaches: All communications will be SOAP based functions. Local player starts to play mp3 files upon request from Streamer Interface to other modules: 1. To Web interface No direct communication between these two 2. To Lookup server No direct communication between these two 3. To streaming program Each speaker will run a small stand-alone gSoap HTTP/HTTPS Web server that server regular dynamic HTML conent and SOAP/XML web services. Programming Languages: C/SOAP Features: Bare Essentials: 1. User Interface to play, stop, pause, restart, adjust volume, and to change physical position. 2. Lookup Service. 3. Speaker Client. Desired Features: 1. Streamer, which “automatically” changes playing location on demand. 2. Support for streaming video files. 3. Have support to really change playing locations based off user position. Bells and Whistles: 1. Support for remote input and output from PDA. Architecture Figure: Client Web Browser Web Browser Client Lookup Server Laptop Web Interface Laptop Client Streamer PDA Web Interface PDA Client Speaker/File DB Server Client Client Client Client Communication figure: PDA Streaming Program Lookup server Speaker Step 1: PDA connect to Lookup server through a well-known (built-in) URL Step 2: PDA send query to Lookup server asking for service lists (Mp3 file list). Download list from server and download the speaker URL Step 3: PDA send commend (invoke a remote function call) to streaming program, including speaker URL and mp3 filename Step 4: Streaming program send stream to speaker and speaker starts to play