The Message bus (Mbus)[1] supports local conference control for multiparty multimedia conferencing in the Mbone community. The sip-mbus controller allows call signaling protocol engines like SIPC to control audio engines using Mbus. In this project we describe the Mbus call-control mechanism designed to provide the functionality to control the call-related configuration of Reliable Audio Tool (RAT)[2].
This report describes the implementation of sip-mbus interface for controlling media application. It covers the following topics.
The project was motivated by the need to provide the features of coordination and control of applications and components to sipc[4]: audio tools like RAT need to be started with the correct initial state, but also may need to be corporate and be re-configured during the course of a session.
sipc[4]
is a SIP user agent that can communicate with SIP[3] redirect, proxy and registration servers such assipd[5]
and other SIP user agents. The client program can issue REGISTER, INVITE, CANCEL and BYE requests to initiate and teardown a call. Also if both call parties want to modify an existing connection between them, e.g. in case of INVITE, REINVITE and BYE in SIP command, the audio tool like RAT needs to be reconfigured during the session. The package was designed and implemented to support reconfiguration of RAT such as changing the remote address/port, audio codec, packetization period and toggling mute/talk state.
This section describes the architecture of the software. When appropriate, the design decisions and alternatives are discussed.
Overall Architecture
Overall architecture of the software was motivated by the need to have a modular, simple and platform independent sip-mbus controller implementation which could be easily integrated into sipc. In order to provide sip engine with functionality which allows to reconfigure audio engine in session, mbus library and rat was modified. When sipc receives call control command to modify the operation of rat, it calls sip-mbus interface respectively, then sip-mbus interface trigger the mbus commands to rat.
sip-mbus Interface
sip-mbus interface consists of five functions. These function is for mbus initialization, change of remote IP address, toggling of mute/talk, change of codec and packetization rate which means units-per-packet.
sip-mbus interface
Description
sipc_mbus_control mbus initialization interface starts mbus library to send and receive all mbus commands and spawns a thread to send a mbus.hello mbus command as a heartbeat every period to indicate liveness. sip_mbus_rtp_addr In order to change remote IP address of RAT, rtp.addr.change mbus command was added to mbus library and this sip-mbus interface works for sending the command. sipc_mbus_talk enables or disables muting of transmission. sipc_mbus_codec changes the codec of RAT. RAT supports the six codec Linear 16: 128 kbit/s: Uncompressed 16 bit samples, with linear spacing between sample values A-Law: 64 kbit/s: a-law companded 8 bit samples. Very similar to Mu-Law but only supported by RAT (i.e. not VAT) Mu-Law: 64 kbit/s: mu-law companded 8 bit samples. GSM: 13.2 kbit/s: This encoding is used in mobile phones. and is specially designed for voice signal. LPC: 5.8 kbit/s: Generates a synthetic representation of speech, which sounds slightly artificial. sipc_mbus_packetization set the number of "units" (codec frames, typically) placed in each packet when transmitting. sipc_mbus_input_gain
sets the input (Eg: microphone) gain
sipc_mbus_output_gain
handles the volume of the speaker
sipc_mbus_rat_quit
makes RAT to be quit.
mbus library
The current sip-mbus controller uses seven mbus commands for sending and eight mbus commands for receiving. Among these, not only was rtp.addr.change for changing remote IP address of RAT added to mbus library, but also RAT source was modified for process this command.