Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

How can I make Android Native Camera go faster?

My VideoCapture loop receives only about 15 FPS on a Nexus 10. Is there any reasonable chance I could increase this up to about 30? If so, how? Logcat messages suggest that 30 FPS is possible. I would like to get frames with as little preprocessing done to them as possible, which should not take much cpu time. Is this a limitation of the native camera implementation? Would the Java camera interface enable higher frame rates?

Here is the relevant code fragment.

cv::VideoCapture reader;

reader.set( CV_CAP_PROP_CONVERT_RGB, 0 );
reader.set( CV_CAP_PROP_FPS, 30 );
reader.open( CV_CAP_ANDROID + 1-camID );
reader.set( CV_CAP_PROP_FRAME_WIDTH, 320 );
reader.set( CV_CAP_PROP_FRAME_HEIGHT, 240 );

cv::Mat frame;
while( !stopRequested() )
{
    //... get time here
    reader >> frame;
    //... record elased time here
    //... ultimately do somthing with the frame here
}