I've finally managed to isolate and workaround a problem I've been having with CCDC input and the JPEG codec on the DM355.

What I've found is that the JPEG codec does not co-exist well with any CCDC input. When input is streaming to SDRAM, running the JPEG codec causes all kinds of image shifts (blocks of the image moved inside the picture) and random groups of lines offset inside the image. Not every frame is encoded badly, but approximately 1/4th are corrupted.

I performed several experiments to prove this:

1. I captured 3 frames from the sensor, and then ran the JPEG encoder over these static frames. The JPEG encoder ran with out corrupting any frames

2. Running the normal pipeline - capture + IPIPE in one thread, encode in another, I captured the YUV output of IPIPE before the encoder for each frame. When a bad frame was encoded, I compared the YUV input with the JPEG output and in each case the input was perfect.

3. Modifying the pipeline so that I only capture one frame (plus a delay while the VPFE captured another to replace it) then sending it to the encoder - finally produces encoded pictures without tearing or artifacts.

My conclusion from all of this is that any overlap with CCDC input and the JPEG codec trashes the encoded image - possibly because of some kind of hardware DMA or interrupt interaction between the two.

At the moment I'm only using the CCDC + JPEG codec to encode 5mpix still images, so the workaround is fine for now. But I would like to encode HD video and MJPEG has been of interest to some of our customers.

Has anyone else seen this? Any suggestions on how to solve it - or is it even possible to fix? Will I see the same issues with MPEG4?

Steve
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to