Texas Instruments Codec Engine Server User Manual

Codec Engine Server Integrator
User's Guide
Literature Number: SPRUED5B
September 2007
IMPORTANT NOTICE
Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications, enhancements, improve­ments, and other changes to its products and services at any time and to discontinue any product or service without notice. Customers should obtain the latest relevant information before placing orders and should verify that such information is current and com plete. All products are sold subject to TI's terms and conditions of sale supplied at the time of order acknowledgment.
TI warrants performance of its hardware products to the specifications applicable at the time of sale in accordance with TI's standard warranty. Testing and other qualit y control techniques are used to the extent TI deems necessary to support this warranty. Except where mandated by government requirements, testing of all parameters of each product is not necessarily performed.
TI assumes no liability for applications assistance or customer product design. Customers are responsible for their products and applica­tions using TI components. To minimize the risks associated with customer products and applications, customers should provide adequate design and operating safeguards.
TI does not warrant or represent that any licens e, either ex press or implied, is granted under any TI patent right, copyright, mask work right, or other TI intellectual property right relating to any combination, machine, or process in which TI products or services are used. Information published by TI regarding third-party products or services does not constitute a license from TI to use such products or services or a warranty or endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectual property of the third party, or a license from TI under the patents or other intellectual property of TI.
Reproduction of TI information in TI data books or data sheets is permissible only if reproduction is without alteration and is accompanied by all associated warranties, conditions, limitations, and notices. Reproduction of this information with alteration is an unfair and deceptive business practice. TI is not responsible or liable for such altered documentation. Information of third parties may be subject to additional restrictions.
Resale of TI products or services with statements different from or beyond the parameters stated by TI for that product or service voids all express and any implied warranties for the associated TI product or service and is an unfair and deceptive business practice. TI is not responsible or liable for any such statements.
TI products are not authorized for use in safety-critical applications (such as life support) where a failure of the TI product would reasonably be expected to cause severe personal injury or death, unless officers of the parties have executed an agreement specifically governin g such use. Buyers represent that they have all necessary expertise in the safety and regulatory r amifications of their applications, and acknowledge and agree that they are solely responsible for all legal, regulatory and safety-related requirements concerning their products and any use of TI products in such safety-critical applications, notwithstanding any applications-related information or support that may be provided by TI. Further, Buyers must fully indemnify TI and its representatives against any damages arising out of the use of TI products in such safety-critical applications.
TI products are neither designed nor intended for use in military/aerospace applications or environments unless the TI products are specifically designated by TI as military-grade or "enhanced plastic." Only products designated by TI as military-grade meet military specifications. Buyers acknowledge and agree that any such use of TI products which TI has not designated as military-grade is solely at the Buyer's risk, and that they are solely responsible for compliance with all legal and regulatory requirements in connection with such use.
TI products are neither designed nor intended for use in automotive applications or environments unless the specific TI products are designated by TI as compliant with ISO/TS 16949 requirements. Buyers acknowledge and agree that, if they u se any non-designated products in automotive applications, TI will not be responsible for any failure to meet such requirements.
Following are URLs where you can obtain information on other Texas Instruments products and application solutions:
Products Applications Amplifiers amplifier.ti.com Audio www.ti.com/audio Data Converters dataconverter.ti.com Automotive www.ti.com/automotive DSP dsp.ti.com Broadband www.ti.com/broadband Interface interface.ti.com Digital Control www.ti.com/digitalcontrol Logic logic.ti.com Military www.ti.com/military Power Mgmt power.ti.com Optical Networking www.ti.com/opticalnetwork Microcontrollers microcontroller.ti.com Security www.ti.com/security RFID www.ti-rfid.com Telephony www.ti.com/telephony Low Power Wireless www.ti.com/lpw Video & Imaging www.ti.com/video Wireless www.ti.com/wireless
Mailing Address: Texas Instruments, Post Office Box 655303, Dallas, Texas 75265
Copyright © 2007, T exas Instruments Incorporated
About This Book
The intended audience for th is document is the Server Integrator, who creates a Codec Server for use by the Engine Integrator and thus the Application Author.
This manual tells what steps the Server Integrator should take to configure DSP/BIOS and other components to create a Codec Server.
Additional Documents and Resources
You can use the following sources to supplement this user’s guide: Codec Engine API Reference.
CE_INSTALL_DIR/docs/html/index.html
Codec Engine SPI Reference Guide.
CE_INSTALL_DIR/docs/spi/html/index.html
Configuration Reference.
CE_INSTALL_DIR/packages/xdoc/index.html

Preface

Example Build and Run Instructions.
CE_INSTALL_DIR/examples/build_instructions.html
Codec Engine Application Developer’s Guide (SPRUE67) Codec Engine Algorithm Creator User’s Guide (SPRUED6) xDAIS-DM (Digital Media) User Guide (SPRUEC8)
TMS320 DSP Algorithm Standard Rules and Guidelines (SPRU352) TMS320 DSP Algorithm Standard API Reference (SPRU360) TMS320 DSP Algorithm Standard Developer’s Guide (SPRU424) TMS320 DSP Algorithm Standard Demonstration Application
(SPRU361)
XDC User’s Guide and other XDC documents.
XDC_INSTALL_DIR/doc/index.html
iii
Notational Conventions
Notational Conventions
This document uses the following conventions:
Program listings, program examples, and interactive displays are
Square brackets ( [ and ] ) identify an option al paramete r. If you use
shown in a special typeface. Ex ample s use a bold version of the special typeface for emphasis; interactive displays use a bold version of the special type face to dist inguish comman ds that yo u enter from items that the system displays (such as prompts, command output, error messages, etc.).
an optional parameter, you specify the information within the brackets. Unless t he sq uar e brac k ets a re in a bold typeface, do not enter the brackets themselves.
P
S
D
+
P
P
G
Trademarks
This manual uses an icon like the one to the left to identify information
that is specific to a particul ar type of s ystem. For e xampl e, thi s ico n identifies information that applies if you are using Codec Engine on a dual-processor GPP+DSP system.
The Texas Instruments logo and Texas Instruments are registered trademarks of Texas Instruments. Trademarks of Texas Instruments include: TI, DaVinci, XDS, Code Composer, Code Composer Studio, Probe Point, Code Explorer, DSP/BIOS, RTDX, Online DSP Lab, DaVinci, TMS320, TMS320C54x, TMS320C55x, TMS320C62x, TMS320C64x, TMS320C67x, TMS320C5000, and TMS320C6000.
MS-DOS, Windows, and Windows NT are trademarks of Microsoft Corporation.
UNIX is a registered trad emark of The O pen Grou p in the Un ited States and other countries.
Linux is a registered trademark of Linus Torvalds. Solaris, SunOS, and Java are trademarks or re gistered trademarks of
Sun Microsystems, Inc. All other brand, product na mes, and service names are trademark s or
registered trademarks of their respective companies or organizations.
iv

Contents

1 Codec Engine Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-1
This chapter introduces the Codec Engine.
1.1 What is the Codec Engine? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-2
1.2 Why Should I Use It? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-3
1.3 Where Does the Codec Engine Fit into My Architecture? . . . . . . . . . . . . . . . . . . . . . . .1-4
1.4 What Are the User Roles? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-6
1.4.1 Algorithm Creator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-6
1.4.2 Server Integrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-7
1.4.3 Engine Integrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-8
1.4.4 Application Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-8
1.5 Where Can I Get More Information? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-9
2 Configuring a Codec Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1
This chapter describes how the Server Integrator should configure a Codec Server for use by the Engine Integrator.
2.1 Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-2
2.1.1 What is a Codec Server? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-3
2.1.2 What is the Execution Flow? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-3
2.1.3 What About Single-Processor Systems? . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-5
2.1.4 What Algorithms Can a Codec Server Integrate? . . . . . . . . . . . . . . . . . . . . .2-6
2.1.5 What Examples Exist? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-6
2.1.6 What is the Config Kit?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-6
2.2 Creating a Codec Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-7
2.2.1 Creating a Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-7
2.2.2 Editing the Package Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-8
2.2.3 Editing the Codec Server Configuration Script. . . . . . . . . . . . . . . . . . . . . . . .2-8
2.2.4 Editing the DSP/BIOS Configuration Script . . . . . . . . . . . . . . . . . . . . . . . . .2-14
2.2.5 Editing the Build Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-15
2.2.6 Editing the Linker Command File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-16
2.2.7 Editing the main.c File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-16
2.2.8 Editing the makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-16
2.3 Delivering a Codec Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-16
2.3.1 Delivering Server Packages for Servers Built with XDC . . . . . . . . . . . . . . .2-17
2.3.2 Delivering Server Packages for Servers Built with Configuro-based makefiles . 2-17
v
-vi

Codec Engine Overview

This chapter introduces the Codec Engine.
Chapter 1
Topic Page
1.1 What is the Codec Engine? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1–2
1.2 Why Should I Use It?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1–3
1.3 Where Does the Codec Engine Fit into My Architecture?. . . . . . . . 1–4
1.4 What Are the User Roles? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1–6
1.5 Where Can I Get More Information? . . . . . . . . . . . . . . . . . . . . . . . . . 1–9
1-1
What is the Codec Engine?

1.1 What is the Codec Engine?

From the application developer’s perspective, the Codec Engine is a set of APIs that you us e to instantiate and run xDAIS algorithms. A VISA interface is provid ed as well for interacting with xDM -compliant xDAIS algorithms.
The API is the same for all of the following situations:
The algorithm may run locally (on the GPP) or remotely (on the DSP). The system may be a GPP+DSP, DSP only, or GPP only system. All supported GPPs and DSPs have the same API. All supported o perating systems have the same API. For example,
Linux, PrOS, VxWorks, DSP/BIOS, and WinCE.
P
S
D
+
P
P
G
This manual uses a n icon like the one to the left to identify in formation that is specific to a particular type of system. For example, this icon identifies informati on that applies if you are using Codec Engine on a dual-processor GPP+DSP system.
xDM is the eXpressDSP Algorithm Inter face Standard for Digital Media. It is sometimes referred to as xDAIS-DM.
Any xDM algorithm is compliant with the eXpressDSP Algorithm Interface Standard (xDAIS). Additionally, it implements the xDAIS-DM (xDM) interface, an exte nsion to the xDAIS standard that provides suppor t for digital media encoders, decoders, and codecs. The xDM specification defines APIs for digital media codecs by class, with e xtensions def ined for video, imaging, speech, and audio codec classes.
The xDM interfaces divide codec algorithms into four classes: Video, Image, Speech, and Audio (VISA). VISA reflects this xDM interface. One set of APIs is provided per codec class. Thus, MP3 can be replaced with WMA without changing the application source code. Only the configuration needs to be changed.
The Codec Engine also supports real-time, non-intrusive visibility into codec execution. It provides APIs for accessing memory and overall CPU usage statistics and execution trace information.
The Codec Engine ru ntime is suppl ied in binary form. Thus, app lication libraries built with same Codec Engine release are always compatible.
1-2

1.2 Why Should I Use It?

The Codec Engine is designed to solve some common problems associated with developing system-on-a-chip (SoC) applications. The most significant problems include:
Debugging in a heterogeneous processor environment can be
painful. There are multiple debuggers and complex bootstrapping.
Different implementations of the same algorithm, such as MP3, have
different APIs. Changing to a more efficient algorithm involves significant recoding.
Portability issues are compounded with two processors. You may
want to port to a different board with a newer DSP or a newer GPP.
Some algorithms may run on either the GPP or the DSP. To balance
system load, “low compl exity” algorith ms can run on a GP P, but the definition of “low” changes over time. If ch ang ing the locati on wher e the algorithm runs were easy, you wouldn’t have to weigh performance issues against the difficulty of changing the application.
For market success, most applications need to support multiple
codecs to handle the same type of media. For example, an application might need to support three or four audio formats.
Why Should I Use It?
P
S
D
+
P
P
G
Programmers with a GPP (general-purpose processor) view don’t
want to have to learn to be DSP progr ammers. They don’t want to have to worry about a DSP’s complex memory management and DSP real-time issues.
The Codec Engine ad dresses these problems by providing a standard software architecture and interface s for algor ithm exec ution. The Codec Engine is:
Easy-to-use. Application developers sp ecify what algorithm needs
to be run, not how or where.
Extensible and configurable. New algorithms can be added by
anyone, using standard tools and techniques.
Portable. The APIs are target, platform, and even codec
independent.
Codec Engine Overview 1-3
Where Does the Codec Engine Fit into My Architecture?

1.3 Where Does the Codec Engine Fit into My Architecture?

The application code (or the mid dle war e it use s) cal ls the Code c En gin e APIs. Within the Codec En gin e, the VI SA APIs use stub s an d skele tons to access the core engine an d the actu al code cs, which may be lo cal or remote.
The following figure shows the general architecture of an application that uses the Codec Engine. It also shows the user roles involved in creating various portio ns of the appl ication. Se e Section 1.4 , What Are th e User Roles? for more on user roles.
Role 4:
Application
Application
Author
Application
media middleware
media middleware
Codec Engine Runtime
Role 3:
Engine
Integrator
Core Engine SPIsCore Engine SPIs
VISA APIsCore Engine APIs
Video Encode
Video Encode
stubs
stubs
Role 2:
Server
Integrator
The application (or middl eware it uses) calls the core E ngine APIs and the VISA APIs. The VISA APIs use stubs to access the core engine SPIs (System Programming Interfaces) and the skeletons. The skeletons access the core engine SPIs and the VISA SPIs. The VISA SPIs access the underlying algorithms.
Core Engine
Runtime
Role 1:
Algorithm
Creator
Video Encode
Video Encode
skeleton
skeleton
VISA SPIs
VISA SPIsVISA SPIs
MP4 Encode
MP4 Encode
VC1 Encode
VC1 Encode
1-4
Where Does the Codec Engine Fit into My Architecture?
The following figure is a modification of the previous diagram that shows
P
S
D
+
P
P
G
how this architecture is distributed in a GPP+DSP system. In this example, yellow portions run on the G PP, and grey portions run on the DSP. This is, the video encoder skeleton and the v ideo encoder code cs are on the DSP and the application and vide o encoder stubs are on the GPP.
Application
media middleware
Codec Engine Runtime
VISA APIsCore Engine APIs VISA APIsCore Engine APIs
lo
Core Engine SPIsCore Engine SPIs
Core Engine
Runtime
app processor
app processor DSP Server
DSP Server
y
l
n
l o
a
c
Since Codec Eng ine is flexible, alterna te diagrams could be shown for GPP-only and DSP-only systems.
Video Encode
Video Encode
stubs
stubs
Video Encode
Video Encode
skeleton
skeleton
VISA SPIsVISA SPIs
MP4 Encode
MP4 Encode
VC1 Encode
VC1 Encode
Codec Engine Overview 1-5
Loading...
+ 25 hidden pages