Android|Android7.1 SurfaceFlinger实时显示帧率FPS/LCD帧数/Camera帧数

一、帧数FPS:显卡GPU越强,处理速度越快 定义:一秒钟内画面刷新的速度,60fps就是一秒钟出现60张画面,而对帧数起到决定性的是电脑中的显卡,显卡性能越强,帧数当然就越高啦,然后画面就越流畅。 1.在frameworks/native/services/surfaceflinger/SurfaceFlinger.h class SurfaceFlinger : public BnSurfaceComposer, private IBinder::DeathRecipient,private HWComposer::EventHandler{ void debugShowFPS(); //add mat4 mPreviousColorMatrix; }; 2.在frameworks/native/services/surfaceflinger/SurfaceFlinger_hwc1.cpp oid SurfaceFlinger::debugShowFPS(){ /* uint32_t flipCount = getDefaultDisplayDevice()->getPageFlipCount(); flipCount: SurfaceFlinger合成帧次数,即向屏幕提交多少帧数据. 在t1 时刻获取 mPageFlipCount 的数值 v1,在在 t2时刻获取 mPageFlipCount 的数值 v2,FPS 的计算公式: FPS = (v2 - v1) / (t2 - t1); */ static int mFrameCount; //就是flipCount的值,static全局变量 static int mLastFrameCount = 0; static nsecs_t mLastFpsTime = 0; static float mFps = 0; char value[16]; mFrameCount++; nsecs_t now = systemTime(); nsecs_t diff = now - mLastFpsTime; ALOGE(“xxx———> %s(), %d, startTime = %tu",__FUNCTION__,__LINE__,mLastFpsTime/(1000*1000)); //ms ALOGE(“xxx———> %s(), %d, endTime = %tu",__FUNCTION__,__LINE__,now/(1000*1000)); //ms ALOGE(“xxx———> %s(), %d, diff = %tu",__FUNCTION__,__LINE__,diff/(1000*1000)); //ms ALOGE(“xxx———> %s(), %d, mFrameCount = %d",__FUNCTION__,__LINE__,mFrameCount); // //if(diff > ms2ns(250)) {//250ms显示一次 if(diff > ms2ns(1000)) {//1s显示一次 ALOGE("zgj------> %s(), %d, mCount ================ %d",__FUNCTION__,__LINE__,mFrameCount - mLastFrameCount); //mCount:SurfaceFlinger1s合成的帧率 mFps = ((mFrameCount - mLastFrameCount) * float(s2ns(1))) / diff; mLastFpsTime = now; mLastFrameCount = mFrameCount; property_get("debug.showfps.flags", value, "0"); if (value[0] == '1') { ALOGE(“xxx———> %s(), %d, fps ======================>%.2f",__FUNCTION__,__LINE__,mFps); } } }3.编译 # mm 注意:此时需要拷贝system/lib64/libsurfaceflinger.so,然后push到设备的/system/lib64下,重启或杀死surfaceflinger即可. 4.启动打印 # adb shell setprop debug.showfps.flags 1二、摄像头捕捉图像帧数(一般硬件最大支持每秒30帧) # adb shell setprop persist.debug.sf.showfps 1 # adb logcat -v time | grep "PROFILE_PREVIEW_FRAMES_PER_SECOND"三、LCD显示器刷新率 定义:一般都是出现在显示器/屏幕上,比如我的是高刷新率显示器,144Hz的,意思就是显示器的物理刷新速度上限时1秒钟144张,这个需要显示器的面板、驱动电脑支持,而这些数据来源于显卡的输出。一般显示器60Hz刷新率,显示器固定一秒显示60幅画面。 总结:FPS帧数是由显卡决定,摄像头帧率由摄像头硬件决定,刷新率是由显示器决定。

【Android|Android7.1 SurfaceFlinger实时显示帧率FPS/LCD帧数/Camera帧数】

    推荐阅读