I've researched about this topic a lot, but it seems I'm doing something wrong or my understanding is somehow off.
I simply want to achieve the best performance (e.g. measured in FPS) for grabbing a high quality image from my Android driven SmartPhone and showing it directly to the user without any modifications.
Since I have a pretty capable SmartPhone (Nexus 4), I assumed it should be a trivial task. But all my efforts didn't pay off. E.g. I only achieved about 10 FPS for a 800x480 stream using the latest OpenCV framework.
So, is it possible to achieve >25FPS for just grabbing and displaying high quality video from my phone's camera? If so, what is the best strategy to do so? Device specific considerations are welcome as well.
Resources I used:
- http://obviam.net/index.php/texture-mapping-opengl-android-displaying-images-using-opengl-and-squares/
- http://mesai0.blogspot.de/2013/01/android-native-camera-with-opencv-and.html
- http://opencv.org/
Update: I've been able to increase the grabbing performance to nearly constant ~25FPS@1280x720 by simply setting the recording hint while using the SurfaceTexture and TextureView as Camera sink.
Yet I'm wondering if it possible to increase the performance even further. I tried to use different preview formats, but without luck. Maybe there is implicit upper limit enforced on the grabbing performance I'm unaware of.
Nevertheless I'll continue to research and keep you informed. All sorts of information are still welcome!