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