Cts fail项 testSetPreviewTextureBothCallbacks
问题:
I/TestRunner( 7228): failed: testSetPreviewTextureBothCallbacks(android.hardware.cts.CameraGLTest)
I/TestRunner( 7228): ----- begin exception -----
I/TestRunner( 7228):
I/TestRunner( 7228): junit.framework.AssertionFailedError: Timeout waiting for new frame from SurfaceTexture!
I/TestRunner( 7228): at junit.framework.Assert.fail(Assert.java:50)
I/TestRunner( 7228): at junit.framework.Assert.assertTrue(Assert.java:20)
I/TestRunner( 7228): at android.hardware.cts.CameraGLTest$3.run(CameraGLTest.java:394)
I/TestRunner( 7228): at android.hardware.cts.CameraGLTest.runForAllCameras(CameraGLTest.java:323)
I/TestRunner( 7228): at android.hardware.cts.CameraGLTest.testSetPreviewTextureBothCallbacks(CameraGLTest.java:377)
I/TestRunner( 7228): at java.lang.reflect.Method.invokeNative(Native Method)
I/TestRunner( 7228): at java.lang.reflect.Method.invoke(Method.java:515)
I/TestRunner( 7228): at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
I/TestRunner( 7228): at android.test.InstrumentationTestCase.access$000(InstrumentationTestCase.java:36)
I/TestRunner( 7228): at android.test.InstrumentationTestCase$2.run(InstrumentationTestCase.java:189)
I/TestRunner( 7228): at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1719)
I/TestRunner( 7228): at android.os.Handler.handleCallback(Handler.java:733)
I/TestRunner( 7228): at android.os.Handler.dispatchMessage(Handler.java:95)
I/TestRunner( 7228): at android.os.Looper.loop(Looper.java:136)
I/TestRunner( 7228): at android.app.ActivityThread.main(ActivityThread.java:5095)
I/TestRunner( 7228): at java.lang.reflect.Method.invokeNative(Native Method)
I/TestRunner( 7228): at java.lang.reflect.Method.invoke(Method.java:515)
I/TestRunner( 7228): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
I/TestRunner( 7228): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
I/TestRunner( 7228): at dalvik.system.NativeStart.main(Native Method)
I/TestRunner( 7228): ----- end exception -----
分析:
出现此问题主要是因为在进入相机时前面3帧被丢掉了,所以在过CTS时就会检测到前面3帧没有获取到数据,软件就认为获取数据超时,然后就强行退出相机了,在手机上也可以明显看到进入测试软件1~2秒就退出,相机界面都没看到。
处理方法:
找到丢帧的地方,将其还原即可。如下所示:
/LINUX/android/hardware/qcom/camera/QCamera2/HAL/QCamera2HWICallbacks.cpp
if(pme->m_bPreviewStarted) {
CDBG_HIGH("[KPI Perf] %s : PROFILE_FIRST_PREVIEW_FRAME", __func__);
pme->m_bPreviewStarted = false ;
pme->m_dropFrame =0; //young.yang add began 当这个变量为0时就代表不丢帧,为3时就代表丢3帧。
}
if(--(pme->m_dropFrame)>0)
needDrop =1;
else
needDrop =0; //young.yang add end