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.

XDC and JPEG encoder in with IMGENC1

Other Parts Discussed in Thread: TVP5158

Dear All,
I am trying to develop my application using the TVP5158 video driver from the Udworks DVRRDK1.1. The goal is to exploit the video capture driver in my code.

When I compile, however the linker does not locate the JPEG encode functions even if I think I put in the .cfg files all the necessary files. Below the linker error, the cfg and the cmd. I would kindly ask you if you have some suggestion to overcome this problem. The missing function should ne included in the IMGENC1 package but are not linked.

Thank you for your help.

 

Linking vdctf from codecs.o dvCPU.o main.o periodic_1.o speech.o udpserver.o vcapture.o vdctfwriter.o video.o demosrc/ctrl.o demosrc/uibuttons.o demosrc/ui.o vdctf_config/linker.cmd /home/user/workspace/dvr11/av_
capture/build/lib/mcvip_test.a /home/user/workspace/dvr11/av_capture/build/lib/mcvip.a /home/user/workspace/dvr11/av_capture/build/lib/alg.a /home/user/workspace/dvr11/av_capture/build/lib/drv.a /home/user/workspace/dvr11/av_capture/build/lib/image_tune.a /home/user/workspace/dvr11/av_capture/build/lib/osa.a /home/user/workspace/dvr11/av_capture/build/lib/csl.a /home/user/workspace/dvr11/av_capture/framework/alg/lib/alg_vstab.a..
/home/user/workspace/dvr11/av_capture/build/lib/alg.a(alg_jpgEnc.o): In function `ALG_jpgEncDelete':
alg_jpgEnc.c:(.text+0x1c): undefined reference to `IMGENC1_delete'
/home/user/workspace/dvr11/av_capture/build/lib/alg.a(alg_jpgEnc.o): In function `ALG_jpgEncRun':
alg_jpgEnc.c:(.text+0x148): undefined reference to `IMGENC1_process'
/home/user/workspace/dvr11/av_capture/build/lib/alg.a(alg_jpgEnc.o): In function `ALG_jpgEncSetQvalue':
alg_jpgEnc.c:(.text+0x23c): undefined reference to `IMGENC1_control'
alg_jpgEnc.c:(.text+0x25c): undefined reference to `IMGENC1_control'
/home/user/workspace/dvr11/av_capture/build/lib/alg.a(alg_jpgEnc.o): In function `ALG_jpgEncCreate':
alg_jpgEnc.c:(.text+0x42c): undefined reference to `IMGENC1_create'
collect2: ld returned 1 exit status

 

 

/* this file was generated by linkcmd.xdt from the gnu.targets package */
/* function aliases */

/* input libraries */
INPUT(
    "/home/user/workspace/vdctf/vdctf_config/package/cfg/vdctf_x470MV.o470MV"
    "/home/user/dvsdk_2_10_01_18/dvsdk_demos_2_10_00_17/packages/ti/sdo/simplewidget/lib/simplewidget_dm365.a470MV"
    "/home/user/dvsdk_2_10_01_18/dmai_1_21_00_10/packages/ti/sdo/dmai/lib/dmai_linux_dm365.a470MV"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/image1/lib/release/imgdec1.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/image1/lib/release/imgenc1.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/image/lib/release/image.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/video2/lib/release/viddec2.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/video1/lib/release/viddec1.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/video1/lib/release/videnc1.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/video/lib/release/video.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/audio1/lib/release/auddec1.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/audio1/lib/release/audenc1.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/audio/lib/release/audio.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/speech1/lib/release/sphdec1.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/speech1/lib/release/sphenc1.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/speech/lib/release/speech.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/lib/release/ce.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/ipc/linux/lib/release/ipc_linux.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/alg/lib/release/Algorithm_noOS.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/alg/lib/release/alg.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/osal/linux/lib/release/osal_linux_470.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/node/lib/release/node.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/utils/xdm/lib/release/XdmUtils.av5T"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/ires/edma3chan/lib/release/edma3Chan.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/edma3/lib/release/edma3.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/rman/lib/release/rman.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/ires/nullresource/lib/release/nullres.a470MV"
    "/home/user/dvsdk_2_10_01_18/dm365_codecs_01_00_06/packages/ti/sdo/codecs/jpegdec/lib/libjpgdec.a"
    "/home/user/dvsdk_2_10_01_18/dm365_codecs_01_00_06/packages/ti/sdo/codecs/jpegdec/lib/libimx.a"
    "/home/user/dvsdk_2_10_01_18/dm365_codecs_01_00_06/packages/ti/sdo/codecs/jpegenc/lib/libjpgenc.a"
    "/home/user/dvsdk_2_10_01_18/dm365_codecs_01_00_06/packages/ti/sdo/codecs/jpegenc/lib/libimx.a"
    "/home/user/dvsdk_2_10_01_18/dm365_codecs_01_00_06/packages/ti/sdo/codecs/h264enc/lib/h264venc_ti_arm926.a"
    "/home/user/dvsdk_2_10_01_18/dm365_codecs_01_00_06/packages/ti/sdo/codecs/h264enc/lib/dma_ti_dm365.a"
    "/home/user/dvsdk_2_10_01_18/dm365_codecs_01_00_06/packages/ti/sdo/codecs/mpeg4enc/lib/libmp4enc.a"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/ires/addrspace/lib/release/addrspace.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/hdvicpsync/lib/release/hdvicpsync.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/vicpsync/lib/release/vicpsync.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/ires/vicp/lib/release/vicp.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/ires/hdvicp/lib/release/hdvicp.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/acpy3/lib/release/acpy3.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/dman3/lib/release/dman3Cfg.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/utils/lib/release/rmm.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/utils/lib/release/smgr.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/utils/lib/release/rmmp.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/utils/lib/release/smgrmp.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/utils/lib/release/shm.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/utils/trace/lib/release/gt.a470MV"
    "/home/user/dvsdk_2_10_01_18/framework_components_2_24/packages/ti/sdo/fc/memutils/lib/release/memutils.a470MV"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/bioslog/lib/release/bioslog.av5T"
    "/home/user/dvsdk_2_10_01_18/codec_engine_2_24/examples/ti/xdais/dm/examples/g711/lib/g711.av5T"
    "/home/user/dvsdk_2_10_01_18/linuxutils_2_24_02/packages/ti/sdo/linuxutils/cmem/lib/cmem.a470MV"
    "/home/user/dvsdk_2_10_01_18/linuxutils_2_24_02/packages/ti/sdo/linuxutils/edma/lib/edma.a470MV"
    "/home/user/dvsdk_2_10_01_18/linuxutils_2_24_02/packages/ti/sdo/linuxutils/vicp/lib/vicp.a470MV"
    "/home/user/dvsdk_2_10_01_18/xdctools_3_15_01_59/packages/gnu/targets/rts470MV/lib/gnu.targets.rts470MV.a470MV"
)

 

/*  ============================================================================
 *   Copyright (c)  Texas Instruments Incorporated 2009
 *
 *   Use of this software is controlled by the terms and conditions found in the
 *   license agreement under which this software has been supplied or provided.
 *  ============================================================================
 */
/* Load support for the Codec Engine OSAL */
var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
osalGlobal.runtimeEnv = osalGlobal.LINUX;

/* Load support for the 'Davinci Multimedia Application Interface' module */
var DMAI = xdc.loadPackage('ti.sdo.dmai');

/* Load support for SimpleWidget */
var SW = xdc.loadPackage('ti.sdo.simplewidget');

environment['xdc.cfg.check.fatal'] = 'false';


var RMAN = xdc.useModule('ti.sdo.fc.rman.RMAN');
RMAN.useDSKT2 = false;
RMAN.persistentAllocFxn = "__ALG_allocMemory";
RMAN.persistentFreeFxn = "__ALG_freeMemory";
RMAN.semCreateFxn = "Sem_create";
RMAN.semDeleteFxn = "Sem_delete";
RMAN.semPendFxn = "Sem_pend";
RMAN.semPostFxn = "Sem_post";
RMAN.tableSize = 10;

var EDMA3 = xdc.useModule('ti.sdo.fc.edma3.Settings');

var vicp = xdc.useModule('ti.sdo.linuxutils.vicp.VICP');

var HDVICP = xdc.useModule('ti.sdo.fc.ires.hdvicp.HDVICP');

var VICP = xdc.useModule('ti.sdo.fc.ires.vicp.VICP2');

var VICPSYNC = xdc.useModule('ti.sdo.fc.vicpsync.VICPSYNC');

var HDVICPSYNC = xdc.useModule('ti.sdo.fc.hdvicpsync.HDVICPSYNC');

var VICP = xdc.useModule('ti.sdo.fc.memutils.MEMUTILS');

DDRSPACE = xdc.useModule('ti.sdo.fc.ires.addrspace.ADDRSPACE');

var EDMA3CHAN = xdc.useModule('ti.sdo.fc.ires.edma3chan.EDMA3CHAN');

var LSP = xdc.useModule('ti.sdo.linuxutils.edma.EDMA');

var CMEM = xdc.useModule('ti.sdo.linuxutils.cmem.CMEM');

var ALG_MEM = xdc.useModule('ti.sdo.ce.alg.Settings');
ALG_MEM.useHeap = true;

xdc.loadPackage("ti.sdo.ce.video2");
xdc.loadPackage("ti.sdo.fc.hdvicpsync");
xdc.loadPackage("ti.sdo.ce.image1");

/*
 *  ======== Engine Configuration ========
 */

var MPEG4ENC = xdc.useModule('ti.sdo.codecs.mpeg4enc.ce.MPEG4ENC');
var H264ENC = xdc.useModule('ti.sdo.codecs.h264enc.ce.H264ENC');
var G711ENC = xdc.useModule('ti.sdo.ce.examples.codecs.g711.G711ENC');
var JPEGENC = xdc.useModule('ti.sdo.codecs.jpegenc.ce.JPEGENC');
var JPEGDEC = xdc.useModule('ti.sdo.codecs.jpegdec.ce.JPEGDEC');


var LogServer = xdc.useModule('ti.sdo.ce.bioslog.LogServer');
var IMGMOD = xdc.useModule('ti.sdo.ce.ICodec');




var Engine = xdc.useModule('ti.sdo.ce.Engine');
var myEngine = Engine.create("encode", [

    {name: "mpeg4enc", mod: MPEG4ENC, local: true, groupId: 1},
    {name: "h264enc", mod: H264ENC, local: true, groupId: 1},
    {name: "g711enc", mod: G711ENC, local: true},
    {name: "jpegenc", mod: JPEGENC, local: true, groupId: 1},  
    {name: "jpegdec", mod: JPEGDEC, local: true, groupId: 1}, 
]);




algSettings = xdc.useModule('ti.sdo.ce.alg.Settings');
algSettings.useCache = true;



// era commentato
//xdc.loadPackage('ti.sdo.fc.ires.vicp').profile = "debug_trace";
//xdc.loadPackage('ti.sdo.fc.ires.edma3chan').profile = "debug_trace";
//xdc.loadPackage('ti.sdo.fc.rman').profile = "debug_trace";
//xdc.loadPackage('ti.sdo.fc.edma3').profile = "debug_trace";
//EDMA3CHAN.trace = true;
//EDMA3CHAN.debug = true;
// fine era commentato



Program.main = null;

 

  • My hunch is this is an issue of library link order, since the missing symbols (e.g. IMGENC1_delete) are present in a library that's in your linker.cmd (/home/user/dvsdk_2_10_01_18/codec_engine_2_24/packages/ti/sdo/ce/image1/lib/release/imgenc1.av5T).

    Some background on gcc's link order is here:

        http://www.network-theory.co.uk/docs/gccintro/gccintro_18.html

    What happens if you put the config-generated linker.cmd file _last_ on your list of libraries/object files to link in?  In this specific case, ensure it's after /home/user/workspace/dvr11/av_capture/build/lib/alg.a.

    Chris

  • Thank you Chris!!!

       you were right, the problem was in the link order, a simple swap in the makefile fixed the issue. I didn't think about it, you save me from wasting a lot of time.

    So I would remember this rule to all the readers:

    "a library containing the definition of a function should appear after any source files or object files which use it"

     

    Mario