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

Reply via email to