Hello all,

 

I'm trying to use a Codec Engine that utilizes a codec that was shipped
to us by TI.

The library I received is a '.l64P' file. I've followed directions on
both sprued6.pdf to package the library, and directions from spraae7.pdf
to make algorithm package. 

 

Everything seems to compile (although with some warnings, see below),
but when I try to Engine_open() the encoder engine, I get a
Engine_EDSPLOAD error. Other codec engines,

i.e the one supplied with the DVEVM, works just fine.

 

The contents of the different files needed for the build process (as I
understand it) are attached in the

Contents.txt file. A couple of questions which remain unclear to me - is
the package.xs file used in both the codec and the server build process?
Also note that I get the following warning when building the server:

 

" >> warning: creating output section .tables without SECTIONS
specifications "

 

What does that mean and how do I overcome this? (my guess that it has
something to do with the definitions in the MODULE.xdc file, but I can't
get much from that).

 

Regards,

Avishai.

Contents of the different packaging files:
------------------------------------------

* in ../examples/codecs/h264venc_ti:

package.xdc:

        package codecs.h264venc_ti {
            module H264VENC_TI;
        }
------------------------------------

package.xs:

        function getLibs(prog)
        {
                var lib = null;

                if (prog.build.target.isa == "64P") {
                lib = "lib/h264venc_ti.l64P";
                print("    will link with " + this.$name + ":" + lib);
                }
        return (lib);
        }
------------------------------------

H264VENC_TI.xdc:

        metaonly module H264VENC_TI inherits ti.sdo.ce.video.IVIDENC
        {
            override readonly config String ialgFxns = "H264VENC_TI_IALG";
            override readonly config String idma3Fxns = "H264VENC_TI_IDMA3";
        }
------------------------------------

H264VENC_TI.xs:

        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 (8092);
        }
------------------------------------

package.bld: empty file

../examples/codecs/h264venc_ti/lib contains h264venc_ti.l64P

* in ../examples/servers/h264venc_ti:

package.xdc:
        package codecs.h264venc_ti {
            module H264VENC_TI;
        }
------------------------------------

package.xs:
        function getLibs(prog)
        {
                var lib = null;

                if (prog.build.target.isa == "64P") {
                lib = "lib/h264venc_ti.l64P";
                print("    will link with " + this.$name + ":" + lib);
                }
        return (lib);
        }
-----------------------------------

h264venc_ti.cfg:
/* set up OSAL */
var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
 osalGlobal.runtimeEnv = osalGlobal.DSPLINK_BIOS;

 /* activate BIOS logging module */
 var LogServer = xdc.useModule('ti.sdo.ce.bioslog.LogServer');

 /* get various codec modules; i.e., implementation of codecs */
 var H264VENC_TI= xdc.useModule('codecs.h264venc_ti.H264VENC_TI');
 
 /*
 *  ======== Server Configuration ========
 */
 var Server = xdc.useModule('ti.sdo.ce.Server');
 Server.threadAttrs.priority = Server.MINPRI;

 Server.algs = [
 {name: "h264venc_ti", mod: H264VENC_TI, threadAttrs: {
 stackSize: 8092, stackMemId: 0, priority: Server.MINPRI + 1}
 },
 ];

 /*
 * Note that we presume this server runs on a system with DSKT2 and DMAN3,
 * so we configure those modules here.
 */

/* we can use DMA in certain codecs! */
/*H264VENC_TI.useDMA = true;*/

/*
 *  ======== DSKT2 (XDAIS Alg. memory alocation ) configuration ========
 */
var DSKT2 = xdc.useModule('ti.sdo.fc.dskt2.DSKT2');
DSKT2.DARAM0     = "DDRALGHEAP";
DSKT2.DARAM1     = "DDRALGHEAP";
DSKT2.DARAM2     = "DDRALGHEAP";
DSKT2.SARAM0     = "DDRALGHEAP";
DSKT2.SARAM1     = "DDRALGHEAP";
DSKT2.SARAM2     = "DDRALGHEAP";
DSKT2.ESDATA     = "DDRALGHEAP";
DSKT2.IPROG      = "DDRALGHEAP";
DSKT2.EPROG      = "DDRALGHEAP";
DSKT2.DSKT2_HEAP = "DDR";

/*
 * None of the copy codecs use scratch, but this example shows how to reserve
 * 1 kB of DARAM and SARAM for scratch group 0.
 */
DSKT2.DARAM_SCRATCH_SIZES = [ 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
DSKT2.SARAM_SCRATCH_SIZES = [ 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

/*
 *  ======== DMAN3 (DMA manager) configuration ========
 *  We assume PaRams 0..95 are taken by the Arm drivers. We reserve
 *  all the rest, up to 127 (there are 128 PaRam sets on DM6446).
 *  DMAN3 takes TCC's 32 through 63 (hence the High TCC mask is 0xFFFFFFFF
 *  and the Low TCC mask is 0).
 */
var DMAN3 = xdc.useModule('ti.sdo.fc.dman3.DMAN3');
DMAN3.heapInternal = "L1DHEAP";
DMAN3.heapExternal = "DDR";

DMAN3.paRamBaseIndex     = 96;
DMAN3.numPaRamEntries    = 32;
DMAN3.tccAllocationMaskH = 0xffffffff;
DMAN3.tccAllocationMaskL = 0x00000000;

Program.main = Program.system = null;
-----------------------------------

package.bld:
var serverName = "h264venc_ti";

Pkg.attrs.profile = "debug";

Pkg.uses = ["ti/bios/include"];

for (var i = 0; i < Build.targets.length; i++) {
    var targ = Build.targets[i];

    if (targ.os == "Linux") {
        /* Linux doesn't host remote codecs (yet) */
        continue;
    }
    else {
        /* presume we're building a full server executable */
        print("building for target " + targ.name + " ...");

        Pkg.addExecutable(serverName, targ, targ.platform,
            {
                cfgScript: serverName + ".tcf",
                lopts: "-l link.cmd",
            }).
            addObjects( [
                "main.c",
            ] );
    }
}
-----------------------------------


_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to