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.

[DM3730] dmai h264enc and jpegenc simultaneously

Hi, i want to run h264 codec and jpegenc codec simultaneously, but i have this error :

Algorithm creation FAILED; make sure that 1) alg params are correct/appropriate, 2) there is enough internal and external algorithm memory available -- check DSKT2 settings for heap assignments and scratch allocation

It failed at algorithm that is second in programm flow, both algorithms works fine separetly. This is my app.cfg:

 

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

var os = xdc.useModule('ti.sdo.ce.osal.linux.Settings');
osalGlobal.os = os;

osalGlobal.armDspLinkConfig = {
    memTable: [
        ["DDRALGHEAP",   {addr: 0x83700000, size: 0x02800000, type: "other"}],
        ["RESET_VECTOR", {addr: 0x85F00000, size: 0x00000080, type: "reset"}],
        ["DDR2",         {addr: 0x85F00080, size: 0x01400000, type: "main" }],
        ["DSPLINKMEM",   {addr: 0x87300080, size: 0x00CFFF80, type: "link" }],
    ],
};

var ipc = xdc.useModule('ti.sdo.ce.ipc.Settings');
ipc.commType = ipc.COMM_DSPLINK;

var Engine = xdc.useModule('ti.sdo.ce.Engine');

var DMAI = xdc.loadPackage('ti.sdo.dmai');

var demoEngine = Engine.createFromServer(
    "codec_engine",
    "./bin/cs.x64P",
    "ti.sdo.server.cs"
    );

 

and how i initialize codecs:

/* Image encoder */
    /*************************************************************************************/
    char imageEncoderName[] = "jpegenc";

    IMGENC1_Params imageEncoderParams = Ienc1_Params_DEFAULT;
    imageEncoderParams.maxHeight = CAPTURE_HEIGHT;
    imageEncoderParams.maxWidth = 1920;

    IMGENC1_DynamicParams imageEncoderDynamicParams = Ienc1_DynamicParams_DEFAULT;
    imageEncoderDynamicParams.inputHeight = CAPTURE_HEIGHT;
    imageEncoderDynamicParams.inputWidth = CAPTURE_WIDTH;
    imageEncoderDynamicParams.captureWidth = CAPTURE_WIDTH;

    imageEncoderDynamicParams.qValue = 30;

    BufferGfx_Attrs imageEncoderBufAttrs = BufferGfx_Attrs_DEFAULT;
    imageEncoderBufAttrs.colorSpace = ColorSpace_UYVY;
    imageEncoderBufAttrs.dim.width = CAPTURE_WIDTH;
    imageEncoderBufAttrs.dim.height = CAPTURE_HEIGHT;
    imageEncoderBufAttrs.dim.lineLength = CAPTURE_LINEWIDTH;
    imageEncoderBufAttrs.bAttrs.memParams.align = 32;
    imageEncoderBufAttrs.bAttrs.memParams.type = Memory_CONTIGPOOL;
    imageEncoderBufAttrs.bAttrs.memParams.flags = Memory_CACHED;
    imageEncoderBufAttrs.bAttrs.type = Buffer_Type_GRAPHICS;

    iencHandle = Ienc1_create(engineHandle, imageEncoderName, &imageEncoderParams, &imageEncoderDynamicParams);
    imageEncoderBuf = Buffer_create(Ienc1_getOutBufSize(iencHandle), BufferGfx_getBufferAttrs(&imageEncoderBufAttrs));

    /*************************************************************************************/

    /* Video encoder */
    /*************************************************************************************/
    char videoEncoderName[] = "h264enc";

    VIDENC1_Params encoderParams = Venc1_Params_DEFAULT;
    encoderParams.inputChromaFormat = XDM_YUV_422ILE;
    encoderParams.maxFrameRate = 25000;
    encoderParams.rateControlPreset = IVIDEO_STORAGE;
    encoderParams.maxBitRate = 2000000;
    encoderParams.maxInterFrameInterval = 1;

    VIDENC1_DynamicParams encoderDynamicParams = Venc1_DynamicParams_DEFAULT;
    encoderDynamicParams.inputHeight = 360;
    encoderDynamicParams.inputWidth = 640;
    encoderDynamicParams.refFrameRate = 25000;
    encoderDynamicParams.targetFrameRate = 25000;
    encoderDynamicParams.targetBitRate = 2000000;

    BufferGfx_Attrs videoEncoderBufAttrs = BufferGfx_Attrs_DEFAULT;
    videoEncoderBufAttrs.colorSpace = ColorSpace_UYVY;
    videoEncoderBufAttrs.dim.width = DISPLAY_WIDTH;
    videoEncoderBufAttrs.dim.height = DISPLAY_HEIGHT;
    videoEncoderBufAttrs.dim.lineLength = DISPLAY_LINEWIDTH;
    videoEncoderBufAttrs.bAttrs.memParams.align = 32;
    videoEncoderBufAttrs.bAttrs.memParams.type = Memory_CONTIGPOOL;
    videoEncoderBufAttrs.bAttrs.memParams.flags = Memory_CACHED;
    videoEncoderBufAttrs.bAttrs.type = Buffer_Type_GRAPHICS;

    vencHandle = Venc1_create(engineHandle, videoEncoderName, &encoderParams, &encoderDynamicParams);
    videoEncoderBuf = Buffer_create(Venc1_getOutBufSize(vencHandle), BufferGfx_getBufferAttrs(&videoEncoderBufAttrs));
    /*************************************************************************************/