You must have a bug somewhere with respect to your buffer pointers. The virtual addresses that CMEM is complaining about are not ones that would be returned by Memory_contigAlloc on a Linux system. However, CMEM_getPhys() (the user front end to the kernel support) is often used for more than just CMEM-allocated buffers, so your pointer bug is not necessarily with the CMEM buffer.
Can you enable CMEM debug and rerun? You can do so with var cmem = xdc.useModule('ti.sdo.linuxutils.cmem.CMEM'); cmem.debug = true; in your <appname>.cfg file. This should give you a better idea of where these pointers are coming from. You could also enable the environment variable CE_DEBUG, setting it to 2 or 3, to give you some trace of what's happening. Regards, - Rob ________________________________ From: davinci-linux-open-source-bounces+rtivy=ti....@linux.davincidsp.com [mailto:davinci-linux-open-source-bounces+rtivy=ti....@linux.davincidsp.com] On Behalf Of kirthika varadarajan Sent: Monday, July 06, 2009 4:05 AM To: Davinci-linux-open-source@linux.davincidsp.com Subject: Reg. two out buffers in encoding of DM6446 Hi, I want to read the motion vector in another buffer which i pass from application. Already i am allocating the memory using Memory_ContigAlloc() XDAS_Int32 inBufSizeArray[1]; XDAS_Int8 OutPutBuffers[2]; OutPutBuffers[0] = outBuf; OutPutBuffers[1] = MotionVecData; XDAS_Int32 outBufSizeArray[2]; XDAS_Int32 status; XDM_BufDesc inBufDesc; XDM_BufDesc outBufDesc; VIDENC_InArgs inArgs; VIDENC_OutArgs outArgs; inBufSizeArray[0] = inBufSize; outBufSizeArray[0] = outBufMaxSize; //Encoded data outBufSizeArray[1] = MotionVecSize; //Motion vector inBufDesc.numBufs = 1; inBufDesc.bufSizes = inBufSizeArray; inBufDesc.bufs = (XDAS_Int8 **) &inBuf; outBufDesc.numBufs = 2; outBufDesc.bufSizes = outBufSizeArray; outBufDesc.bufs = OutPutBuffers; inArgs.size = sizeof(VIDENC_InArgs); outArgs.size = sizeof(VIDENC_OutArgs); /* Encode video buffer */ status = VIDENC_process(hEncode,&inBufDesc,&outBufDesc,&inArgs, &outArgs); if (status != VIDENC_EOK) { ERR("VIDENC_process() failed with a fatal error (%ld ext: %#lx)\n",status, outArgs.extendedError); return FAILURE; } *outBufSize = outArgs.bytesGenerated; EncodedFrameType = outArgs.encodedFrameType; return SUCCESS; In the codec i am copying the data in two output buffers. outBufs->bufs[0] ->encoded data outBufs->bufs[1] ->Motion vec data. When ever i call the encode_process() I am getting the following error Memory Allocated for Motion Vector crop.c.left=0 crop.c.top=0 crop.c.width=640 Capturing 640x480 video (cropped to 640x480) CMEMK Error: GETPHYS: Failed to convert virtual 0x0 to physical. CMEMK Error: GETPHYS: Failed to convert virtual 0xa8bff to physical. Jpeg Encode Error: VIDENC_process() failed with a fatal error (-2 ext: 0 Struck some where. Suggest me.
_______________________________________________ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source