Look at https://github.com/raspberrypi/userland ... piVidYUV.c
That is selecting MMAL_ENCODING_I420 - http://www.fourcc.org/yuv.php#IYUV
They comprise an NxN Y plane followed by (N/2)x(N/2) U and V planes.
The Y (luma) plane is exactly what you want for mono. Just ignore the chroma bytes.
If you want RGB, then change the encoding to MMAL_ENCODING_[BGR24|RGB24|RGB565|RGBA|BGRA] for the various flavours of RGB.
Want to know the supported formats on any port of any component? mmal_port_parameter_get for MMAL_PARAMETER_SUPPORTED_ENCODINGS (you need to construct a parameter structure that contains sufficient array entries for the result - I thought there was a utility function that did that for you, but I can't see it)
All image effects are implemented on the closed source GPU.
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
Please don't send PMs asking for support - use the forum.
I'm not interested in doing contracts for bespoke functionality - please don't ask.