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.

HEVC encoder 2.0.0.0 issues

Hi,

I'm using HEVC encoder 2.0.0.0 from this thread: http://e2e.ti.com/support/embedded/multimedia_software_codecs/f/356/t/403601

I'm experiencing the following issues:


1) Looks like HEVC  encoder 2.0.0.0 package is not well formed. Unlike other codecs it doesn't link with the library when I do xdc.loadPackage in app.cfg

2) When parameters are incorrect HEVC just fails in algInit with -1. Is there any way to understand what exactly is wrong?

3) HEVC encoder creates 2 barriers with the same name on the same core - one multi DSP and another multi core. It breakes multicore API rules. I created workaround for this but still it looks like a bug that may lead to confusion. Logs:

swbarr name=H265Ebarrier9 user_id=0 num_users=2 user_ids=0,8

swbarr name=H265Ebarrier9 user_id=1 num_users=8 user_ids=0,1,2,3,4,5,6,7

Full logs: 7635.logs.zip

Regards,

Andrey Lisnevich

  • Andrey,

    For 1) could you please share your app.cfg? how do you typically link codecs with the library?

    Trying to understand better the issue.

    thank you,

    Paula

  • Hi Paula,


    I treat codecs as XDC packages. I add path to codecs to XDC Package Repositories of my project like:

    /opt/ti/Codecs/C66x_h264hpvenc_01_00_02_00_ELF/packages
    /opt/ti/Codecs/C66x_h264hpvdec_01_01_04_03_ELF/packages
    /opt/ti/Codecs/C66x_mpeg2vdec_02_02_01_08_ELF/packages

    Then you can use the packages in app.cfg like:

    xdc.loadPackage("ti.sdo.codecs.h264hpvenc");
    xdc.loadPackage("ti.sdo.codecs.mpeg2vdec");
    xdc.loadPackage("ti.sdo.codecs.h264hpvdec");

    But with HEVC it doesn't work because XDC package doesn't involve linking with the codec library.

    Regards,

    Andrey Lisnevich

  • Hi Andrey, being honest, I am not familiar with using xdc.loadPackage with the codecs but I tried xdc.loadPackage("ti.sdo.codecs.h265venc"); inside HEVC test aplication h265venc.cfg and I was able to build and run h265venc_ti_c66x.out 

    I tested CCS test application C66x_h265venc_02_00_00_00_ELF version 

    Please let me know which errors or messages are you getting when trying to use xdc.loadPackage or if I am missing something.

    thank you,

    Paula

  • Hi Paula,


    I am not an expert in this also. I just know that it works with other codecs and doesn't work with HEVC.

    This is package.xs from H.264 HP encoder that involves linking with codec's library:

    /*
     *  ======== package.xs ========
     *
     */
    
    /*
     *  ======== getLibs ========
     */
    function getLibs(prog)
    {
        var lib = null;
      
        if (prog.build.target.isa == "66") {        
            if ( this.H264HPVENC.watermark == false ) {
                    lib = "lib/h264hpvenc_ti.le66";
            }
            else {
                    lib = null;
            }
            print("    will link with " + this.$name + ":" + lib);
        }
        return (lib);
    }
    
    /*
     *  ======== getSects ========
     */
    function getSects()
    {
        var template = null;
    
        if (Program.build.target.isa == "66") {
            template = "ti/sdo/codecs/h264hpvenc/link.xdt";
        }
    
        return (template);
    }

    And this is H265VENC.xs from HEVC encoder that doesn't link with the library:

    /*
     *  ======== H265VENC.xs ========
     *  This file implements the functions specified in the ti.sdo.ce.ICodec
     *  interface.  These functions enable the configuration tool to validate
     *  user supplied configuration parameters (e.g., stack size for the
     *  thread running this codec).
     */
    
    var verbose = false;   /* set to true to enable verbose output during config */
    
    /*
     *  ======== getStackSize ========
     */
    function getStackSize(prog)
    {
        if (verbose) {
            print("getting stack size for " + this.$name
                + " built for the target " + prog.build.target.$name
                + ", running on platform " +  prog.platformName);
        }
    
        return (1024);
    }
    
    /*
     *  ======== getDaramScratchSize ========
     */
    function getDaramScratchSize(prog)
    {
        if (verbose) {
            print("getting DARAM scratch size for " + this.$name
                + " built for the target " + prog.build.target.$name
                + ", running on platform " +  prog.platformName);
        }
    
        return (0);
    }
    
    /*
     *  ======== getSaramScratchSize ========
     */
    function getSaramScratchSize(prog)
    {
        if (verbose) {
            print("getting SARAM scratch size for " + this.$name
                + " built for the target " + prog.build.target.$name
                + ", running on platform " +  prog.platformName);
        }
    
        return (0);
    }

    Regards,
    Andrey Lisnevich

  • Hi Andrey,

    Query 1 : Unable to link with the library through xdc.loadPackage in app.cfg

    [Palachandra] :  Build the package using old approach, I have attached the RTSC package, can you please try linking the library using xdc load package.

    Query 3 : Barriers with the same name on the same core

    [Palachandra] : It looks like barrier name conflict issue is resolved in the new release package.

    C66x_h265venc_02_00_00_02_ELF.7z


    Thanks and Regards

    Palachandra M V

  • Thanks Palachandra,

    Now HEVC encoder links correctly through xdc package.

    Regards,
    Andrey Lisnevich
  • Hi Andrey,

    Thank you for your reply, It looks like the issue in the above thread is resolved, if anything is pending please let us know else can you please help us in closing the thread.

    Regards
    Palachandra M V