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