The post processing in my photo / video engine is of course all GLSL based. Consider backing the Kickstarter… http://kck.st/1sk0lN4
I highly recommend this approach especially if applying more than one filter is desirable in series. My efforts are pretty neat since you can have on and off screen buffers and apply up to 8 effects in series which can be used for blending and other compound effects all controlled by a simple GUI that fits on an Android phone screen running at 30FPS or better depending on the camera for modern Android devices.
Big hint here for those interested in GLSL based image processing… Take a gander at the iOS GPUImage open source project. There is a treasure trove of GLSL image processing shaders there. Of course most of the work is done in fragment shaders.
GPUImage gave me a head start in building my video engine / post processing pipeline. There is no shared software architecture between my efforts and GPUImage, but the shader code helped a bit. I have since upgraded everything to OpenGL ES 3.0 and built much more comprehensive support for modern GL into my post processing pipeline that GPUImage does not have, but I wouldn’t have been able to focus on all of that if I didn’t have all the fundamental image operation shader code on hand out of the gate. It also gave me plenty of time to wrestle with the Android MediaCodec API.
GPUImage is well worth checking out for those interested in GLSL image processing (just for the shader code!)
Also another big hint for Android. With the Snapdragon 800 / Adreno 330 this was the first mobile GPU in phone form factor to unleash the “FBO bonanza”. I do upwards of 30 FBO passes in the post processing pipeline without significant penalties. Previously mobile GPUs had harsh performance penalties on using many FBO passes. Even 2 would cripple performance. Not so anymore!