Camera 性能优化

Qcom Camx 打印实时Camera FPS

一、第一种方式(有些低平台可能没有)

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;    }}
《小驰行动派的知识星球》
————————————————



推荐阅读:

关于博主 

《小驰Camera私房菜》小册目录

Camera基础及一些基本概念

Android Camera 学习路线 | 个人推荐

Android Camera开发系列(干货满满)

Camera Hal|如何学习一个新平台

一篇文章带你了解Android 最新Camera框架

学习完Camera入门课程视频,可以去找工作了?





欢迎扫码关注「小驰行动派」公众号 10 年Camera开发 | Camera技术干货 | 行业洞察 | Camera实战分享
小驰行动派公众号 扫一扫关注
分享到: 复制链接
← 上一篇 2007年诺基亚内部对iPhone的竞争分析报告 下一篇 → Android Camera API 和 HAL版本对应关系

相关文章

推荐课程

想系统学习 Camera 开发?看看这些课程

评论 (0)

暂无评论,快来抢沙发吧