I'm trying to optimize the performance of our application, that captures images from a camera, because it runs very slowly.
The application is using gstreamer for interfacing with the camera.
The gst-launch cmd is like this:
gst-launch-0.10 v4l2src device=/dev/video1 ! video/x-raw-yuv,width=640,height=480 ! ffmpegcolorspace ! videoflip ! ffmpegcolorspace ! mfw_v4lsink
The camera only supports output in YUV format and is mounted at 90 degrees, so it also needs to be rotated.
When running it uses ~100% cpu.
It actually does this as soon as I insert the ffmpegcolorspace element in the chain.
Is there any way I can use the CSC in the PXP to convert the YUV input to RGB (i.MX28 Applications Processor Reference Manual, Rev. 1, 2010, ch. 34.2.4 - Color Space Conversion (CSC))?
I've also noted that the PXP has support for rotation (i.MX28 Applications Processor Reference Manual, Rev. 1, 2010, ch. 34.2.9 - Rotation).
I've found several posts on this site stating that rotation is not supported on the i.MX28.
Is this just because it's not implemented in software, or are there hardware issues that make this impossible?
I'm also implementing a barcode scanner, using an appsink, so I can't afford to spend all that cpu-time on rotating and color conversion:
gst-launch-0.10 v4l2src device=/dev/video1 ! video/x-raw-yuv,width=640,height=480 ! ffmpegcolorspace ! video/x-raw-rgb ! appsink max-buffers=1 drop=0
Basically what I'm asking is if there exists a mfw_colorspace (and a mfw_rotate) element for gstreamer (or similar).
Or if it would be possible to make those?
As I see it, that's where all my performance goes to die.
Thanks in advance.