

Signal Processing Example Applications Using Intel(R) IPP 
for the Intel(R) PXA25x and PXA26x Processors

Readme.txt 


/***********************************************************
Readme for the Signal Processing Example Applications 
Intel(R) Integrated Performance Primitives 3.0

03/12/2003
***********************************************************/

Description

This directory contains sample code that demonstrates the 
use of several signal processing (ippSP) primitives.  These 
examples are intended to help new users become familiar with 
Intel(R) IPP usage and syntactical conventions through exposure 
to working Intel(R) IPP-based solutions for interesting 
problems in general signal processing, telephony, and audio.  
In order to facilitate performance evaluation, this package 
also includes a sample loadable module kernel device driver 
that provides user-mode access to the OSCR timer on the 
Intel(R) PXA25x and PXA26x Processors with Intel(R) XScale(TM) 
technology. The OSCR driver can be used to measure performance 
of IPP-based applications with minimal overhead.

The examples in this package cover the following application 
areas:

1. Signal generation - sinusoidal, triangular, and 
   random signals
2. Vector manipulation - vector add, subtract, multiply, 
   initialization, norms, etc.
3. Filtering - FIR and IIR
4. Artificial audio reverberation
5. Adaptive Noise Cancellatio
6. Performance measurement using the OSCR timer on the 
   Intel(R) PXA25x and PXA26x Processors.

The Intel(R) IPP code examples in this pacakge are intended for 
(Intel) IPP tutorial use only.  Users should be aware that the 
solutions given in the sample code do not necessarily represent 
the most efficient or practical solution to a given design problem, 
and these examples are not intended for use in any product.   

An effort has been made to keep the software in the ANSI C style 
whenever possible. Although Intel(R) IPP sample code has been 
tested, no warranty, expressed or implied is to be associated 
with these functions as well as all the associated materials in 
this package. All risk assumed is by the user. See the 
Intel(R) Integrated Performance Primitives License Agreement for 
details.

-------------------------------------------------------------------------------

Installation

1. Install the directory tree as structured in this archive
2. Change to the directory of each application
3. Review the makefile to ensure that the paths are properly 
   configured. All makefiles are factory configured with the 
   default IPP installation paths
4. Type "make" in the directory of each sample application

-------------------------------------------------------------------------------

Usage

1. The default output path is the same as the makefile and 
   source code

2. Type the application name -help (e.g., SigGen --help) to 
   obtain a listing of command-line options.

3. Once the application is running, type h <Return> for a 
   listing of the available real-time processing commands.

For each example, follow the instructions given in the 
associated code comments and readme files. 

All of the sample applications have a common architecture.
 
 - All ipp functionality is maintained in a single c module 
   with a carefully defined "external" interface.

 - All user inteface functionality (console, audio, etc) is 
   maintained in a second .c file

 - Each of these .c files essentially runs in a separate 
   thread

One thread is used to manage a text-mode user interface on 
the linux console. Once the application is started, type h 
<REturn> to obtain a list of commands for each sample 
application.  A second thread is used to manage the IPP
signal processing and performance measurement functionality.

  - The performance measurement requires insmod installation 
    of the oscr_xsc_mod.o loadable driver module at runtime 
    -- refer to the readme in the OSCRTimer directory

  - Makefiles are included for each sample application

  - Performance measurement can be optionally excluded by 
    selecting the appropriate comment line in the makefile

-------------------------------------------------------------------------------

Known Problems and Important Caveats

1. Audio sample rates.  The real-time audio portions of these 
   samples assume that the input and output sample rates are 
   fixed at 48 kHz.  This is to provide compatibility with 
   the existing audio driver on the Linux port to the Intel(R) 
   StrongARM* SA-1110 Microprocessor development platform, 
   which supports only stereo, 48 kHz streams.  As result, 
   all of the real-time full-duplex example code has built-in 
   rate conversions from 48 kHz to application target rates of 
   either 12 or 8 kHz, depending on the application.  The reverb 
   example operates on the unprocessed 48 kHz stream. The rate 
   conversions for the other examples use IPP filters for 
   bandlimiting and interpolation in the downsampling and 
   upsampling, respectively, but the filter designs (i.e., the 
   coefficients) are not necessarily optimal in any sense; they 
   do, however, provide reasonable funtionality for demonstration 
   purposes.

2. Performance measurements.  BE VERY CAREFUL when interpreting 
   performance measurements obtained with the included OSCR package.  
   Before making meaningful performance measurements, the user 
   must ensure that the Linux system is fully configured, 
   including appropriate memory management, CPU core clock, memory 
   bus speed, and memory bus width. Incorrect settings for any 
   of these parameters can have a significant negative impact on 
   measured performance.

3. File compatibility for each of the examples.  Some of the sample 
   programs expect input audio data to be in very specific formats, 
   i.e., number of channels, bits per sample, and sample rates. 
   Most of the applications have not been written to allow arbitrary 
   sample rates, word lengths, or channels.  Before running each
   application, be sure that you have examined carefully the code 
   and understand the input requirements.  Failure to do so will 
   cause meaningless outputs.


-------------------------------------------------------------------------------

Changes Since Last Release

None

-------------------------------------------------------------------------------

License Definitions

Please refer to the Intel(R) Integrated Performance Primitives 
license file for the license agreement details.

-------------------------------------------------------------------------------

Information in this document is provided in connection with 
Intel(R) products. No license, express or implied, by estoppel 
or otherwise, to any intellectual property rights is granted by 
this document. Except as provided in Intel's Terms and Conditions 
of Sale for such products, Intel assumes no liability whatsoever,
and Intel disclaims any express or implied warranty, relating to
sale and/or use of Intel products including liability or warranties 
relating to fitness for a particular purpose, merchantability, or 
infringement of any patent, copyright or other intellectual 
property right. Intel products are not intended for use in medical, 
life saving, or life sustaining applications. 

Intel may make changes to specifications and product descriptions 
at any time, without notice.

Designers must not rely on the absence or characteristics of 
any features or instructions marked "reserved" or "undefined." 
Intel reserves these for future definition and shall have no 
responsibility whatsoever for conflicts or incompatibilities 
arising from future changes to them.

The Intel(R) PXA25x and PXA26x Processors may contain design defects 
or errors known as errata which may cause the product to deviate 
from published specifications. Current characterized errata are 
available on request.

Contact your local Intel sales office or your distributor to 
obtain the latest specifications and before placing your 
product order.

Copies of documents which have an ordering number and are 
referenced in this document, or other Intel literature may 
be obtained by calling 1-800-548-4725 or by visiting Intel's 
website at http://www.intel.com.

Copyright (c) Intel Corporation, 2003

* Other brands and names are the property of their respective owners.
