和你一起终身学习这里是程序员Android经典好文推荐通过阅读本文您将收获以下知识点:二、MTK Camera Trace 启动流程拆解续上期mtk Camera 启动log分析文章如下MTK相机启动流程Log分析本文主要从systrace角度分析一下启动流程二、MTK Camera Trace 启动流程拆解1. MTK Camera app 启动阶段trace拆解tag参考表格启动阶段模块trace 关键字S0系统deliverInputEvent(AppLaunch_dispatchPtr:Up桌面相机图标点击事件处理 ) ⇒ activityStart或Camera APP 进程创建S1Camera APPactivityStart或Camera APP 进程创建 ⇒ connectDeviceS2Camera HALconnectDeviceS3Camera APPconnectDevice end ⇒ CameraHal::configureStreams startS4Camera HALCameraHal::configureStreamsS5Camera APPCameraHal::configureStreams end ⇒ setRepeatingRequest startS6Camera HALsetRepeatingRequest start ⇒ first full bufferS7Camera APP、SFfirst full buffer ⇒ 第一帧显示(onPreviewOk)2. MTK Camera 预览流程trace 拆解流程2.1 S0AppLaunch_dispatchPtr:Up /deliverInputEvent (桌面相机图标点击事件处理) -- APP 进程创建和你一起终身学习这里是程序员Android点击事件 Trace TAGAppLaunch_dispatchPtr:UpdeliverInputEvent2.2 S1 activityStart或Camera APP 进程创建 ⇒ connectDevice从Touch UP 到 ActivityStart 阶段系统创建App进程耗时和你一起终身学习这里是程序员AndroidCamera APP 进程创建trace TAGPostForkZygoteInitActivityThreadMainbindApplicationactivityStartActivity.onCreateactivityResume1. PostFork 耗时需要排查 Zygote.java 代码Zygote.java frameworks\base\core\java\com\android\internal\os2. ZygoteInit 耗时需要排查ZygoteInit.java 代码ZygoteInit.java frameworks\base\core\java\com\android\internal\os3. ActivityThreadMain耗时需要排查ActivityThread.java代码ActivityThread.java frameworks\base\core\java\android\app4. bindApplication 耗时需要排查ActivityThread.java代码,同上5. 从 ActivityStart 到 App 层 OpenCamera 耗时Camera App 开始执行 MainActivity 一系列 onCreateonStartonResumeopenCamera等操作和你一起终身学习这里是程序员Android5.1. activityStart 耗时需要排查 LaunchActivityItem.java 代码LaunchActivityItem.java frameworks\base\core\java\android\app\servertransaction5.2. ResumeActivityItem耗时需要排查 ResumeActivityItem.java 代码ResumeActivityItem.java frameworks\base\core\java\android\app\servertransaction5.3. Choreographer#doFrame 耗时需要排查 Choreographer.java 代码Choreographer.java frameworks\base\core\java\android\view6.Framework层 cameraserver 开始响应App getCameraCharacteristics 、connectDevice 等操作。camera Server 在此期间的行为open camera 前的Trace TAGgetCameraCharacteristicsconnectDevice2.3 S2: connectDevice和你一起终身学习这里是程序员Android连接Camera 期间的Trace TAGAIDL::cpp::ICameraService::connectDevice::cppServerconnectDeviceCameraHal::openSessionmtkcam-devicemgr:finishOpenDevice2.4 S3: connectDevice end ⇒ CameraHal::configureStreams startCamera app 下发opensession后底层开始对sensor 进行poweron上电处理2.4.1 power on 上电 trace和你一起终身学习这里是程序员Androidpower on 上电 trace TAG:powerOnSensor0LogicalDev powerOninit(3A)AE initAF initFLASH initTUNING init2.4.2 power on 上电 log行 7595:03-1422:07:13.60260211273169I mtkcam-DeviceAdapter:0[HalDeviceAdapter::powerOn] powerOn 行 7605:03-1422:07:13.60307311273171D mtkcam-DeviceAdapter:[initSensor] powerOnSensor0 行 7638:03-1422:07:13.60504111273171D MtkCam/HalSensor:[powerOn] sensorIdx :0 行 8302:03-1422:07:13.82741011273169D lsc_nvram:[importEEPromData]Sensor(1) power on done,count(20),(m_eSensorDev u4PowerOn)(0) 行 8478:03-1422:07:13.84762611273171D MtkCam/HalSensor:[powerOn]-HalDeviceAdapter:0 ret:1, meSensorDev 0x1 行 8667:03-1422:07:13.87461011273169D MtkCam/Utils:{CamProfile}[HalDeviceAdapter:0::powerOn]3A Hal -:(0-th)[start--now:271 ms] 行 8677:03-1422:07:13.87506011273169D MtkCam/Utils:{CamProfile}[HalDeviceAdapter:0::powerOn]ISP Hal -:(1-th)[start--now:272 ms][last--now:0 ms] 行 8678:03-1422:07:13.87508111273169D MtkCam/Utils:{CamProfile}[HalDeviceAdapter:0::powerOn] Sensor powerOn -:(2-th)[start--now:272 ms][last--now:0 ms] 行 8680:03-1422:07:13.87514311273169I mtkcam-DeviceAdapter:0[HalDeviceAdapter::powerOn]3A notifyPowerOn 行 8688:03-1422:07:13.87531211273169D MtkCam/Utils:{CamProfile}[HalDeviceAdapter:0::powerOn]3A notifyPowerOn -:(3-th)[start--now:272 ms][last--now:0 ms] 行 8689:03-1422:07:13.87532611273169I mtkcam-DeviceAdapter:0[HalDeviceAdapter::powerOn] powerOn -2.4.3 Camera app opencamera 以及getCameraCharacteristicsCamera app photoDevice.openCamera 获取getCameraCharacteristics和你一起终身学习这里是程序员AndroidTrace TAGphotoDevice.openCameraopenCamera.createSettingsByStage12.4.4 Camera APP 开始配流预览拍照、缩略图Trace和你一起终身学习这里是程序员AndroidTrace TAG:AIDL::cpp::ICameraDeviceUser::beginConfigure::cppServercreateStreamendConfigureconfigureStreams2.4.5 Camera APP 开始配流预览拍照、缩略图Log行 8196:03-1422:07:13.76131928973180ICamAp_PhotoDevice2Controller:[configureSession], isFromOpen :true 行 8199:03-1422:07:13.76302428973163ICamAp_API2-Handler-0:[createCaptureRequest], pending time 0ms. 行 8207:03-1422:07:13.76423028973163ICamAp_API2-Handler-0:[createCaptureRequest]-, executing time 1ms. 行 8212:03-1422:07:13.76780128973163ICamAp_API2-Handler-0:[createCaptureSession], pending time 0ms. 行 8213:03-1422:07:13.76828028973163ICamAp_API2-Handler-0:[createCaptureSession] with mOutputConfigs 行 8230:03-1422:07:13.78226911271127I mtkcam_hal_aidl_device:[0-aidl-session::configureStreams]Stream{id:0, streamType:OUTPUT, width:1280, height:720, format:IMPLEMENTATION_DEFINED, usage:GPU_TEXTURE, dataSpace:UNKNOWN, rotation:ROTATION_0, physicalCameraId:, bufferSize:0, groupId:-1, sensorPixelModesUsed:[ANDROID_SENSOR_PIXEL_MODE_DEFAULT], dynamicRangeProfile:ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD, useCase:ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT, colorSpace:-1} 行 8232:03-1422:07:13.78232011271127I mtkcam_hal_aidl_device:[0-aidl-session::configureStreams]Stream{id:1, streamType:OUTPUT, width:4080, height:2296, format:BLOB, usage:CPU_READ_OFTEN, dataSpace:JFIF, rotation:ROTATION_0, physicalCameraId:, bufferSize:14461181, groupId:-1, sensorPixelModesUsed:[ANDROID_SENSOR_PIXEL_MODE_DEFAULT], dynamicRangeProfile:ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD, useCase:ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT, colorSpace:-1} 行 8233:03-1422:07:13.78240311271127I mtkcam_hal_aidl_device:[0-aidl-session::configureStreams]Stream{id:2, streamType:OUTPUT, width:160, height:96, format:YCBCR_420_888, usage:CPU_READ_OFTEN, dataSpace:JFIF, rotation:ROTATION_0, physicalCameraId:, bufferSize:0, groupId:-1, sensorPixelModesUsed:[ANDROID_SENSOR_PIXEL_MODE_DEFAULT], dynamicRangeProfile:ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD, useCase:ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT, colorSpace:-1} 行 8237:03-1422:07:13.78250211271127D mtkcam-dev3:[0-session::configureStreams] camera default configureStreams setConfigTimeCPUCtrl 行 8247:03-1422:07:13.78335411271127D mtkcam-dev3:[0-session::tryRunCommandLocked]Run command onConfigureStreamsLocked 行 8248:03-1422:07:13.78338311271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked] 行 8249:03-1422:07:13.78340911271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked]EnterCPU full run mode, timeout:1000 ms 行 9197:03-1422:07:13.91518411271127DMtkCam/ppl_context:[beginConfigure] 行 9201:03-1422:07:13.91523911271127DMtkCam/ppl_context:[beginConfigure]- 行 9389:03-1422:07:13.92878311271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked] halMaxBufferSize12HalStream.maxBuffers12 行 9390:03-1422:07:13.92880011271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked] halMaxBufferSize11HalStream.maxBuffers11 行 9391:03-1422:07:13.92881711271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked] halMaxBufferSize12HalStream.maxBuffers12 行 9392:03-1422:07:13.92883611271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked][setConfigMap] mImageConfigMap.size()3, mMetaConfigMap.size()1 行 9401:03-1422:07:13.92903611271127D mtkcam-AppStreamMgr:[AppMgr-configureStreams]01280x720 OUTImgFormat:0x11(NV21)BufPlanes(strides/sizeInBytes):[1280/9216001280/493440] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x00000000(UNKNOWN) s0:d0:App:YCrCb_420_SP:0|HW_TEXTUREAllocImgFormat:0x11(NV21)AllocBufPlanes(strides/sizeInBytes):[1280/9216001280/493440]Real:0x11(YCrCb_420_SP)Request:0x22(IMPLEMENTATION_DEFINED)Override:0x11(YCrCb_420_SP)Hal-Client-usage:0x100(0|HW_TEXTURE)Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE)HalStream::(consumer/producer)Usage:0/0x200330xb400007c8ac50690 phy:-1 行 9403:03-1422:07:13.92909111271127D mtkcam-AppStreamMgr:[AppMgr-configureStreams]0x14080x2296 OUTImgFormat:0x2300(JPEG)BufPlanes(strides/sizeInBytes):[14461181/14461184] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:11 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s1:d0:App:BLOB:0|SW_READ_OFTENAllocImgFormat:0x21(BLOB)AllocBufPlanes(strides/sizeInBytes):[14461181/14461184]Real:0x21(BLOB)Request:0x21(BLOB)Override:0x21(BLOB)Hal-Client-usage:0x3(0|SW_READ_OFTEN)Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE)HalStream::(consumer/producer)Usage:0/0x200330xb400007c8ac50310 phy:-1 行 9404:03-1422:07:13.92914811271127D mtkcam-AppStreamMgr:[AppMgr-configureStreams]0x2160x96 OUTImgFormat:0x11(NV21)BufPlanes(strides/sizeInBytes):[192/18432192/9504] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s2:d0:App:YCrCb_420_SP:0|SW_READ_OFTENAllocImgFormat:0x11(NV21)AllocBufPlanes(strides/sizeInBytes):[192/18432192/9504]Real:0x11(YCrCb_420_SP)Request:0x23(YCbCr_420_888)Override:0x23(YCbCr_420_888)Hal-Client-usage:0x3(0|SW_READ_OFTEN)Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE)HalStream::(consumer/producer)Usage:0/0x200330xb400007c8ac535d0 phy:-1 行 9409:03-1422:07:13.92924311271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked]- 行 9413:03-1422:07:13.92930611271127I mtkcam-dev3:[0-session::tryRunCommandLocked]Run command onConfigureStreamsLocked - 行 9414:03-1422:07:13.92937511271127I mtkcam_hal_aidl_device:[0-aidl-session::configureStreams]HalStream{id:0, overrideFormat:YCRCB_420_SP, producerUsage:131123, consumerUsage:CPU_READ_NEVER, maxBuffers:12, overrideDataSpace:JFIF, physicalCameraId:-1, supportOffline:false, enableHalBufferManager:false} 行 9415:03-1422:07:13.92939611271127I mtkcam_hal_aidl_device:[0-aidl-session::configureStreams]HalStream{id:1, overrideFormat:BLOB, producerUsage:131123, consumerUsage:CPU_READ_NEVER, maxBuffers:11, overrideDataSpace:JFIF, physicalCameraId:-1, supportOffline:false, enableHalBufferManager:false} 行 9416:03-1422:07:13.92941311271127I mtkcam_hal_aidl_device:[0-aidl-session::configureStreams]HalStream{id:2, overrideFormat:YCBCR_420_888, producerUsage:131123, consumerUsage:CPU_READ_NEVER, maxBuffers:12, overrideDataSpace:JFIF, physicalCameraId:-1, supportOffline:false, enableHalBufferManager:false} 行 9586:03-1422:07:13.94869428973163ICamAp_API2-Handler-0:[createCaptureSession]-, executing time 181ms. 行 9587:03-1422:07:13.94897628973164ICamAp_API2-Handler-0:[onConfigured], session android.hardware.camera2.impl.CameraCaptureSessionImpl9221bde 行 9591:03-1422:07:13.94952428973180ICamAp_PhotoDevice2Controller:[onConfigured],session com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy3b7b1bf, mNeedFinalizeOutput:false2.5 S4: CameraHal::configureStreams和你一起终身学习这里是程序员AndroidTrace TAG:AIDL::cpp::ICameraDeviceUser::endConfigure::cppServerendConfigureconfigureStreamsCameraHal::configureStreams2.6 S5CameraHal::configureStreams 结束 --submitRequestList2.6.1 CameraHal::configureStreams 结束 --submitRequestList 下发预览请求 trace TAG和你一起终身学习这里是程序员Android2.6.2 submitRequestList 下发预览请求 trace TAG和你一起终身学习这里是程序员AndroidTrace TAG:AIDL::cpp::ICameraDeviceUser::submitRequestList::cppServersubmitRequestListsetStreamingRequestListsubmitRequestsHelpersetRepeatingRequests2.7 S6submitRequestList -- first full buffer2.7.1 第一帧预览请求第一帧预览请求 Trace第一帧预览请求的traceCamera FWK trace TAGsendRequestsBatchCameraHal::processBatchCaptureRequestsframe captureCamera HAL trace TAGprocessCaptureRequest第一帧预览请求 Log//25. Camera HAL 开始准备第一帧预览请求 [submitRequest] 4Cell/0 requestNo:0 03-1422:07:14.11157711271127D mtkcam-dev3-utils:[0-AppRequestUtil::createOneRequest] requestNumber[0]:StreamBuffer:0xb400007d4ac4a2c0 streamId:0 bufferId:1 buffer:0xb400007d1ac3a590 status:OK acquireFenceOp.hdl:0x0 releaseFenceOp.hdl:0x0 acquireFenceOp.fd:-1 releaseFenceOp.fd:-1 appBufferHandleHolder:0xb400007ddac86e68 freeByOthers:0/ 03-1422:07:14.11172211271127I mtkcam-AppStreamMgr:[earlyCallbackMeta] early callback metadata, requestNo:0 03-1422:07:14.11185311271127I mtkcam-PipelineModelSession: [submitRequest]4Cell/0 requestNo:0{//submit第一帧预览请求 repeating:0 control.aeTargetFpsRange:5,30//预览帧率配置 control.captureIntent:1// captureIntent 1: 预览 2 拍照 3 录像 4:录像抓拍 5ZSL control.enableZsl:0// 是否开启ZSL control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:1} 03-1422:07:14.11192811271127I mtkcam-FeatureSettingPolicy:[collectDefaultSensorInfo] keep the first request config asdefault config 03-1422:07:14.11266411271127I mtkcam-InitFrameHandler:[enqueue] RequestNo:0 FrameNo:0 // 26. Camera FWK 第一帧请求ok 03-1422:07:14.11352311271127D mtkcam-dev3:[0-session::processCaptureRequest]-1st request -OK2.7.2 第一帧出图callback 请求第一帧出图定位 callback Camera FWK 关键trace TAG和你一起终身学习这里是程序员AndroidTrace TAG:processCaptureResultsStream 0: first full buffer第一帧出图callback Camera HAL -- Camera FWK --Camera APP和你一起终身学习这里是程序员Android第一帧callback 流程Camera HAL --Camera FWK和你一起终身学习这里是程序员Android第一帧出图callback Camera HAL trace TAGprocessCaptureResult第一帧出图callback Camera FWK 关键 trace TAGfirst full bufferStream 0: first full bufferframe capture第一帧callback 流程Camera FWK --Camera APP和你一起终身学习这里是程序员AndroidCamera APP trace TAG:SurfaceTexture第一帧callback 流程 Log// 27. Camera HAL 出图并callback result 到上层 Frame timer: 预览出图 frame end updateResult callback 预览帧到上层 03-1422:07:14.11533411273168D mtkcam-AppStreamMgr:[0-FrameHandler::updateResult] requestNo 0, real time:1, last partial:0 03-1422:07:14.25071411273231D MtkCam/StreamingPipe/Timer:[print]Frame timer [# 1/ 0][t 19][io 0][tof 0/ 0][d 0/ 0][mss 0/ 0/ 0/ 0][a 18/ 4/ 13][tun 0/ 0][msf 0/ 0][vnr 0/ 0/ 0][am 0][b 0/ 0][tpi( 0/ 0)/( 0/ 0)/( 0/ 0)][vmdp_A 0/ 0 vmdp_B 0/ 0][h 7/ 0/ 0][e 0][r 0/ 0][w_A 0/ 0/ 0/ 0 w_B 0/ 0/ 0/ 0][x 0][disp 0/ 0][async 0/ 0][p2sm 0/ 0/ 0][fps0.00/0.00/ 5/ 30] 03-1422:07:14.28261811273223I MtkCam/Utils:{CamProfile}[CameraDevice3SessionImpl::onFrameUpdated] updateResult: requestNo:0 userId:0x16 OAppMeta#(left:0 this:1): (1-th) ( overtime 1 ms) [start--now: 5 ms] [last--now: 5 ms] 03-1422:07:14.28289211273223D mtkcam-pipeline:[onLastStrongRef][ requestNo:0 frameNo:0] frame end 03-1422:07:14.28384611273168D mtkcam-AppStreamMgr:[0-FrameHandler::updateResult] requestNo 0, real time:0, last partial:12.8 S7 first full buffer ⇒ 第一帧显示(onPreviewOk)第一帧callback 流程Camera APP --SurfaceFliger 送显示和你一起终身学习这里是程序员AndroidSF 显示trace TAGsurfaceflingervsync-sfBufferTxFence至此本篇已结束。转载网络的文章小编觉得很优秀欢迎点击阅读原文支持原创作者如有侵权恳请联系小编删除比如文章底部留言12小时内必删欢迎您的建议与指正。同时期待您的关注感谢您的阅读谢谢觉得有点用欢迎您点赞用时想查看顺手点在看❤️
MTK相机启动流程trace分析
和你一起终身学习这里是程序员Android经典好文推荐通过阅读本文您将收获以下知识点:二、MTK Camera Trace 启动流程拆解续上期mtk Camera 启动log分析文章如下MTK相机启动流程Log分析本文主要从systrace角度分析一下启动流程二、MTK Camera Trace 启动流程拆解1. MTK Camera app 启动阶段trace拆解tag参考表格启动阶段模块trace 关键字S0系统deliverInputEvent(AppLaunch_dispatchPtr:Up桌面相机图标点击事件处理 ) ⇒ activityStart或Camera APP 进程创建S1Camera APPactivityStart或Camera APP 进程创建 ⇒ connectDeviceS2Camera HALconnectDeviceS3Camera APPconnectDevice end ⇒ CameraHal::configureStreams startS4Camera HALCameraHal::configureStreamsS5Camera APPCameraHal::configureStreams end ⇒ setRepeatingRequest startS6Camera HALsetRepeatingRequest start ⇒ first full bufferS7Camera APP、SFfirst full buffer ⇒ 第一帧显示(onPreviewOk)2. MTK Camera 预览流程trace 拆解流程2.1 S0AppLaunch_dispatchPtr:Up /deliverInputEvent (桌面相机图标点击事件处理) -- APP 进程创建和你一起终身学习这里是程序员Android点击事件 Trace TAGAppLaunch_dispatchPtr:UpdeliverInputEvent2.2 S1 activityStart或Camera APP 进程创建 ⇒ connectDevice从Touch UP 到 ActivityStart 阶段系统创建App进程耗时和你一起终身学习这里是程序员AndroidCamera APP 进程创建trace TAGPostForkZygoteInitActivityThreadMainbindApplicationactivityStartActivity.onCreateactivityResume1. PostFork 耗时需要排查 Zygote.java 代码Zygote.java frameworks\base\core\java\com\android\internal\os2. ZygoteInit 耗时需要排查ZygoteInit.java 代码ZygoteInit.java frameworks\base\core\java\com\android\internal\os3. ActivityThreadMain耗时需要排查ActivityThread.java代码ActivityThread.java frameworks\base\core\java\android\app4. bindApplication 耗时需要排查ActivityThread.java代码,同上5. 从 ActivityStart 到 App 层 OpenCamera 耗时Camera App 开始执行 MainActivity 一系列 onCreateonStartonResumeopenCamera等操作和你一起终身学习这里是程序员Android5.1. activityStart 耗时需要排查 LaunchActivityItem.java 代码LaunchActivityItem.java frameworks\base\core\java\android\app\servertransaction5.2. ResumeActivityItem耗时需要排查 ResumeActivityItem.java 代码ResumeActivityItem.java frameworks\base\core\java\android\app\servertransaction5.3. Choreographer#doFrame 耗时需要排查 Choreographer.java 代码Choreographer.java frameworks\base\core\java\android\view6.Framework层 cameraserver 开始响应App getCameraCharacteristics 、connectDevice 等操作。camera Server 在此期间的行为open camera 前的Trace TAGgetCameraCharacteristicsconnectDevice2.3 S2: connectDevice和你一起终身学习这里是程序员Android连接Camera 期间的Trace TAGAIDL::cpp::ICameraService::connectDevice::cppServerconnectDeviceCameraHal::openSessionmtkcam-devicemgr:finishOpenDevice2.4 S3: connectDevice end ⇒ CameraHal::configureStreams startCamera app 下发opensession后底层开始对sensor 进行poweron上电处理2.4.1 power on 上电 trace和你一起终身学习这里是程序员Androidpower on 上电 trace TAG:powerOnSensor0LogicalDev powerOninit(3A)AE initAF initFLASH initTUNING init2.4.2 power on 上电 log行 7595:03-1422:07:13.60260211273169I mtkcam-DeviceAdapter:0[HalDeviceAdapter::powerOn] powerOn 行 7605:03-1422:07:13.60307311273171D mtkcam-DeviceAdapter:[initSensor] powerOnSensor0 行 7638:03-1422:07:13.60504111273171D MtkCam/HalSensor:[powerOn] sensorIdx :0 行 8302:03-1422:07:13.82741011273169D lsc_nvram:[importEEPromData]Sensor(1) power on done,count(20),(m_eSensorDev u4PowerOn)(0) 行 8478:03-1422:07:13.84762611273171D MtkCam/HalSensor:[powerOn]-HalDeviceAdapter:0 ret:1, meSensorDev 0x1 行 8667:03-1422:07:13.87461011273169D MtkCam/Utils:{CamProfile}[HalDeviceAdapter:0::powerOn]3A Hal -:(0-th)[start--now:271 ms] 行 8677:03-1422:07:13.87506011273169D MtkCam/Utils:{CamProfile}[HalDeviceAdapter:0::powerOn]ISP Hal -:(1-th)[start--now:272 ms][last--now:0 ms] 行 8678:03-1422:07:13.87508111273169D MtkCam/Utils:{CamProfile}[HalDeviceAdapter:0::powerOn] Sensor powerOn -:(2-th)[start--now:272 ms][last--now:0 ms] 行 8680:03-1422:07:13.87514311273169I mtkcam-DeviceAdapter:0[HalDeviceAdapter::powerOn]3A notifyPowerOn 行 8688:03-1422:07:13.87531211273169D MtkCam/Utils:{CamProfile}[HalDeviceAdapter:0::powerOn]3A notifyPowerOn -:(3-th)[start--now:272 ms][last--now:0 ms] 行 8689:03-1422:07:13.87532611273169I mtkcam-DeviceAdapter:0[HalDeviceAdapter::powerOn] powerOn -2.4.3 Camera app opencamera 以及getCameraCharacteristicsCamera app photoDevice.openCamera 获取getCameraCharacteristics和你一起终身学习这里是程序员AndroidTrace TAGphotoDevice.openCameraopenCamera.createSettingsByStage12.4.4 Camera APP 开始配流预览拍照、缩略图Trace和你一起终身学习这里是程序员AndroidTrace TAG:AIDL::cpp::ICameraDeviceUser::beginConfigure::cppServercreateStreamendConfigureconfigureStreams2.4.5 Camera APP 开始配流预览拍照、缩略图Log行 8196:03-1422:07:13.76131928973180ICamAp_PhotoDevice2Controller:[configureSession], isFromOpen :true 行 8199:03-1422:07:13.76302428973163ICamAp_API2-Handler-0:[createCaptureRequest], pending time 0ms. 行 8207:03-1422:07:13.76423028973163ICamAp_API2-Handler-0:[createCaptureRequest]-, executing time 1ms. 行 8212:03-1422:07:13.76780128973163ICamAp_API2-Handler-0:[createCaptureSession], pending time 0ms. 行 8213:03-1422:07:13.76828028973163ICamAp_API2-Handler-0:[createCaptureSession] with mOutputConfigs 行 8230:03-1422:07:13.78226911271127I mtkcam_hal_aidl_device:[0-aidl-session::configureStreams]Stream{id:0, streamType:OUTPUT, width:1280, height:720, format:IMPLEMENTATION_DEFINED, usage:GPU_TEXTURE, dataSpace:UNKNOWN, rotation:ROTATION_0, physicalCameraId:, bufferSize:0, groupId:-1, sensorPixelModesUsed:[ANDROID_SENSOR_PIXEL_MODE_DEFAULT], dynamicRangeProfile:ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD, useCase:ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT, colorSpace:-1} 行 8232:03-1422:07:13.78232011271127I mtkcam_hal_aidl_device:[0-aidl-session::configureStreams]Stream{id:1, streamType:OUTPUT, width:4080, height:2296, format:BLOB, usage:CPU_READ_OFTEN, dataSpace:JFIF, rotation:ROTATION_0, physicalCameraId:, bufferSize:14461181, groupId:-1, sensorPixelModesUsed:[ANDROID_SENSOR_PIXEL_MODE_DEFAULT], dynamicRangeProfile:ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD, useCase:ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT, colorSpace:-1} 行 8233:03-1422:07:13.78240311271127I mtkcam_hal_aidl_device:[0-aidl-session::configureStreams]Stream{id:2, streamType:OUTPUT, width:160, height:96, format:YCBCR_420_888, usage:CPU_READ_OFTEN, dataSpace:JFIF, rotation:ROTATION_0, physicalCameraId:, bufferSize:0, groupId:-1, sensorPixelModesUsed:[ANDROID_SENSOR_PIXEL_MODE_DEFAULT], dynamicRangeProfile:ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP_STANDARD, useCase:ANDROID_SCALER_AVAILABLE_STREAM_USE_CASES_DEFAULT, colorSpace:-1} 行 8237:03-1422:07:13.78250211271127D mtkcam-dev3:[0-session::configureStreams] camera default configureStreams setConfigTimeCPUCtrl 行 8247:03-1422:07:13.78335411271127D mtkcam-dev3:[0-session::tryRunCommandLocked]Run command onConfigureStreamsLocked 行 8248:03-1422:07:13.78338311271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked] 行 8249:03-1422:07:13.78340911271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked]EnterCPU full run mode, timeout:1000 ms 行 9197:03-1422:07:13.91518411271127DMtkCam/ppl_context:[beginConfigure] 行 9201:03-1422:07:13.91523911271127DMtkCam/ppl_context:[beginConfigure]- 行 9389:03-1422:07:13.92878311271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked] halMaxBufferSize12HalStream.maxBuffers12 行 9390:03-1422:07:13.92880011271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked] halMaxBufferSize11HalStream.maxBuffers11 行 9391:03-1422:07:13.92881711271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked] halMaxBufferSize12HalStream.maxBuffers12 行 9392:03-1422:07:13.92883611271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked][setConfigMap] mImageConfigMap.size()3, mMetaConfigMap.size()1 行 9401:03-1422:07:13.92903611271127D mtkcam-AppStreamMgr:[AppMgr-configureStreams]01280x720 OUTImgFormat:0x11(NV21)BufPlanes(strides/sizeInBytes):[1280/9216001280/493440] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x00000000(UNKNOWN) s0:d0:App:YCrCb_420_SP:0|HW_TEXTUREAllocImgFormat:0x11(NV21)AllocBufPlanes(strides/sizeInBytes):[1280/9216001280/493440]Real:0x11(YCrCb_420_SP)Request:0x22(IMPLEMENTATION_DEFINED)Override:0x11(YCrCb_420_SP)Hal-Client-usage:0x100(0|HW_TEXTURE)Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE)HalStream::(consumer/producer)Usage:0/0x200330xb400007c8ac50690 phy:-1 行 9403:03-1422:07:13.92909111271127D mtkcam-AppStreamMgr:[AppMgr-configureStreams]0x14080x2296 OUTImgFormat:0x2300(JPEG)BufPlanes(strides/sizeInBytes):[14461181/14461184] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:11 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s1:d0:App:BLOB:0|SW_READ_OFTENAllocImgFormat:0x21(BLOB)AllocBufPlanes(strides/sizeInBytes):[14461181/14461184]Real:0x21(BLOB)Request:0x21(BLOB)Override:0x21(BLOB)Hal-Client-usage:0x3(0|SW_READ_OFTEN)Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE)HalStream::(consumer/producer)Usage:0/0x200330xb400007c8ac50310 phy:-1 行 9404:03-1422:07:13.92914811271127D mtkcam-AppStreamMgr:[AppMgr-configureStreams]0x2160x96 OUTImgFormat:0x11(NV21)BufPlanes(strides/sizeInBytes):[192/18432192/9504] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s2:d0:App:YCrCb_420_SP:0|SW_READ_OFTENAllocImgFormat:0x11(NV21)AllocBufPlanes(strides/sizeInBytes):[192/18432192/9504]Real:0x11(YCrCb_420_SP)Request:0x23(YCbCr_420_888)Override:0x23(YCbCr_420_888)Hal-Client-usage:0x3(0|SW_READ_OFTEN)Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE)HalStream::(consumer/producer)Usage:0/0x200330xb400007c8ac535d0 phy:-1 行 9409:03-1422:07:13.92924311271127D mtkcam-dev3:[0-session::onConfigureStreamsLocked]- 行 9413:03-1422:07:13.92930611271127I mtkcam-dev3:[0-session::tryRunCommandLocked]Run command onConfigureStreamsLocked - 行 9414:03-1422:07:13.92937511271127I mtkcam_hal_aidl_device:[0-aidl-session::configureStreams]HalStream{id:0, overrideFormat:YCRCB_420_SP, producerUsage:131123, consumerUsage:CPU_READ_NEVER, maxBuffers:12, overrideDataSpace:JFIF, physicalCameraId:-1, supportOffline:false, enableHalBufferManager:false} 行 9415:03-1422:07:13.92939611271127I mtkcam_hal_aidl_device:[0-aidl-session::configureStreams]HalStream{id:1, overrideFormat:BLOB, producerUsage:131123, consumerUsage:CPU_READ_NEVER, maxBuffers:11, overrideDataSpace:JFIF, physicalCameraId:-1, supportOffline:false, enableHalBufferManager:false} 行 9416:03-1422:07:13.92941311271127I mtkcam_hal_aidl_device:[0-aidl-session::configureStreams]HalStream{id:2, overrideFormat:YCBCR_420_888, producerUsage:131123, consumerUsage:CPU_READ_NEVER, maxBuffers:12, overrideDataSpace:JFIF, physicalCameraId:-1, supportOffline:false, enableHalBufferManager:false} 行 9586:03-1422:07:13.94869428973163ICamAp_API2-Handler-0:[createCaptureSession]-, executing time 181ms. 行 9587:03-1422:07:13.94897628973164ICamAp_API2-Handler-0:[onConfigured], session android.hardware.camera2.impl.CameraCaptureSessionImpl9221bde 行 9591:03-1422:07:13.94952428973180ICamAp_PhotoDevice2Controller:[onConfigured],session com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy3b7b1bf, mNeedFinalizeOutput:false2.5 S4: CameraHal::configureStreams和你一起终身学习这里是程序员AndroidTrace TAG:AIDL::cpp::ICameraDeviceUser::endConfigure::cppServerendConfigureconfigureStreamsCameraHal::configureStreams2.6 S5CameraHal::configureStreams 结束 --submitRequestList2.6.1 CameraHal::configureStreams 结束 --submitRequestList 下发预览请求 trace TAG和你一起终身学习这里是程序员Android2.6.2 submitRequestList 下发预览请求 trace TAG和你一起终身学习这里是程序员AndroidTrace TAG:AIDL::cpp::ICameraDeviceUser::submitRequestList::cppServersubmitRequestListsetStreamingRequestListsubmitRequestsHelpersetRepeatingRequests2.7 S6submitRequestList -- first full buffer2.7.1 第一帧预览请求第一帧预览请求 Trace第一帧预览请求的traceCamera FWK trace TAGsendRequestsBatchCameraHal::processBatchCaptureRequestsframe captureCamera HAL trace TAGprocessCaptureRequest第一帧预览请求 Log//25. Camera HAL 开始准备第一帧预览请求 [submitRequest] 4Cell/0 requestNo:0 03-1422:07:14.11157711271127D mtkcam-dev3-utils:[0-AppRequestUtil::createOneRequest] requestNumber[0]:StreamBuffer:0xb400007d4ac4a2c0 streamId:0 bufferId:1 buffer:0xb400007d1ac3a590 status:OK acquireFenceOp.hdl:0x0 releaseFenceOp.hdl:0x0 acquireFenceOp.fd:-1 releaseFenceOp.fd:-1 appBufferHandleHolder:0xb400007ddac86e68 freeByOthers:0/ 03-1422:07:14.11172211271127I mtkcam-AppStreamMgr:[earlyCallbackMeta] early callback metadata, requestNo:0 03-1422:07:14.11185311271127I mtkcam-PipelineModelSession: [submitRequest]4Cell/0 requestNo:0{//submit第一帧预览请求 repeating:0 control.aeTargetFpsRange:5,30//预览帧率配置 control.captureIntent:1// captureIntent 1: 预览 2 拍照 3 录像 4:录像抓拍 5ZSL control.enableZsl:0// 是否开启ZSL control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:1} 03-1422:07:14.11192811271127I mtkcam-FeatureSettingPolicy:[collectDefaultSensorInfo] keep the first request config asdefault config 03-1422:07:14.11266411271127I mtkcam-InitFrameHandler:[enqueue] RequestNo:0 FrameNo:0 // 26. Camera FWK 第一帧请求ok 03-1422:07:14.11352311271127D mtkcam-dev3:[0-session::processCaptureRequest]-1st request -OK2.7.2 第一帧出图callback 请求第一帧出图定位 callback Camera FWK 关键trace TAG和你一起终身学习这里是程序员AndroidTrace TAG:processCaptureResultsStream 0: first full buffer第一帧出图callback Camera HAL -- Camera FWK --Camera APP和你一起终身学习这里是程序员Android第一帧callback 流程Camera HAL --Camera FWK和你一起终身学习这里是程序员Android第一帧出图callback Camera HAL trace TAGprocessCaptureResult第一帧出图callback Camera FWK 关键 trace TAGfirst full bufferStream 0: first full bufferframe capture第一帧callback 流程Camera FWK --Camera APP和你一起终身学习这里是程序员AndroidCamera APP trace TAG:SurfaceTexture第一帧callback 流程 Log// 27. Camera HAL 出图并callback result 到上层 Frame timer: 预览出图 frame end updateResult callback 预览帧到上层 03-1422:07:14.11533411273168D mtkcam-AppStreamMgr:[0-FrameHandler::updateResult] requestNo 0, real time:1, last partial:0 03-1422:07:14.25071411273231D MtkCam/StreamingPipe/Timer:[print]Frame timer [# 1/ 0][t 19][io 0][tof 0/ 0][d 0/ 0][mss 0/ 0/ 0/ 0][a 18/ 4/ 13][tun 0/ 0][msf 0/ 0][vnr 0/ 0/ 0][am 0][b 0/ 0][tpi( 0/ 0)/( 0/ 0)/( 0/ 0)][vmdp_A 0/ 0 vmdp_B 0/ 0][h 7/ 0/ 0][e 0][r 0/ 0][w_A 0/ 0/ 0/ 0 w_B 0/ 0/ 0/ 0][x 0][disp 0/ 0][async 0/ 0][p2sm 0/ 0/ 0][fps0.00/0.00/ 5/ 30] 03-1422:07:14.28261811273223I MtkCam/Utils:{CamProfile}[CameraDevice3SessionImpl::onFrameUpdated] updateResult: requestNo:0 userId:0x16 OAppMeta#(left:0 this:1): (1-th) ( overtime 1 ms) [start--now: 5 ms] [last--now: 5 ms] 03-1422:07:14.28289211273223D mtkcam-pipeline:[onLastStrongRef][ requestNo:0 frameNo:0] frame end 03-1422:07:14.28384611273168D mtkcam-AppStreamMgr:[0-FrameHandler::updateResult] requestNo 0, real time:0, last partial:12.8 S7 first full buffer ⇒ 第一帧显示(onPreviewOk)第一帧callback 流程Camera APP --SurfaceFliger 送显示和你一起终身学习这里是程序员AndroidSF 显示trace TAGsurfaceflingervsync-sfBufferTxFence至此本篇已结束。转载网络的文章小编觉得很优秀欢迎点击阅读原文支持原创作者如有侵权恳请联系小编删除比如文章底部留言12小时内必删欢迎您的建议与指正。同时期待您的关注感谢您的阅读谢谢觉得有点用欢迎您点赞用时想查看顺手点在看❤️