|
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.
|