一、第一种方式(有些低平台可能没有)
adb shell setprop persist.vendor.camera.enableFPSLog TRUE
adb shell setprop persist.vendor.camera.systemLogEnable TRUE
adb shell setprop vendor.debug.camera.overrideLogLevels 0xff
chi-cdk/core/chiframework/chxextensionmodule.cpp
CDKResult ExtensionModule::OverrideProcessRequest(const camera3_device_t* camera3_device,camera3_capture_request_t* pCaptureRequest,VOID* pPriv){if (TRUE == EnableFPSLog()){PrintCameraFPS(logicalCameraId);}}
VOID ExtensionModule::PrintCameraFPS(UINT32 logicalCameraId){m_processCount[logicalCameraId]++;if ((m_processCount[logicalCameraId] % GetInstance()->GetUsecaseMaxFPS()) == 0){struct timespec TEnd = {0 , 0};FLOAT cost_time = 0;FLOAT cost_time_from_prev = 0;clock_gettime(CLOCK_REALTIME, &TEnd);if (m_CameraWatcher[logicalCameraId].tv_nsec < TEnd.tv_nsec){cost_time = (FLOAT)(TEnd.tv_sec - m_CameraWatcher[logicalCameraId].tv_sec - 1) +((FLOAT)(1000000000 + TEnd.tv_nsec - m_CameraWatcher[logicalCameraId].tv_nsec)/1e9);cost_time_from_prev = (FLOAT)(TEnd.tv_sec - m_CameraWatcher_prev[logicalCameraId].tv_sec - 1) +((FLOAT)(1000000000 + TEnd.tv_nsec - m_CameraWatcher_prev[logicalCameraId].tv_nsec)/1e9);}else{cost_time = (FLOAT)(TEnd.tv_sec - m_CameraWatcher[logicalCameraId].tv_sec) +((FLOAT)(TEnd.tv_nsec - m_CameraWatcher[logicalCameraId].tv_nsec)/1e9);cost_time_from_prev = (FLOAT)(TEnd.tv_sec - m_CameraWatcher_prev[logicalCameraId].tv_sec) +((FLOAT)(TEnd.tv_nsec - m_CameraWatcher_prev[logicalCameraId].tv_nsec)/1e9);}m_CameraWatcher_prev[logicalCameraId] = TEnd;FLOAT fps = (FLOAT) ((FLOAT) m_processCount[logicalCameraId] / cost_time) * m_usecaseNumBatchedFrames;FLOAT current_fps = (FLOAT) ((FLOAT) ExtensionModule::GetInstance()->GetUsecaseMaxFPS() / cost_time_from_prev) * m_usecaseNumBatchedFrames;CHX_LOG_INFO("FRAME FPS %1.1f, average FPS %1.1f, frame count %d, time %1.1f, Max:%d, numBatchedFrames: %d",current_fps,fps,m_processCount[logicalCameraId],cost_time,GetInstance()->GetUsecaseMaxFPS(),m_usecaseNumBatchedFrames);}else if (m_processCount[logicalCameraId] == 1){clock_gettime(CLOCK_REALTIME, &m_CameraWatcher[logicalCameraId]);m_CameraWatcher_prev[logicalCameraId] = m_CameraWatcher[logicalCameraId];}}
二、第二种方式
adb shell setprop persist.vendor.camera.logPerfInfoMask 0x10000
adb shell setprop persist.vendor.camera.enableFPSLog TRUE
camx/src/core/camxsession.cpp
VOID Session::AdvanceMinExpectedResult(){if (TRUE == m_pChiContext->GetStaticSettings()->enableFPSLog){CalculateResultFPS();}}
VOID Session::CalculateResultFPS(){UINT64 currentTime = OsUtils::GetNanoSeconds();UINT64 elapsedTime;if (0 == m_lastFPSCountTime){m_lastFPSCountTime = currentTime;m_currentFrameCount = 0;}else{m_currentFrameCount++;}elapsedTime = currentTime - m_lastFPSCountTime;// Update FPS after 10 secsif (elapsedTime > (10 * NanoSecondsPerSecond)){FLOAT fps = (m_currentFrameCount * NanoSecondsPerSecond / static_cast<FLOAT> (elapsedTime));CAMX_LOG_PERF_INFO(CamxLogGroupCore, "FPS: %0.2f", fps);m_currentFrameCount = 0;m_lastFPSCountTime = currentTime;}}
评论 (0)