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.

DM365 H264 Platinum codec integration

Hello,

Could you kindly help me with integration of the platinum h264 encoder into dvsdk 2.1.

Unfortunately, I get "segmentation fault", when calling VIDENC1_create()


I have followed the http://processors.wiki.ti.com/index.php/Migration/Integration_Guide_for_DM36x_H.264_version_2.x_codecs#How_to_integrate_ver_2.0_codec_in_existing_application.3F guide.
All required dvsdk components are up to date according to the encoder release notes.

cmemk.ko configuration:
insmod cmemk.ko phys_start=0x83800000 phys_end=0x88000000 allowOverlap=1 phys_start_1=0x00001000 phys_end_1=0x00008000 pools_1=1x28672

dvsdk configuration file:

var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
osalGlobal.runtimeEnv = osalGlobal.LINUX;

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;
RMAN.trace = true;
RMAN.debug = true;

dc.useModule('ti.sdo.fc.global.Settings').profile = "debug_trace";

var EDMA3 = xdc.useModule('ti.sdo.fc.edma3.Settings');
EDMA3.globalInit = true;
EDMA3.maxQdmaChannels = [10,10,10,10];
EDMA3.trace = false;
EDMA3.debug = false;
EDMA3.maxRequests = 128;



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


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

//Change this to VICP if the chip is not DM355
var VICP = xdc.useModule('ti.sdo.fc.ires.vicp.VICP2');
VICP.debug = true;

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



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

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

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

var MEMTCM = xdc.useModule('ti.sdo.fc.ires.memtcm.MEMTCM');
MEMTCM.cmemBlockId = 1; //Since we use _1 in our insmod command.

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

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

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"); 

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

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

/*
var MPEG4DEC = xdc.useModule('ti.sdo.codecs.mpeg4dec.ce.MPEG4DEC');
var H264DEC = xdc.useModule('ti.sdo.codecs.h264dec.ce.H264DEC');
var JPEGDEC = xdc.useModule('ti.sdo.codecs.jpegdec.ce.JPEGDEC');
var G711DEC = xdc.useModule('ti.sdo.ce.examples.codecs.g711.G711DEC');
*/

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

    {name: "g711enc", mod: G711ENC, local: true, groupId: 1},
    {name: "mpeg4enc", mod: MPEG4ENC, local: true, groupId: 1},
    {name: "jpegenc", mod: JPEGENC, local: true, groupId: 1}, 
    {name: "ktnf", mod: KTNF, local: true, groupId: 2},
    {name: "h264enc", mod: H264ENC, local: true, groupId: 1},
    /*
    {name: "g711enc", mod: G711ENC, local: true},
    {name: "mpeg4dec", mod: MPEG4DEC, local: true, groupId: 1},
    {name: "h264dec", mod: H264DEC, local: true, groupId: 1},
    {name: "jpegdec", mod: JPEGDEC, local: true, groupId: 1},    
    {name: "g711dec", mod: G711DEC, local: true},    
    */
]);

Program.main = null;

 

CE_DEBUG=3 log:

7610.h264_segfault.txt

 

Thank you in advance.

  • Hello,


    I figured out the reason for segmentation fault:
    I should have removed the following lines from the .cfg file:

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


    Dear TI support team,
    It could be really helpful to have a sample .cfg file, cmemk pool requirements (sample load_modules.sh) etc. for each codec.


    Thank you in advance.

     

     

  • Hi,

    Thanks., we take that i/p.

    Actually, when we integrated the codec in DVSDK 2.10.01.18 encode demo, we did not change that part of cfg. It worked fine with useHeap = True.

    regards

    Yashwant