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)); /*************************************************************************************/