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.

OMAP4460: Large Camera Preview Setting Crashes Ducati

We have a Custom camera which needs to operate with a preview mode of 2592x540.

Our custom application processes the preview frame and then scales it to a 1280x266 before displaying

After a few frames Ducati times out waiting for a semaphore to be released in the function  MSP_VideoProcess(). It appears to be crashing after the following MSP_process call:

    tIspProcessParam.eCmd       = MSP_ISP_CMD_MEM_TO_MEM_START;
    tIspProcessParam.pCmdData   = &tIspMemToMemCmdParam;
    eResult = MSP_process(pCompPrv->tCallbackData.hIspHandle, &tIspProcessParam, NULL);

Is there away to prevent Ducati from trying to display the preview frame.

  • 2 questions:

    1. Were you getting this error when preview was looking cropped?

    2. Why are you in MEM - MEM mode? This mode is used only for post processing, not when Ducati is driving the sensor and performing complete image processing.

  • 1. Our custom camera only sends data for ~15 sec at which point it is turned of for hardware resason's. While the image was cropped it seemed to keep up with the data flow. However, we also have a standard 5mp camera and if left in the preview mode too long it too would fail.

    2. Are you saying that we should not be using the preview mode callback to grab each frame so that we can process it? How do we prevent ducati from doing the complete processing, namely preventing it from sending the preview frame to the display.

  • Ducati does not manage display. It only returns processed frames to A9. A9 is responsible for display. Ducati handles grabbing of bayer data and processing it all the way to YUV.

    The behavior reported by you is not expected, unless you have made significant changes to Android + Ducati framework.  

  • I misspoke when I said ducati handles the display what I meant was the OMX interface will take the yuv frame and send it to the display. Is that the correct flow?

    As I understand it an app will set up the configuration (preview size, picture size etc.) and then simply start the preview frame. Without any other intervention on the part of the application the OMX will display the preview frame. If this is correct, then, is it possible to prevent the OMX from sending the preview frame to the display.

  • That is not the correct flow. OMX component is responsible for processing sensor output and scaling it to a resolution as specified by OMX Camera settings. If OMX Camera resolution is different from preview resolution, scaling is done in display pipeline.

    You can prevent camera output to go to the display. You will need to modify the A9 side app to do this. If it is android, you need to modify CameraHAL such it grabs the preview frame but does not render. This is not a trivial change, You will need to make sure that camera buffers are allocated and the bufer queue is rotated correctly for non stop operation.