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 secs
if (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;
}
}