How to use a RTSC codec package in a non-RTSC environment

From Texas Instruments Embedded Processors Wiki

Jump to: navigation, search
Translate this page to   

Contents

Introduction

The typical release model for Texas Instruments codecs is in a RTSC codec package. In that package there is also a bunch of 'meta-data' in a ce/ sub-folder that communicates important data to the Codec Engine framework such as the getDaramScratchSize() method as shown here. Armed with this extra data the CE framework can do a better job allocating the right scratch memory, stack size and other resources for the algorithms in the system.

However there are many customers that have their own framework or are developing on platforms which do not have a DVSDK such as the TMS320C6455 device.

The purpose of this article is to show how to use the existing RTSC codec packages in a non-RTSC, non-Codec-Engine environment.

It is pretty simple :-)

What's in the codec package?

Let's look at an AAC audio decoder on the c64+ Instruction Set Architecture.

Dm6446 aachedec dir screenshot.jpg

Let's briefly describe what's in here: -

What do I really need as a non-RTSC, non-CE user?

Not much! In this example, to build your application you only need the following: -

So...you might ask "why do I need all this other baggage?". Fair question however, to compare, there's probably 1 gb of stuff in C:/WINDOWS that you may or may not use. There's value in just having 1 package, 1 version from a maintenance and test standpoint. The extra stuff won't eat much hard-disk space.

What does the Client sample app do?

It is a file-driven application i.e. in the above case it reads in frames of an encoded AAC file, decodes them using the AAC HE Decoder library, and optionally outputs the decoded result to a file.

Typically it does not use DSP/BIOS although the BCACHE module is used (it has no configuration parameters nor deep dependencies hence can be used standalone).

It does not leverage any PSP peripheral drivers, nor is it real-time. It can typically be run on a Simulation platform such as the c64+ Cycle Accurate Simulator in CCS.

It is intended to show a simple working example. It also helps with understanding the application side usage of XDM, although the DMAI sample applications are a better reference for 'XDM compliance'.

How do I know which XDM / VISA interface version this codec implements?

Good question. This is important to know so that your application matches up to the codec package from an interface perspective. IAUDDEC is not the same as IAUDDEC1. Do not try to 'cram in' an IAUDDEC1 based codec into an application that is expecting IAUDDEC codecs!!

Unfortunately, at this time, there is no easy way for the build system to say "you're using a mismatched interface" especially in a non-RTSC, non-Codec-Engine environment.

Here are some methods to confirm the XDM interface version: -

IAUDDEC_Fxns *iaudDecFxns;
metaonly module AACHEDEC inherits ti.sdo.ce.audio.IAUDDEC
{
    readonly config ti.sdo.codecs.aachedec.AACHEDEC.Module alg =
        ti.sdo.codecs.aachedec.AACHEDEC;
 
    override readonly config String ialgFxns = "AACDEC_TII_IAACDEC";
}
[alan@lab1 lib]$ strings aacdec_tii_e.l64P | grep AUDDEC

IAUDDEC_Cmd
IAUDDEC_Status
IAUDDEC_Status
IAUDDEC_Fxns
IAUDDEC_Obj
IAUDDEC_Handle
IAUDDEC_DynamicParams
...

An XDM 1.0 version would obviously show the AUDDEC1_ prefix instead.

I changed my mind. I do want to use this codec within Codec Engine

Aha! Then read the wiki topics on the RTSC Codec and Server package wizards. These provide all the details on exactly what the rest of the codec package does, and how to use it from a system integrator perspective.

E2e.jpg For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article How to use a RTSC codec package in a non-RTSC environment here.
Hyperlink blue.png Links
ARM Microcontroller MCU ARM Processor Digital Media Processor Digital Signal Processing Microcontroller MCU Multi Core Processor
Ultra Low Power DSP 8 bit Microcontroller MCU 16 bit Microcontroller MCU 32 bit Microcontroller MCU

Leave a Comment

Comments

Comments on How to use a RTSC codec package in a non-RTSC environment


Joerngr said ...

I find this article should be worked through to become freed from the implicit assumption, that all users was CCS and Windows users.

Especially when combination with other development frameworks is needed in most cases a pure, makefile-based approach will help a lot. In parts this is already spoken about here, but I mean it should be driven more consequently and by how-to-steps being more abstract but detailed.

And the main theme of this article (use RTSC codec package in a non-RTSC environment) in my opinion should include the way developing a codec package with CE use and cover that by a small wrapper API for linkage to other projects - or how the combination of several codecs should be handled else?

So far the last "I changed my mind..." chapter leads not to the right place, because it assumes that the combination with an other development framework would possible to give it up by such a mind change concerning making use of codec engine.

--Joerngr 06:05, 30 June 2011 (CDT)

Joerngr said ...

P.S. Of course, if I would already be sure about all details, I would change this article by myself - or write an alternative one. But at the moment I have to leave that to those being actually experienced enough. Thatswhy I wrote this comment above, because I fear, that if having enough experience the memory got lost which points had been most open at the beginning... So it's a future note for me, too.

--Joerngr 06:11, 30 June 2011 (CDT)

Personal tools
Namespaces
Variants
Actions
Navigation
Print/export
Toolbox