This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MP3 and AAC codecs may not be compiled with CCS v.4 shipped with eZDSP USB STICK

Other Parts Discussed in Thread: TMS320VC5505, TMS320C5505

Compiling MP3 (Build ID: 01.00.00.004) and AAC (Build ID: 01.00.00.003) codecs for C55x family, downloaded from TI site and intended to be compiled with CCS v3.3, is not possible with Code Composer Studio v.4 , the version supplied with TMS320VC5505 eZDSP USB STICK (files referenced in the source code are not found/are missing) purchased in late March 2010.

 

I have downloaded MP3 (Build ID: 01.00.00.004) and AAC (Build ID: 01.00.00.003) codecs for C55x family from
http://software-dl.ti.com/dsps/dsps_public_sw/codecs/C55X_Audio/index_FDS.html
in order to test them on my TMS320VC5505 eZDSP USB STICK (possibly with the need of adaptation to the VC5505 board, as codecs are intended for the TMS320C5505 EVM) .
I have installed CCS v.4 coming on a CD with the eZDSP USB STICK.
MP3 and AAC codecs are intended for CCS v 3.3, DSP/BIOSTM version 5.31, Code Generation Tool version 4.3.3.
To try compilation with CCS v 4, I have
i) installed MP3 codec (c55x_mp3dec_1_00_00_004_production.exe), unzipped the ZIP file that has been placed in the installation directory;
ii) imported the MP3 codec sample project in CCS v4 (import legacy CCS v3. project); conversion have taken place from v.3.3 to v. 4.
Tryng buiding the projecy, file "alg.h" to be included in alg_create.c and other files cannot be found.

alg_create.c

#include <alg.h>


Such a file (alg.h) does not exist nor in the MP3 project folder, not in the CCS v4 installation folder.

Today I have tried compiling the AAC codec to look if there was a similar problem, similar problems occurred also for AAC. Moreover, importing the AAC project there was a message stating that macros being "imported" with AAC project conflicted with some existing macros. This anyway may be another problem, at the moment I cannot specify it in details, if I cannot solve it I will ask later.

I recognize that MP3 and AAC codecs are declared to be used with CCS v.3.3, but is it possibile to find a working version for CCS v.4, supplied  with the TMSVC5505 USB kit?

Thanks a lot, regards, Fab

  • The ALG libraries were removed from XDAIS beginning in XDAIS 5.00 (http://tiexpressdsp.com/index.php/XDAIS_FAQ#What_happened_to_the_ALG_libraries.3F).

    CCSv3 continues to provide the [very old] XDAIS 4 releases (which included these alg libraries).  CCSv4 is including the newer releases of XDAIS, where these alg libraries have been removed.  That's the background.

    To solve your problem, you can probably point your CCSv4 projects at the alg headers/libs in your CCSv3 installation (or copy them out of a system with CCSv3 installed onto your CCSv4 system).

    Chris

  • Thank you ,Chris.

    I have purchased a TMS320VC5505 eZDSP USB STICK, but it was shipped with the new version CCS v 4.

    On the TI web site, I haven't found the possibility to download CCS v3.3 for evaluation.

    Do you have an idea where to find XDAIS v. 4?

  • I have the same dilemma as Fab.  I am trying to bring my employer on board as a TI customer.  I have selected TI's C55x DSP family because TI provides a COTS audio compressor algorithm that can be run on a cost-effective processor.

    I, too, have bought an ezDSP USB STICK which shipped with CCSv4.  We have no recent history of TI DSP use, so I don't have a prior CCSv3 library on which to draw.  Your link to an explanation of the mechanism of the problem does not offer me a solution to it.  Its statement that "System integrators are recommended to use the Codec Engine framework, or DSKT2" doesn't at all help me as a system integrator trying to employ an algorithm developed under a different standard.  My goal here is plug-and-play.

    The E2E Community page on which TI announced the availablility of codecs for the C55x (http://e2e.ti.com/support/dsp/tms320c5000_power-efficient_dsps/f/109/p/10973/42714.aspx#42714) is dated less than a year ago, so these don't seem to be stale products.  [I notice that another customer who asked about licensing arrangements on that page never received a public answer.]  The "PRODUCT PREVIEW" for the AAC Encoder (http://software-dl.ti.com/dsps/dsps_public_sw/codecs/C55X_Audio/C55X_Audio_latest//MPEG4AAC_LC_Encoder_C55x_Datasheet_1_00_00_03.pdf) is dated just 8 months ago and the date of the actual library file aar_tni_rev2.l55l I downloaded is just 7 months ago.

    Will TI be bringing this apparently new product up to date for their current tool set, or at least provide us newcomers with resources to utilize them together?

    Please help me out here,

    Dan

     

  • Come to think of it, are these old CCSv3 / XDIAS 4 files actually needed to employ the AAC Encoder algorithm, or are they just necessary to build the demo program that comes with it?  Can I use the demo code as a template and just incorporate the aar_tni.h include file and the aar_tni_rev2.l55l library file in my design?

    Dan

     

  • CCSv3/XDAIS are required ot build sample test application only. Test harness release with codec package needs these header files. For actual end application, we can use the codec library along with codec interface header files.

    regards,

    Venkat  

  • OK, with a not-insignificant bit of massaging of the source code, I managed to get TestAppEncoder compiled and functional under CCS v4.  Much of it was a matter of replacing "ALG_" with "IALG_," but there were also some missing function prototypes that kept the code from compiling correctly and one function neglected to return a requisite value.  It would appear that this code was publicly posted without actually being debugged.  I also had to modify an #include search path that had one two many "../"s.

    Below is a summary of the edits I made to get it operational (mostly shown as commented-out lines followed by their replacement).

    Dan

    // =============================================================================

    aar.h:

    // >>>>>>>>>> #include <alg.h>

    // Missing function prototypes:
    // alg_create.c:
    IALG_Handle ALG_create(IALG_Fxns *fxns, IALG_Handle p, IALG_Params *params) ;
    Void ALG_delete(IALG_Handle alg) ;

    // >>>>>>>>>>    ALG_delete((ALG_Handle)handle);
        ALG_delete((IALG_Handle)handle);

    // =============================================================================

    aar.c:

    // >>>>>>>>>> #include <alg.h>
    #include <ialg.h>

    // >>>>>>>>>> handle->fxns->setParams(handle, encParams);
     return ( handle->fxns->setParams(handle, encParams) ) ;

    // =============================================================================

    alg_create.c:

    // >>>>>>>>>> #include <alg.h>

    // >>>>>>>>>> #include "_alg.h"

    // Missing function prototypes:
    // alg_malloc.c:
    Bool _ALG_allocMemory(IALG_MemRec memTab[], Int n);
    Void _ALG_freeMemory(IALG_MemRec memTab[], Int n);

    // >>>>>>>>>>ALG_Handle ALG_create(IALG_Fxns *fxns, IALG_Handle p, IALG_Params *params)
    IALG_Handle ALG_create(IALG_Fxns *fxns, IALG_Handle p, IALG_Params *params)

    // >>>>>>>>>>    ALG_Handle alg;
        IALG_Handle alg;

    // >>>>>>>>>>Void ALG_delete(ALG_Handle alg)
    Void ALG_delete(IALG_Handle alg)

    // =============================================================================

    alg_malloc.c:

    // >>>>>>>>>> #include <alg.h>
    #include <ialg.h>

    // >>>>>>>>>>Void ALG_activate(ALG_Handle alg)
    Void ALG_activate(IALG_Handle alg)

    // >>>>>>>>>>Void ALG_deactivate(ALG_Handle alg)
    Void ALG_deactivate(IALG_Handle alg)


    // =============================================================================

    TestAppEncoder.c:

    // Missing function prototypes:
    // aar.c:
    Int AAR_setParams(AAR_Handle handle, AAR_Params *encParams ) ;
    Void AAR_encode(AAR_Handle handle, Int *Input, Int *Output,Int numSamples, IAAR_OutArgs *outArgs) ;
    Void AAR_reset(AAR_Handle handle) ;


    // WHERE DID THESE COME FROM?
    // _rd_ok(_fp)
    // read(_fp->fd, (char *)fpos, num_left)
    // _buff_read(_fp)

    // >>>>>>>>>>void  empty_buffer(short* outBuffer,int size);
    void  empty_buffer(Int* outBuffer,int size);

    // >>>>>>>>>>short inpBuffer[FRAME_LEN_LONG*2];
    Int inpBuffer[FRAME_LEN_LONG*2];

    // >>>>>>>>>>short outpBuffer[1024];
    Int outpBuffer[1024];

    // >>>>>>>>>>int read_samples(short inBuffer[],int size);
    int read_samples(Int inBuffer[],int size);

    // >>>>>>>>>>  ALG_delete((ALG_Handle)enc);
      ALG_delete((IALG_Handle)enc);

    // >>>>>>>>>>int read_samples(short inBuffer[],int size)
    int read_samples(Int inBuffer[],int size)

    // >>>>>>>>>>    short* inputBuff = &inBuffer[0];
        Int* inputBuff = &inBuffer[0];

    // >>>>>>>>>>void  empty_buffer(short* outBuffer,int size)
    void  empty_buffer(Int* outBuffer,int size)

    // >>>>>>>>>> short* outputBuff = outBuffer;
     Int* outputBuff = outBuffer;

    // =============================================================================

     

  • To clarify, I've color-coded my changes, from what is commented-out or replaced
    to what is inserted or substituted (ignoring informative comments).

    Dan

    // =============================================================================

    aar.h:

    // >>>>>>>>>> #include <alg.h>

    // Missing function prototypes:
    // alg_create.c:
    IALG_Handle ALG_create(IALG_Fxns *fxns, IALG_Handle p, IALG_Params *params) ;
    Void ALG_delete(IALG_Handle alg) ;

    // >>>>>>>>>>    ALG_delete((ALG_Handle)handle);
        ALG_delete((IALG_Handle)handle);

    // =============================================================================

    aar.c:

    // >>>>>>>>>> #include <alg.h>
    #include <ialg.h>

    // >>>>>>>>>> handle->fxns->setParams(handle, encParams);
     return ( handle->fxns->setParams(handle, encParams) ) ;

    // =============================================================================

    alg_create.c:

    // >>>>>>>>>> #include <alg.h>

    // >>>>>>>>>> #include "_alg.h"

    // Missing function prototypes:
    // alg_malloc.c:
    Bool _ALG_allocMemory(IALG_MemRec memTab[], Int n);
    Void _ALG_freeMemory(IALG_MemRec memTab[], Int n);

    // >>>>>>>>>>ALG_Handle ALG_create(IALG_Fxns *fxns, IALG_Handle p, IALG_Params *params)
    IALG_Handle ALG_create(IALG_Fxns *fxns, IALG_Handle p, IALG_Params *params)

    // >>>>>>>>>>    ALG_Handle alg;
        IALG_Handle alg;

    // >>>>>>>>>>Void ALG_delete(ALG_Handle alg)
    Void ALG_delete(IALG_Handle alg)

    // =============================================================================

    alg_malloc.c:

    // >>>>>>>>>> #include <alg.h>
    #include <ialg.h>

    // >>>>>>>>>>Void ALG_activate(ALG_Handle alg)
    Void ALG_activate(IALG_Handle alg)

    // >>>>>>>>>>Void ALG_deactivate(ALG_Handle alg)
    Void ALG_deactivate(IALG_Handle alg)


    // =============================================================================

    TestAppEncoder.c:

    // Missing function prototypes:
    // aar.c:
    Int AAR_setParams(AAR_Handle handle, AAR_Params *encParams ) ;
    Void AAR_encode(AAR_Handle handle, Int *Input, Int *Output,Int numSamples, IAAR_OutArgs *outArgs) ;
    Void AAR_reset(AAR_Handle handle) ;
    // WHERE DID THESE COME FROM?
    // _rd_ok(_fp)
    // read(_fp->fd, (char *)fpos, num_left)
    // _buff_read(_fp)

    // >>>>>>>>>>void  empty_buffer(short* outBuffer,int size);
    void  empty_buffer(Int* outBuffer,int size);

    // >>>>>>>>>>short inpBuffer[FRAME_LEN_LONG*2];
    Int inpBuffer[FRAME_LEN_LONG*2];

    // >>>>>>>>>>short outpBuffer[1024];
    Int outpBuffer[1024];

    // >>>>>>>>>>int read_samples(short inBuffer[],int size);
    int read_samples(Int inBuffer[],int size);

    // >>>>>>>>>>  ALG_delete((ALG_Handle)enc);
      ALG_delete((IALG_Handle)enc);

    // >>>>>>>>>>int read_samples(short inBuffer[],int size)
    int read_samples(Int inBuffer[],int size)

    // >>>>>>>>>>    short* inputBuff = &inBuffer[0];
        Int* inputBuff = &inBuffer[0];

    // >>>>>>>>>>void  empty_buffer(short* outBuffer,int size)
    void  empty_buffer(Int* outBuffer,int size)

    // >>>>>>>>>> short* outputBuff = outBuffer;
     Int* outputBuff = outBuffer;

    // =============================================================================

  • Dear friends

    I had the same problem, but now I can compile TI's free audio codec test software successfully on C5515 eZdsp USBStick. 

    It seems my answer is too late, but I believe there are still  many friends in trouble, so I believe my post may help somebody.

    Please look following site and download Free  MP3 Player  software.

    http://www.elektor.com/magazines/2011/march/mp3-one-two-three.1706996.lynkx

    It  includes XDAIS module, so you can add link path to it.

    Also this software has a lot of useful examples.

    Yoichi Fujioka

  • Fujioka Yoichi said:

    Dear friends

    I had the same problem, but now I can compile TI's free audio codec test software successfully on C5515 eZdsp USBStick. 

    It seems my answer is too late, but I believe there are still  many friends in trouble, so I believe my post may help somebody.

    Please look following site and download Free  MP3 Player  software.

    http://www.elektor.com/magazines/2011/march/mp3-one-two-three.1706996.lynkx

    It  includes XDAIS module, so you can add link path to it.

    Also this software has a lot of useful examples.

    Yoichi Fujioka

    Hi  Yoichi Fujioka,

    I have downloaded this free MP3 player software from the above link and successfully compiled on C5515 eZdsp USBStick,but when I try to watch the CPU load it just has nothing.I wonder if you have the same question and do you konw how to solve it?

    Thanks very much!

    Regards,

    Chen

  • Hi my friend,

    I have downloaded the free MP3 plyer software and can complie it successfully on C5515 eZdsp USBStick,I use CCS5.2 to build the project.

    Now I want to watch the CPU load and count the decoding  time of per frame,but I can see nothing in the CPU load chart.Have you encountered the same problem?Thanks a lot!

    Regards,

    Chen