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.

Latest Video Codecs Build errors.

Other Parts Discussed in Thread: TMS320DM648, CCSTUDIO

Hello There:

I'm using the TMS320DM648 evaluation board and I have another problem with linking my project using the latest H.264 video codecs:

"[setup.cfg] "C:\Program Files\Texas Instruments\xdctools_3_10_02\xs.exe" xdc.tools.configuro.ccs  --xdcpathsfile="xdcpaths.dat" -tti.targets.C64P -pti.platforms.evmDM648 -rdebug --tcf -Dconfig.importPath=".../C:/dvsdk_1_10_00_14_DM648/examples/common/evmDM648" -w -c "C:/Program Files/Texas Instruments/C6000 Code Generation Tools 6.1.9" --xp "C:/CCStudio_v3.3/bios_5_33/packages" -o "xdcconfig" setup.cfg

Info: running XDC configuration using package path:
C:\dvsdk_1_10_00_14_DM648\codec_engine_2_23_01\packages
C:\dvsdk_1_10_00_14_DM648\codec_engine_2_23_01\examples
C:\dvsdk_1_10_00_14_DM648\codec_engine_2_23_01\cetools\packages
C:\dvsdk_1_10_00_14_DM648\framework_components_2_23_01\packages
C:\dvsdk_1_10_00_14_DM648\xdais_6_23\packages
C:\dvsdk_1_10_00_14_DM648\codecs_1_14_enc_evmDM648\packages
C:\dvsdk_1_10_00_14_DM648\codecs_2_00_dec_evmDM648\packages
C:\dvsdk_1_10_00_14_DM648\ndk_1_94_0_0_eval\packages
C:\dvsdk_1_10_00_14_DM648\biosutils_1_00_02\packages
C:\dvsdk_1_10_00_14_DM648\pspdrivers_1_10_01\packages
C:\dvsdk_1_10_00_14_DM648\edma3_lld_1_06_00_01\packages
C:\dvsdk_1_10_00_14_DM648\examples\common\evmDM648
C:\CCStudio_v3.3\bios_5_33\packages
C:\Program Files\Texas Instruments\xdctools_3_10_02\packages"

And the error that is generated is:

"<Linking>

 undefined              first referenced                                           
  symbol                    in file                                                
 ---------              ----------------                                           
 _H264VDEC_TI_IDMA3     C:\projects\DM648MCh+C\xdcconfig\package\cfg\setup_x64P.o64P
 _H264VDEC_TI_IH264VDEC C:\projects\DM648MCh+C\xdcconfig\package\cfg\setup_x64P.o64P
 _H264VENC_TI_IDMA3     C:\projects\DM648MCh+C\xdcconfig\package\cfg\setup_x64P.o64P
 _H264VENC_TI_IH264VENC C:\projects\DM648MCh+C\xdcconfig\package\cfg\setup_x64P.o64P

error: unresolved symbols remain
error: errors encountered during linking;
   "C:/projects/DM648MCh+C/Debug/DM468MCh&C.out" not built"

Does anyone have an idea of how to solve it?

Thank you;

Gabriel

  • The first thing I would do is check the codec data-sheet (should have been included along with the codec deliverable) to ensure that it is compatible with the software component versions on your build tree. 

  • Hi Juan:

    Thanks for your response. I have checked the versions and this is what I found:

                           CODEC                                                MyProject

    CCS               3.3.24.1                                                  3.3.81.1            Code compose studio

    CGT               6.0.7                                                        6.1.9                 Code generation tools

    DSP/BIOS     5.31                                                         5.33                  DSP/BIOS

    FC                   1.10.1                                                     2.23.01             Frame component

    In summary, the project is using more up to date versions of the components than the ones used by the CODECS. Is it possible that using an updated component can break the build? or could it be another thing? This is because I would like to keep the latest version of these components.

    Thanks;

    Gabriel

  • For the most part you are correct and using newer software components should be ok; however, the one that catches my attention is framework components...,  seems like a big jump in version numbers that may include signicant changes.  Does the codec data-sheet list a codec engine version?

  • In short, it looks like the codec library is not being added to the link line, and the codec-defined symbols (e.g. _H264VDEC_TI_IDMA3) are therefore unresolved.

    During the config phase, do you get a bunch of "    will link with ..." statements (which help indicate the list of libraries that will be linked into the final .out file)?  Does the codec you're integrating (H264VDEC?) name any libraries in the "    will link with ..." output?

    The [long] list of libraries being linked in contained in an internal file that ends with the ".xdl" extension.  Do you find a file in your c:/projects/DM648MCh+C build directory (check subdirs) with that .xdl extension?  If so, does it list a codec library?

    In your codec package (maybe codecs_2_00_dec_evmDM648/packages/ti/codecs/h264vdec?) directory you should find a package.xs file that contains javascript.  That file should contain a function named "getLibs()".  Can you post the contents of that getLibs() function?

    As a last test, if you add the codec's library explicitly to the link line (via the CCS project settings), do the link errors go away?  (That's not the final solution, but might provide clues as to what else is going wrong)

    Chris

  • Hi Juan:

    The data-sheet doesn't specify the codec engine version, it only says:

    This release is validated on the following:
    • DM648/TNETV2685 EVM
    − Framework Component (FC) version 1.10.01
    − DSP/BIOSTM version 5.31
    − Code Generation Tool version 6.0.7

  • Hi Chris:

    Thank you very much for your response, these are the answers to your questions:

    During the config phase, do you get a bunch of "    will link with ..." statements (which help indicate the list of libraries that will be linked into the final .out file)?  Does the codec you're integrating (H264VDEC?) name any libraries in the "    will link with ..." output?

    Seems that is not including any library:   

    "   will link with ti.sdo.codecs.h264dec:null
        will link with ti.sdo.codecs.h264enc:null"

    The [long] list of libraries being linked in contained in an internal file that ends with the ".xdl" extension.  Do you find a file in your c:/projects/DM648MCh+C build directory (check subdirs) with that .xdl extension?  If so, does it list a codec library?

    No, it doesn't.

    In your codec package (maybe codecs_2_00_dec_evmDM648/packages/ti/codecs/h264vdec?) directory you should find a package.xs file that contains javascript.  That file should contain a function named "getLibs()".  Can you post the contents of that getLibs() function?

    /*

    * ======== getLibs ========

    */

    function getLibs(prog)

    {

       var lib = null;

       if (prog.build.target.isa == "64P") {

          if ( this.H264ENC.watermark == false ) {

             lib = null;

          }

          else {

             lib = "lib/h264venc_ti_e.l64P";

          }

          print(" will link with " + this.$name + ":" + lib);

       }

       return (lib);

    }

    As a last test, if you add the codec's library explicitly to the link line (via the CCS project settings), do the link errors go away?  (That's not the final solution, but might provide clues as to what else is going wrong)

    Yes, the errors go away.

    Could you please provide more information about the proper solution?

    Thank you.

     

  • Great feedback, thanks.

    Looks like getLibs() fxn - the javascript fxn that returns the list of libraries to link with for a given configuration - is returning null.  The getLibs() implementation shows that null will be returned if either 1) the target is not a "C64P", or 2) the H264ENC.watermark config param is set to false.  Given your configuro command line args (from your original post), you _are_ setting the 'target' to a "C64P" target (the -t option is ti.targets.C64P)... which leaves #2.

    I don't know the exact names of these variables/packages, but if you add "something like the following lines" to your setup.cfg script, getLibs() should return a library:

        var H264ENC = xdc.useModule('ti.sdo.codecs.h264enc.H264ENC');
        H264ENC.watermark = true;

    [ If you can't get the syntax right, just post your setup.cfg script and we can help. ]

    This will likely give you the 'watermarked' version of the codec, which I think is what the eval codecs typically provide.

    Chris

  • Hi Chirs:

    It worked, in the setup.cfg file the watermark was left as false. I have set it as true and now works fine.

    This is the piece of code in the .cfg file:

    "

    /* evalCombo decides whether to build application with Evaluation or product codecs */

    var evalCombo = true;

    if(evalCombo == true)

    {

       print("Configuring evaluation server to use watermarked codecs...");

       H264ENC.alg.watermark = true;

       H264DEC.alg.watermark = true;

       H264DEC.alg.dataSection = "IRAM";

       H264ENC.alg.dataSection = "IRAM";

     

    }

    else

    {

       print("Configuring evaluation server to use Product codecs...");

       H264ENC.alg.watermark = false;

       H264DEC.alg.watermark = false;

       H264DEC.alg.dataSection = "IRAM";

       H264ENC.alg.dataSection = "IRAM";

    }"

    Thank you very much for your help.

    Gabriel