Technology and Research
Intel® Technology Journal Home
Volume 10, Issue 01
Converged Communications
Table of Contents
Technical Reviewers
About This Journal
Intel Published Articles
Read Past Journals
Subscribe
E-Mail this Journal to a Colleague
Main Visual Description
Intel Technology Journal - Featuring Intel's Recent Research and Development
Converged Communications
Volume 10    Issue 01    Published February 15, 2006
ISSN 1535-864X    DOI: 10.1535/itj.1001.06

  Section 7 of 15  
Using Intel® Technologies to Build Next-Generation Media Servers
INTEL NETSTRUCTURE® HOST MEDIA PROCESSING SOFTWARE

Intel NetStructure® Host Media Processing Software is an Intel architecture-based technology for processing media. It is an ideal platform for implementing a media server, whether in the rigorous environment of an IMS network or in less standardized applications.

About Intel NetStructure® Host Media Processing

Intel NetStructure Host Media Processing Software runs on a general-purpose computer running Windows* or Linux*. The HMP software processes media on the Intel CPU and interfaces with external entities using standard IP protocols through the computer's Network Interface Controller (NIC).

Intel NetStructure Host Media Processing Software supports all common media server functions, including T.38 fax, audio/video play, audio/video record, audio conferencing, audio transcoding, IP call control, and also provides hooks for speech recognition and text-to-speech. As of this writing, HMP software from Intel runs up to 400 concurrent channels (i.e., bi-directional audio sessions) on a single computer. Additionally the HMP software interfaces with PSTNs, PBXs, and digital stations through telephony interface cards [13,28]. Table 2 lists the features in more detail.

Table 2: Intel NetStructure Host Media Processing Software feature tables
 
Network Interface  
  IP over Ethernet, Traditional Telephony interface cards
 
IP Call Control
Protocol H.323, SIP
Integration with third-party call and connection control stacks Provided via R4 IPML
 
IP Streaming
Protocol RTP (RFC 3550)
Audio formats G.711 A-law, µ-law 8-bit 8K
G.723.1 (5.3 KHz and 6.3 KHz)
G.729a, G.729b
Video formats H.263 profile 0, level 30 (RFC 2190)
QoS Alarms
Frames per packet control
Packet loss reduction
RTP/RTCP timeouts
Tone generation and detection RFC 2833
H.245 User Input Indication
Media control over RTP Programmatic control of inbound RTP stream gain and output RTP stream volume
 
Voice Processing Features
Features supported Play, record, and tone generation and detection
Play Volume control and index play
Record AGC
Audio file formats for play/record OKI ADPCM 24 Kbps, 32 Kbps
G.711 A-law, µ-law @ 48 Kbps, 64 Kbps
All of the above in WAV format Linear PCM 8b @ 11 Khz (Wave format only)
Linear PCM 64 Kbps
Linear PCM 128 Kbps
G.726
 
Conferencing Features
Total parties/server 240
Advanced Features N-way summing
Coach/pupil mode
DTMF detection
DTMF clamping
Active talker notification
 
User Input Features
In-Band In-Band DTMF generation and detection
User-defined global tone generation and detection (GTG, GTD)
Out-of-Band RFC 2833 RTP Messages
H.245 User Input Indicator
 
Video Processing Features
Play Playback of synchronized voice and video
Record Stores synchronized voice and video to file
Video format H.263 (profile 0 level 30)
Picture Sizes CIF, QCIF, and sub-QCIF
Video file formats Dual proprietary file formats
Audio file (.pcm): Linear PCM 16b 8K
Video file (.vid): H.263 bit-stream data
Offline conversion tool Convert AVI Type-2 (DVSD or DV25) files (PAL or NTSC) to proprietary format
Convert proprietary format to 3GP Release-4 file format (.3gp)

The value of Intel NetStructure Host Media Processing Software lies largely in its reduced Total Cost of Ownership (TCO), often 50% less than traditional DSP-based solutions [12]. Because HMP software does not require specialized hardware, it is able to take advantage of economies of scale, resulting in lower hardware costs and some free performance improvements. As Intel develops better CPUs, HMP software performs better. It rides the Intel technology wave of silicon and software advancements: dual-core processors, HT Technology, Intel IPP, NICs, and VTune Performance Analyzer among others.

Because Intel NetStructure Host Media Processing Software runs on a general-purpose computer, development, deployment, and maintenance costs are reduced as well. Table 3 and Table 4 illustrate these points. Table 3 describes a hardware-based solution and a solution based on Intel NetStructure Host Media Processing Software. Table 4 analyzes the costs of the two solutions [12]:

Table 3: Hardware and Intel NetStructure Host Media Processing Software Solutions
 
Expense Hardware-Based Detail HMP Software-Based Detail
Basic Building Blocks Intel NetStructure IPT2400 + Intel NetStructure DMV2400ACPCI Resources: 240 Voice, 240 RTP, 60 CSP + server with Intel® Xeon® processor (3.2 GHz -- $3,500)
Development System 10% of deployed ports 5% due to NFR software pricing
Inventory 25% of volume None
Shipping Ship boards from distributor Electronic distribution
Installation and Configuration 4 hrs @ $100 per hour 1 hr @ $100 per hour
Spares 30% of boards Instant emergency license
Field Upgrade + 25% Capacity Buy Intel NetStructure® DMIP301 boards Add 60 Ports + additional server

Table 4: Analysis of both solutions
 
Expense HW-Based Cost HMP Software-Based Cost Savings
Basic Building Blocks $21,260 $11,300 $9,960
Development System $2126 $650 $1,476
Inventory $1,875 $0 $1,875
Shipping $100 $0 $100
Installation and Configuration $300 $100 $200
Spares $2,250 $0 $2,250
Field Upgrade + 25% Capacity $6,378 $5,456 $922
Total $34,289 $17,506 $16,783 (49%)

Intel APIs

Intel NetStructure Host Media Processing Software supports the R4 and Global Call APIs, which have been staples of computer telephony for over a decade. Both are high-level "C" APIs that make implementing media servers easier for the application developer. The APIs are the same APIs that run on Intel media processing technology boards, making the transition from board-based solutions to HMP software-based solutions nearly seamless. Connection control is internal if it is internal to the HMP software, and external if it connects the HMP software to an external entity. Global Call is the signaling and external connection control API, and R4 is the media control and internal connection control API.



Figure 6: HMP software-based IP media server
click image for larger view
 

Global Call abstracts the H.323 and SIP signaling stacks and can be configured to automatically establish IP calls or let the application manage the connections. After setting up calls with Global Call, an application performs the media control functionality through the R4 API. The R4 API is divided into several families [13-17]:

Table 5: R4 API families
 
API Support  
Voice processing R4 voice (dx_)
Multimedia processing R4 multimedia (mm_)
Connections R4 routing (sc_ and dev_)
Conferencing R4 conferencing (dcb_)
Fax R4 fax (fx_)
Continuous speech processing R4 EC (ec_)
IP media (QoS, etc.) R4 IPML (ipm_)
Framework - Event reporting, device enumeration, and other related functionality R4 SRL (sr_)

R4 abstracts media control functionalities into R4 devices. Example devices are the DX device, which performs audio play and record, the MM (multimedia) device, which performs multimedia play and record, and the IPM (IP media) device, which performs RTP functionality. Applications use these devices not only to perform actions, but also to receive events and make connections. All devices support duplex media streaming. Some of these functions are described in more detail below.

R4 includes two more abstractions that are worth an introduction: Run-Time Controls (RTCs) and termination conditions. RTCs allow applications to arm devices to respond to events without application interaction. For instance, the application can arm the voice device to increase volume on detection of a digit. In essence, RTCs are a means to meet real-time performance requirements.

A termination condition is a condition associated with an action, such as record, that should terminate upon occurrence of the condition. Setting up termination conditions is a common use of RTCs. A common termination condition is silence duration, which might trigger a voice device to terminate recording of a media stream.

R4 and Global Call both support a variety of programming models, broadly categorized as synchronous and asynchronous. Application developers are encouraged to use the asynchronous programming model for superior performance.

In the asynchronous programming model, the action initiated by a function call, such as playing, does not complete when the function returns. Instead, HMP software sends an asynchronous completion event to the application once the action has completed. By doing this, an application does not have to wait for one action to complete before starting another, and the application does not have to spawn a thread for every channel in the system.

A robust technique for asynchronous programming is to program an application state model. In this state model, events, including completion events, incite the state transitions. Hence, an application event handler checks the state of the device on which the event is received in order to determine the next action.



Figure 7: Simple IVR application state diagram
click image for larger view
 

Figure 7 is an example of an Interactive Voice Response (IVR) application state diagram. The "entry/dx_play(...)" notation indicates that the application performs a dx_play() on entry into that state (more on dx_play() later). By using an application state model, the vast majority of the business rules for an application is built into the model, making the application not only robust but also flexible.

Building an HMP Software Application

This section applies our Intel NetStructure Host Media Processing Software and API knowledge towards building an IVR and Video Portal application. This section does not provide an exhaustive discussion or code listing, but does briefly address all of the key pieces. Finally, this section uses pseudo-code with function names identical to R4 and Global Call function names.

An IVR application has four main pieces: establishing a call, connecting an IPM device to a local voice device, connecting an IPM device to a remote endpoint, and controlling the media in the call through the voice device. We will tackle these pieces in that order. The application design is consistent with Figure 7.

Global Call provides the APIs for making and receiving calls [18].

gc_MakeCall() // to make a call
gc_WaitCall() // to wait for a call

After these APIs complete, via asynchronous completion events, a variety of other Global Call APIs are used to complete the external connection setup. Before we connect an IPM device to a remote endpoint, we need to connect it to a local voice device using an internal connection control.

dev_Connect(IPM_device, voice_device, duplex)

And eventually, we need to configure our IPM device:

ipm_StartMedia(IPM_device, audio codec, UDP_port, IP_address, ...)

The codec, UDP port, and IP address information are available from Global Call. At this point we use Global Call to inform the far side that the connection is up and running.

Now we are ready to perform IVR functionality, for example, play a file from the voice device.

dx_play(DX_device, file);

That completes the critical steps for building an IVR application. Each step above is probably three to five steps for most applications. A typical IVR application will typically perform multiple audio plays, depending upon input received from the user. Furthermore, the application needs to be constructed asynchronously, as described above, but the concepts and steps are intuitive.

To change our IVR application into a video portal, we need to add video functionality. In HMP software from Intel, video is handled through the multimedia libraries (mm_), which differ from the voice-only libraries (dx_). Therefore, we need to change the dx_ calls to mm_ calls, but we retain the same state machine. For example:

dev_Connect(IPM_device, DX_device, duplex)
dev_Connect(IPM_device, MM device, duplex)
dx_play(DX_device, file)
mm_Play(MM_device, file)

Most dx_ calls have analogues in the mm_ domain. The parameters are arranged a little differently, but the style is the same, so switching from dx_ to mm_ is a natural and necessary process, as the dx_ calls could not support video requirements.

In addition, we must update our Global Call code and ipm_StartMedia to include video stream configuration:

ipm_StartMedia(IPM_device, IPM_device, audio codec, video codec, UDP_ports, IP_address, ...)

Again, Global Call provides the codec and port information.

That completes the transformation of our application from IVR to Video Portal. As we have seen, Intel NetStructure Host Media Processing Software is a powerful tool for implementing media applications, including media servers. The HMP software reduces application development time and TCO. Now we look at some of the Intel technologies on which Intel NetStructure Host Media Processing Software is built.


  Section 7 of 15  

In This Article
Abstract
Introduction
Taxonomy of a Media Service Network
Circuit-Switched Network
Packet-Switched Network
Application Programming Interfaces
Intel NetStructure® Host Media Processing Software
Intel Architecture for Signal Processing Applications
Intel Development Environment
Where We Go From Here
Conclusion
Performance Testing
Acknowledgments
References
Authors' Biographies
Download a PDF of this article.   
Email This Page
Back to Top