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