MTK Camera 预览流程梳理systrace +Log篇

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、MTK Camera 预览流程
二、MTK Camera Trace 启动流程拆解

一、MTK Camera 预览流程

1.1 MTK camera app 预览大致流程

  1. Camera app 开始准备Open Camera call到Camera Service的 connect call 开始链接底层
  2. Camera FWK 响应 camera app 下发的open 动作
  3. Camera HAL 开始响应 下发的 open session
  4. open阶段为了启动速度,开始CPU提频进入perf模式
  5. Camera hal 层开始响应startOpenDevice attachOpenDeviceLocked
  6. Camera HAL 初始化 pipline 一些静态信息,调用Sensor HalDeviceAdapter 开始power on createInstance --> initSensor -->setSensorMclk 上电流程
  7. Camera HAL 初始化闪光灯
  8. Camera APP 检查open state 状态 CAMERA_OPENING,并匹配最合适的预览size,拍照size、缩略图size
  9. Camera app 创建会话请求后开始配流请求,
  10. Camera app 创建会话 开启配流
  11. 配置并申请 buffer
  12. OTP lsc校准数据获取
  13. 3A Hal、ISP Hal、 Sensor power on流程结束,开始向上callback 通知poweron 流程结束
  14. 预览场景需要走的Feature feature combination: MTK_CAMERA_SCENARIO_STREAMING_NORMAL
  15. 解析配流size ,parseStreamSize_4Cell select size 尺寸,选择sensormode
  16. 决策 P1 IMGO && RRZO 配置影响功耗
  17. 决策预览size ,FD size,sensor 出图size
  18. 开始配流
  19. 开始build P1 stream流信息
  20. pipeline context dump 预览流、拍照流、流经的node
  21. AppStreamMgr 配3路流 预览: 1280x720 ;拍照:4080x2296 ; 缩略图:160x96
  22. Camera app 创建会话结束 配流结束
  23. OTP 数据获取
  24. 配流结束,Camera APP 用于在CameraCaptureSession中设置预览请求,以实现连续的相机预览或视频录制等功能
  25. Camera HAL 开始准备第一帧预览请求 [submitRequest] <4Cell/0> requestNo:0
  26. Camera FWK 第一帧请求ok
  27. Camera HAL 出图并callback result 到上层 Frame timer: 预览出图 frame end updateResult callback 预览帧到上层

1.2 MTK camera app 预览 流程 log如下:

//1. Camera  app 开始准备Open Camera call到Camera Service的 connect call 开始链接底层
    03-14 22:07:13.569627  2897  2897 I CamAp_DeviceMgr2: [openCamera] cameraId = 0
    03-14 22:07:13.578430  1046  2371 I CameraService: CameraService::connect call (PID 2897 "com.mediatek.camera", camera ID 0) and Camera API version 2
    
    //2.camera FWK 响应 camera app  下发的open 动作
    03-14 22:07:13.584792  1046  2371 I Camera2ClientBase: Camera 0: Opened. Client: com.mediatek.camera (PID 2897, UID 10092)
    03-14 22:07:13.584858  1046  2371 I CameraDeviceClient: CameraDeviceClient 0: Opened
    
    //3. Camera  HAL 开始响应 下发的 open session 
    03-14 22:07:13.589530  1127  1127 I mtkcam-dev3: 0[CameraDevice3Impl::open] open camera3 device (device@1.1/internal/0) systraceLevel(1) instanceId(0) vid(0)
    03-14 22:07:13.590813  1127  1127 D mtkcam_hal_aidl_device: [0-aidl-session::open] +, callback=0xb400007c9aca8dc0  // 通过0-aidl-session::open 下发opensession 
    03-14 22:07:13.591310  1127  1127 I mtkcam-dev3: [0-session::open] +
    
    //4. open阶段为了启动速度,开始CPU提频进入perf模式
    03-14 22:07:13.591339  1127  1127 D mtkcam-dev3: [0-session::open] Enter camera perf mode
    03-14 22:07:13.591367  1127  1127 D Cam3CPUCtrl: [enterCameraPerf] enable PERF_RES_DRAM_CM_MGR_CAM_ENABLE
    03-14 22:07:13.591384  1127  1127 D Cam3CPUCtrl: [enterCameraPerf] enable PERF_RES_SCHED_PREFER_IDLE_TA
    03-14 22:07:13.591396  1127  1127 D Cam3CPUCtrl: [enterCameraPerf] enable PERF_RES_SCHED_PREFER_IDLE_FG
    03-14 22:07:13.591411  1127  1127 D Cam3CPUCtrl: [enterCameraPerf] enable PERF_RES_FPS_FPSGO_CONTROL
    03-14 22:07:13.591423  1127  1127 D Cam3CPUCtrl: [enterCameraPerf] enable PERF_RES_FPS_FBT_CEILING_ENABLE
    03-14 22:07:13.591434  1127  1127 D Cam3CPUCtrl: [enterCameraPerf] enable PERF_RES_FPS_FPSGO_CONTROL_HWUI
    03-14 22:07:13.591453  1127  1127 I mtkpower_client: perf_lock_acq, hdl:0, dur:0, num:12, pid:1127, tid:1127
    03-14 22:07:13.595494  1127  1127 D Cam3CPUCtrl: [enterCameraPerf] enterCameraPerf done
    
    // 5.Camera hal 层开始响应startOpenDevice attachOpenDeviceLocked
    03-14 22:07:13.598245  1127  1127 D mtkcam-devicemgr: [startOpenDevice] + device@1.1/internal/0 mActiveOperationCommandList.size:0 mOpenDeviceMap.size:0 mPhysEnumDeviceMap.size:3 mVirtEnumDeviceMap.size:5
    03-14 22:07:13.598763  1127  1127 I mtkcam-devicemgr: [attachOpenDeviceLocked] device: device@1.1/internal/0 openTimestamp:03-14 22:07:13.598
    03-14 22:07:13.599583  1127  1127 D mtkcam-dev3: [0-session::tryRunCommandLocked] Run command onOpenLocked +
    03-14 22:07:13.599616  1127  1127 D mtkcam-dev3: [0-session::onOpenLocked] +
    03-14 22:07:13.599646  1127  1127 D mtkcam-dev3: [0-session::onOpenLocked] Disable HalBufHandler
    
    // 6. Camera HAL 初始化 pipline 一些静态信息,调用Sensor HalDeviceAdapter 开始power on createInstance --> initSensor -->setSensorMclk 上电流程
    03-14 22:07:13.601516  1127  1127 I mtkcam-pipelinemodel: [initPipelineStaticInfo] idx[0]: sensorId[0]: fcellSensorPattern(2)
    03-14 22:07:13.602602  1127  3169 I mtkcam-DeviceAdapter: 0[HalDeviceAdapter::powerOn] powerOn +  // HalDeviceAdapter 开始poweron
    03-14 22:07:13.603036  1127  3169 D Hal3Av3 : [createInstance] sensorIdx(0) HalDeviceAdapter:0
    03-14 22:07:13.603073  1127  3171 D mtkcam-DeviceAdapter: [initSensor] powerOnSensor0      //初始化 powerOnSensor0
    03-14 22:07:13.603127  1127  3171 D MtkCam/HalSensorList: [querySecureState] Secure State is 0
    03-14 22:07:13.603161  1127  3171 D SeninfDrvImp: [init][init]: Entry count 0 
    03-14 22:07:13.605041  1127  3171 D MtkCam/HalSensor: [powerOn] sensorIdx : 0
    03-14 22:07:13.605756  1127  3171 D MtkCam/HalSensor: [setSensorMclk] sensorIdx 0, mclk_src 1, SensorMCLKPLL 1000 // SensorMCLKPLL
    
    // 7.Camera HAL 初始化闪光灯
    03-14 22:07:13.617934  1127  3169 I FlashHal: init().
    03-14 22:07:13.618039  1127  3169 I StrobeDrvFlashlightFops: openkd(): mUsers(1).
    03-14 22:07:13.618107  1127  3169 I StrobeDrvFlashlightFops: ioctl failed: type/ct (1,1) Inappropriate ioctl for device
    03-14 22:07:13.618134  1127  3169 E StrobeDrvFlashlight: getMaxDuty(): failed. (getMaxDuty){#266:vendor/mediatek/proprietary/hardware/mtkcam/aaa/source/isp_40/../common/strobe/strobe_drv_flashlight.cpp}
    03-14 22:07:13.618148  1127  3169 I StrobeDrvFlashlight: maxDuty:0
    03-14 22:07:13.629444  1127  3177 D MtkCam/SensorProviderService: (3177)[doEnableSensor] SensorManager createEventQueue successfully
    
    // 8. Camera APP 检查open state 状态  CAMERA_OPENING,并匹配最合适的预览size,拍照size、缩略图size
    03-14 22:07:13.674999  2897  3180 I CamAp_PhotoDevice2Controller: [openCamera] cameraId : 0,sync = false
    03-14 22:07:13.675183  2897  3180 I CamAp_PhotoDevice2Controller: [canOpenCamera] new id: 0 current camera :null isSameCamera = false current state : CAMERA_UNKNOWN isStateReady = true can open : true
    03-14 22:07:13.675373  2897  3180 I CamAp_DeviceMgr2: [openCamera] cameraId = 0
    03-14 22:07:13.725902  2897  3180 I CamAp_PhotoDevice2Controller: [onOpened]  camera2proxy = com.mediatek.camera.common.device.v2.Camera2Proxy@8ef6f46 preview surface = null  mCameraState = CAMERA_OPENINGcamera2Proxy id = 0 mCameraId = 0
    03-14 22:07:13.751381  2897  3180 I CamAp_CameraUtil: findBestMatchPanelSize size: 1280 X 720    // 匹配最合适的预览size
    03-14 22:07:13.751473  2897  3180 I CamAp_PhotoDevice2Controller: [updatePictureSize] :4080x2296 //拍照size、
    03-14 22:07:13.757624  2897  3180 I CamAp_CaptureSurface: [updatePictureInfo] width = 160,height = 96,format = 35,maxImage = 5, hasImageReader = false mCaptureType = thumbnail  //缩略图size
    
    //9.app 创建会话请求后开始配流请求, 
    03-14 22:07:13.761319  2897  3180 I CamAp_PhotoDevice2Controller: [configureSession] +, isFromOpen :true // app 创建会话 
    03-14 22:07:13.763024  2897  3163 I CamAp_API2-Handler-0: [createCaptureRequest]+, pending time = 0ms.   // app 创建预览请求
    03-14 22:07:13.763504  1127  1532 D mtkcam-dev3: [0-session::constructDefaultRequestSettings] -> constructDefaultRequestSettings (type:0x1)
    03-14 22:07:13.764230  2897  3163 I CamAp_API2-Handler-0: [createCaptureRequest]-, executing time = 1ms.
    
    //10. Camera app 创建会话  开启配流
    03-14 22:07:13.767801  2897  3163 I CamAp_API2-Handler-0: [createCaptureSession]+, pending time = 0ms.
    03-14 22:07:13.768280  2897  3163 I CamAp_API2-Handler-0: [createCaptureSession] with mOutputConfigs
    03-14 22:07:13.782269  1127  1127 I 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}
    03-14 22:07:13.782320  1127  1127 I 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}
    03-14 22:07:13.782403  1127  1127 I 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}
    03-14 22:07:13.816786  2897  2897 I CamAp_QuickActivity: onStart()
    03-14 22:07:13.820492  2897  2897 I CamAp_QuickActivity: onResume()
    
    //11.配置并申请 buffer
    03-14 22:07:13.782439  1127  1127 D mtkcam_hal_aidl_utils: [configBufferCacheMap] streamId:0x0, add to mBufferHandleCacheMap 
    03-14 22:07:13.782457  1127  1127 D mtkcam_hal_aidl_utils: [configBufferCacheMap] streamId:0x1, add to mBufferHandleCacheMap 
    03-14 22:07:13.782474  1127  1127 D mtkcam_hal_aidl_utils: [configBufferCacheMap] streamId:0x2, add to mBufferHandleCacheMap 
    03-14 22:07:13.831120  1127  3169 I DMABUFHEAPS: Using DMA-BUF heap named: mtk_mm
    03-14 22:07:13.831250  1127  3169 D MtkCam/IonHeap: [IonHeap::doAllocDma] allocate success...fd:18 1536x16-STA_BYTE-CT_0
    
    //12.OTP 校准数据获取
    03-14 22:07:13.827473  1127  3169 D CamCalHelper: CamCalHelper Get cal data.
    03-14 22:07:13.827494  1127  3169 I CamCalCamCal: ver0723 pCamCalData->deviceID=1
    03-14 22:07:13.827509  1127  3169 I CamCalCamCal: ver0723 g_lastSensorID=2376  pCamCalData->sensorID=5026
    03-14 22:07:13.827521  1127  3169 I CamCalCamCal: ver0723 s_preloadSizeLimitDefaultValue = 0x1500,change value to 0x214d
    03-14 22:07:13.827533  1127  3169 I CamCalCamCal: ver0723 u4Offset=0 u4Length=4 sensorID=5026
    03-14 22:07:13.827547  1127  3169 D CamCalHelper: CamCalHelper Read data from memory[0]
    03-14 22:07:13.827561  1127  3169 I CamCalCamCal: ver0723 Table[0] ID= 0x6000101, CID = 0x13000000
    03-14 22:07:13.827573  1127  3169 I CamCalCamCal: ver0723 Table[1] ID= 0x13000000, CID = 0x13000000
    03-14 22:07:13.827588  1127  3169 I CamCalCamCal: ver0723 CID Matched! DevID=1, DataVer=2
    03-14 22:07:13.827600  1127  3169 I CamCalCamCal: ver0723 LayoutType= 0x1
    03-14 22:07:13.827612  1127  3169 I CamCalCamCal: ver0723 result= 0x0
    03-14 22:07:13.827623  1127  3169 I CamCalCamCal: ver0723 result = 0, LayoutType = 1
    03-14 22:07:13.827635  1127  3169 I CamCalCamCal: ver0723  lsc table_size 1868
    03-14 22:07:13.827647  1127  3169 I CamCalCamCal: ver0723  u4Offset=53 u4Length=1868 
    03-14 22:07:13.827660  1127  3169 D CamCalHelper: CamCalHelper Read data from memory[0]
    03-14 22:07:13.827673  1127  3169 I CamCalCamCal: ver0723 ====================== SingleLsc Data==================
    03-14 22:07:13.827851  1127  3169 I CamCalCamCal: ver0723 ======================SNInfo==================
    
    //13.3A Hal、ISP Hal、  Sensor power on流程结束,开始向上callback 通知poweron 流程结束 
    03-14 22:07:13.847626  1127  3171 D MtkCam/HalSensor: [powerOn] - <HalDeviceAdapter:0> ret:1, meSensorDev = 0x1
    03-14 22:07:13.874610  1127  3169 D MtkCam/Utils: {CamProfile}[HalDeviceAdapter:0::powerOn] 3A Hal -: (0-th) ===> [start-->now: 271 ms]
    03-14 22:07:13.875060  1127  3169 D MtkCam/Utils: {CamProfile}[HalDeviceAdapter:0::powerOn] ISP Hal -: (1-th) ===> [start-->now: 272 ms] [last-->now: 0 ms]
    03-14 22:07:13.875081  1127  3169 D MtkCam/Utils: {CamProfile}[HalDeviceAdapter:0::powerOn] Sensor powerOn -: (2-th) ===> [start-->now: 272 ms] [last-->now: 0 ms]
    03-14 22:07:13.875123  1127  3169 D MtkCam/HwInfoHelper: [get4CellSensorPattern] SensorStaticInfo 4CellSensor_Pattern(type:6) (pattern:Packed)
    03-14 22:07:13.875143  1127  3169 I mtkcam-DeviceAdapter: 0[HalDeviceAdapter::powerOn] 3A notifyPowerOn //3a 上电成功
    03-14 22:07:13.875182  1127  3169 D Hal3Av3 : [notifyPwrOn]+ 
    03-14 22:07:13.875294  1127  3169 D Hal3Av3 : [notifyPwrOn]- 
    03-14 22:07:13.875312  1127  3169 D MtkCam/Utils: {CamProfile}[HalDeviceAdapter:0::powerOn] 3A notifyPowerOn -: (3-th) ===> [start-->now: 272 ms] [last-->now: 0 ms]
    03-14 22:07:13.875326  1127  3169 I mtkcam-DeviceAdapter: 0[HalDeviceAdapter::powerOn] powerOn - // poweron 流程结束
    
    //14.预览场景需要走的Feature  feature combination: MTK_CAMERA_SCENARIO_STREAMING_NORMAL
    03-14 22:07:13.881067  2897  3180 I CamAp_PhotoDevice2Controller: [canOpenCamera] new id: 0 current camera :0 isSameCamera = true current state : CAMERA_OPENED isStateReady = false can open : false
    03-14 22:07:13.907321  1127  1127 D mtkcam-FeatureSettingPolicy: [extractStreamConfiguration_Default] .AppConfiguration(#sessionParams=7,operation=0) .AppImageStreamInfo(videoConsumer=0) .3DNR(force=1,ap=0,dual=0,stereo=0) .EIS(ap=0,adv=0,adv_support=1,EM=0,multiZoom:0); proprietaryClient:1, AF:1, AIShutter:0
    03-14 22:07:13.907427  1127  1127 D mtkcam-customer_scenario_mgr: [customer_get_streaming_scenario] scenarioHint(isDualCam:0(0x0), streamingScenarioIndex:-1), isVideo(0)
    03-14 22:07:13.907445  1127  1127 I mtkcam-customer_scenario_mgr: [customer_get_streaming_scenario] no dedicated scenario, normal scenario
    03-14 22:07:13.907458  1127  1127 I mtkcam-customer_scenario_mgr: [customer_get_streaming_scenario] scenario:51
    03-14 22:07:13.907503  1127  1127 D mtkcam-customer_scenario_mgr: [customer_get_features_table_by_scenario] scenario:51, table size:1
    03-14 22:07:13.907541  1127  1127 I mtkcam-customer_scenario_mgr: [customer_get_features_table_by_scenario] find features for scenario(51 : MTK_CAMERA_SCENARIO_STREAMING_NORMAL) in logical map
    03-14 22:07:13.907582  1127  1127 I mtkcam-customer_scenario_mgr: [customer_get_streaming_config] streaming scenario config, fixMarginList(0), qCount(0)
    03-14 22:07:13.907601  1127  1127 I mtkcam-FeatureSettingPolicy: [updateStreamConfiguration] 
    scenario(MTK_CAMERA_SCENARIO_STREAMING_NORMAL) 
    for (openId:0, scenario:51, config: #fixedMargin=0, #queue=0 ) support feature:NO_FEATURE_NORMAL(0), 
    feature combination:MTK_FEATURE_COMBINATION_VIDEO_NORMAL(0x400c00181020) 
    03-14 22:07:13.908919  1127  1127 D mtkcam-FeatureSettingPolicy: [evaluateStreamConfiguration] 4-cell sensor: sensor[0] get CropMode sucess: (0)
    03-14 22:07:13.908983  1127  1127 D mtkcam-FeatureSettingPolicy: [evaluateStreamConfiguration] out->StreamingParams:{
    .additionalHalP1OutputBufferNum={ .imgo=0 .rrzo=2 .lcso=2 .rsso=0 .scaledYuv=0 } 
    .supportedScenarioFeatures=0x400c00181020  // MTK_FEATURE_COMBINATION_VIDEO_NORMAL(0x400c00181020)
    .disableInitRequest=0 .bForceIMGOPool=0 .RRZ=1.000000 .LMV=1 .RSS=(0/0) .PQ=1 .CZ=1 .DRE=0 .HFG=0 .DSDN=1 .EIS=0 .3DNR=67 .FSC=0x0(maxMargin=0) .HDR10=(0/0) .EISInfo(mode=0,factor=100,videoConfig=0,tsq=0,extra=0,preview=0) .batch[0](0) .p1Config[0](hdrhal=0x0,hdrsensor=0x0,aeTarget=0,expNum=0,fusNum=0) }

    //15.解析配流size ,parseStreamSize_4Cell select size 尺寸,选择sensormode 
    03-14 22:07:13.909196  1127  1127 I mtkcam-SensorSettingPolicy4cell: [operator()] default preview mode(0): width(2048), height(1536), fps(30)
    03-14 22:07:13.909213  1127  1127 I mtkcam-SensorSettingPolicy4cell: [parseStreamSize_4Cell] checkStreamSize(vAppImage_Jpeg)
    03-14 22:07:13.909244  1127  1127 I mtkcam-SensorSettingPolicy4cell: [parseStreamSize_4Cell] StreamId(0x1) image width 4080, height 2296
    03-14 22:07:13.909258  1127  1127 I mtkcam-SensorSettingPolicy4cell: [parseStreamSize_4Cell] StreamId(0x2) image width 160, height 96
    03-14 22:07:13.909270  1127  1127 I mtkcam-SensorSettingPolicy4cell: [parseStreamSize_4Cell] StreamId(0x2) set 4:3 sensor mode
    03-14 22:07:13.909284  1127  1127 I mtkcam-SensorSettingPolicy4cell: [parseSensorMode_4Cell] find match sensor mode 0
    03-14 22:07:13.909304  1127  1127 I mtkcam-SensorSettingPolicy4cell: select size(4096x3072)@30  sensorMode:1 hdrSensorMode:0 hdrHalMode:0 HfpsMode:0
    
    //16.决策 P1 IMGO && RRZO  配置影响功耗
    03-14 22:07:13.911623  1127  1127 I mtkcam-P1HwSettingPolicy: { .imgoAlloc={ format:0x2201 4096x3072 } 
    .imgoDefaultRequest={ format:0x2201 4096x3072 } //影响拍照size
    .imgoSeamlessRequest={ format:0 0x0 } 
    .rrzoDefaultRequest={ format:0x2205 1280x960 }  //影响预览size
    .rssoSize=288x512 .pixelMode=1 .usingCamSV=0 }
    
    //17.决策预览size ,FD size,sensor 出图size 
    03-14 22:07:13.912259  1127  1127 D mtkcam-ConfigStreamInfoPolicy: [evaluatePreviewSize] evaluate preview size : 1280x720
    03-14 22:07:13.912271  1127  1127 D mtkcam-ConfigStreamInfoPolicy: [evaluatePreviewSize] FD buffer size : 640x360
    03-14 22:07:13.913707  1127  1127 D MtkCam/HwInfoHelper: [getSensorOutputSize] w1 x h1 = 4096 x 3072
    
    //18.开始配流
    03-14 22:07:13.915145  1127  1127 I MtkCam/ppl_context: [PipelineContext] <4Cell/0> (0xb400007c7ac97120)
    03-14 22:07:13.915184  1127  1127 D MtkCam/ppl_context: [beginConfigure] +
    03-14 22:07:13.915239  1127  1127 D MtkCam/ppl_context: [beginConfigure] -
    
    //19.开始build P1 stream流信息
    03-14 22:07:13.915254  1127  1127 D mtkcam-PipelineContextBuilder: [configContextLocked_Streams] +
    03-14 22:07:13.915281  1127  1127 D mtkcam-PipelineContextBuilder: [configContextLocked_Streams] Jpeg Rotation enable: 1 support packed jpeg: 0
    03-14 22:07:13.915324  1127  1127 D mtkcam-PipelineContextBuilder: [configContextLocked_Streams] id : 0
    03-14 22:07:13.915343  1127  1127 D mtkcam-PipelineContextBuilder: [configContextLocked_Streams] Build P1 stream
    03-14 22:07:13.915359  1127  1127 D mtkcam-PipelineContextBuilder: [configContextLocked_Streams] New: p1 full raw(0xb400007deac478f0); resized raw(0xb400007deac48df0), bIsZslEnabled(1)
    03-14 22:07:13.915551  1127  1127 D MtkCam/IonHeap: [IonHeap::doAllocDma] allocate success...fd:35 640x360-YUY2-Hal:Image
    03-14 22:07:13.915941  1127  1127 D mtkcam-fbm_pool: [allocateBuffers] [Hal:Image:FD] max(5) min(1) mIonDevice(0xb400007d4ac45958)
    03-14 22:07:13.916212  1127  1127 D mtkcam-fbm_pool: [allocateBuffers] [Hal:Image:P1:Fullraw_main1] max(9) min(0) mIonDevice(0xb400007d4ac45f78)
    03-14 22:07:13.916355  1127  1127 D mtkcam-fbm_pool: [allocateBuffers] [Hal:Image:P1:Resizeraw_main1] max(11) min(0) mIonDevice(0xb400007d4ac45db8)
    03-14 22:07:13.916714  1127  3193 D MtkCam/IonHeap: [IonHeap::doAllocDma] allocate success...fd:36 640x360-YUY2-Hal:Image
    03-14 22:07:13.916830  1127  3193 D MtkCam/IonHeap: [IonHeap::doAllocDma] allocate success...fd:37 640x360-YUY2-Hal:Image
    03-14 22:07:13.916930  1127  3193 D MtkCam/IonHeap: [IonHeap::doAllocDma] allocate success...fd:43 640x360-YUY2-Hal:Image
    03-14 22:07:13.917077  1127  3195 D MtkCam/IonHeap: [IonHeap::doAllocDma] allocate success...fd:44 1280x960-FG_BYR10-Hal:Image
    03-14 22:07:13.917425  1127  3195 D Drv/IMem: [getBufPA_imgbuf] memID(44),PA(0xfb000000),username(1280x960-FG_BYR10-Hal:Image)
    03-14 22:07:13.917728  1127  3193 D MtkCam/IonHeap: [IonHeap::doAllocDma] allocate success...fd:45 640x360-YUY2-Hal:Image
    03-14 22:07:13.917789  1127  3193 D mtkcam-fbm_pool: [operator()] updateBufferCount: [Hal:Image:FD] done (5)
    03-14 22:07:13.918875  1127  1127 D MtkCam/HwInfoHelper: [alignPass1HwLimitation] rrzo size 4096x3072, stride 5120
    
    //20.pipeline context dump 预览流、拍照流、流经的node
    03-14 22:07:13.924301  1127  1127 I MtkCam/ppl_context: [dump] <4Cell/0>  //后主摄 4cell sensor 
    03-14 22:07:13.924341  1127  1127 I MtkCam/ppl_context: [dump] 
    .root={ 0x1 },   // 预览流、拍照流、流经的node
    .edges={(0x1 -> 0x15)(0x1 -> 0x14)(0x15 -> 0x16)(0x14 -> 0x16)(0x15 -> 0x23)(0x14 -> 0x23)}
                                         --->FDNode 0x16
                                        /
                  -->P2StreamNode 0x15-- 
                 /                      \
                /                        ---> JpegNode 0x23
    P1Node 0x1s->                                
                \                         --->FDNode 0x16
                 \                       /
                  -->P2CaptureNode 0x14-- 
                                         \
                                          ---> JpegNode 0x23
    
    03-14 22:07:13.924414  1127  1127 I MtkCam/ppl_context: [dump] <nodeId=0x1 (P1Node) NO-INIT>
    03-14 22:07:13.924438  1127  1127 I MtkCam/ppl_context: [dump]     In: .AppImage={ } .HalImage={ } .AppMeta={ 0x80000000 } .HalMeta={ 0x100000018 }
    03-14 22:07:13.924468  1127  1127 I MtkCam/ppl_context: [dump]    Out: .AppImage={ } .HalImage={ 0x100000001 0x100000003 0x100000004 } .AppMeta={ 0x100000024 } .HalMeta={ 0x10000001b }
    03-14 22:07:13.924493  1127  1127 I MtkCam/ppl_context: [dump] <nodeId=0x14 (P2CaptureNode) NO-INIT>
    03-14 22:07:13.924521  1127  1127 I MtkCam/ppl_context: [dump]     In: .AppImage={ } .HalImage={ 0x100000001 0x100000003 0x100000004 } .AppMeta={ 0x80000000 0x100000024 } .HalMeta={ 0x10000001b }
    03-14 22:07:13.924542  1127  1127 I MtkCam/ppl_context: [dump]    Out: .AppImage={ 0 0x2 } .HalImage={ 0x100000010 0x100000011 } .AppMeta={ 0x100000028 } .HalMeta={ 0x10000001f }
    03-14 22:07:13.924558  1127  1127 I MtkCam/ppl_context: [dump] <nodeId=0x15 (P2StreamNode) NO-INIT>
    03-14 22:07:13.924583  1127  1127 I MtkCam/ppl_context: [dump]     In: .AppImage={ } .HalImage={ 0x100000001 0x100000003 0x100000004 } .AppMeta={ 0x80000000 0x100000024 } .HalMeta={ 0x10000001b }
    03-14 22:07:13.924605  1127  1127 I MtkCam/ppl_context: [dump]    Out: .AppImage={ 0 0x2 } .HalImage={ 0x100000010 0x100000011 0x100000013 } .AppMeta={ 0x100000027 } .HalMeta={ 0x10000001e }
    03-14 22:07:13.924620  1127  1127 I MtkCam/ppl_context: [dump] <nodeId=0x16 (FDNode) NO-INIT>
    03-14 22:07:13.924638  1127  1127 I MtkCam/ppl_context: [dump]     In: .AppImage={ } .HalImage={ 0x100000013 } .AppMeta={ 0x80000000 } .HalMeta={ 0x10000001e }
    03-14 22:07:13.924655  1127  1127 I MtkCam/ppl_context: [dump]    Out: .AppImage={ } .HalImage={ } .AppMeta={ 0x100000029 } .HalMeta={ }
    03-14 22:07:13.924672  1127  1127 I MtkCam/ppl_context: [dump] <nodeId=0x23 (JpegNode) NO-INIT>
    03-14 22:07:13.924693  1127  1127 I MtkCam/ppl_context: [dump]     In: .AppImage={ } .HalImage={ 0x100000010 0x100000011 } .AppMeta={ 0x80000000 } .HalMeta={ 0x10000001e 0x10000001f }
    03-14 22:07:13.924710  1127  1127 I MtkCam/ppl_context: [dump]    Out: .AppImage={ 0x1 } .HalImage={ } .AppMeta={ 0x10000002a } .HalMeta={ }
    03-14 22:07:13.924723  1127  1127 I MtkCam/ppl_context: [dump] <image streams>
    03-14 22:07:13.924841  1127  1127 I MtkCam/ppl_context: [dump]     [IMAGE-APP-PROVIDER]0 1280x720  OUT ImgFormat:0x11(NV21) BufPlanes(strides/sizeInBytes):[ 1280/921600 1280/493440 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x00000000(UNKNOWN) s0:d0:App:YCrCb_420_SP:0|HW_TEXTURE AllocImgFormat:0x11(NV21) AllocBufPlanes(strides/sizeInBytes):[ 1280/921600 1280/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/0x20033 0xb400007c8ac50690 phy:-1
    03-14 22:07:13.924922  1127  1127 I MtkCam/ppl_context: [dump]     [IMAGE-APP-PROVIDER]0x1 4080x2296 OUT ImgFormat: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_OFTEN AllocImgFormat: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/0x20033 0xb400007c8ac50310 phy:-1
    03-14 22:07:13.925005  1127  1127 I MtkCam/ppl_context: [dump]     [IMAGE-APP-PROVIDER]0x2  160x96   OUT ImgFormat:0x11(NV21) BufPlanes(strides/sizeInBytes):[ 192/18432 192/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_OFTEN AllocImgFormat:0x11(NV21) AllocBufPlanes(strides/sizeInBytes):[ 192/18432 192/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/0x20033 0xb400007c8ac535d0 phy:-1
    03-14 22:07:13.925067  1127  1127 I MtkCam/ppl_context: [dump]     [IMAGE-HAL-POOL    ]0x100000001 4096x3072 ImgFormat:0x2201(BAYER10) BufPlanes(strides/sizeInBytes):[ 5120/15728640 ] startOffset:0 bufStep:0 t:0 maxBufNum:9 minInitBufNum:0 Hal:Image:P1:Fullraw_main1 AllocImgFormat:0x21(BLOB) AllocBufPlanes(strides/sizeInBytes):[ 15728640/15728640 ] Private{exist?0 id:0}
    03-14 22:07:13.925120  1127  1127 I MtkCam/ppl_context: [dump]     [IMAGE-HAL-POOL    ]0x100000003 1280x960  ImgFormat:0x2205(FG_BAYER10) BufPlanes(strides/sizeInBytes):[ 2400/2304000 ] startOffset:0 bufStep:0 t:0 maxBufNum:11 minInitBufNum:0 Hal:Image:P1:Resizeraw_main1 AllocImgFormat:0x2205(FG_BAYER10) AllocBufPlanes(strides/sizeInBytes):[ 2400/2304000 ] Private{exist?0 id:0}
    03-14 22:07:13.925182  1127  1127 I MtkCam/ppl_context: [dump]     [IMAGE-HAL-POOL    ]0x100000004 294912x1    ImgFormat:0x21(BLOB) BufPlanes(strides/sizeInBytes):[ 294912/294912 ] startOffset:0 bufStep:0 t:0 maxBufNum:12 minInitBufNum:1 Hal:Image:STT_main1 AllocImgFormat:0x21(BLOB) AllocBufPlanes(strides/sizeInBytes):[ 294912/294912 ] Private{exist?1 id:2}
    03-14 22:07:13.925246  1127  1127 I MtkCam/ppl_context: [dump]     [IMAGE-HAL-RUNTIME ]0x100000010 4080x2296 ImgFormat:0x11(NV21) BufPlanes(strides/sizeInBytes):[ 4080/9400320 4080/4700160 ] startOffset:0 bufStep:0 t:0 maxBufNum:11 minInitBufNum:0 Hal:Image:JpegYuv AllocImgFormat:0x11(NV21) AllocBufPlanes(strides/sizeInBytes):[ 4080/9400320 4080/4700160 ] Private{exist?0 id:0}
    03-14 22:07:13.925301  1127  1127 I MtkCam/ppl_context: [dump]     [IMAGE-HAL-RUNTIME ]0x100000011   -1x-1   ImgFormat:0x14(YUY2) BufPlanes(strides/sizeInBytes):[ 0/0 ] startOffset:0 bufStep:0 t:0 maxBufNum:11 minInitBufNum:0 Hal:Image:ThumbnailYuv AllocImgFormat:0x14(YUY2) AllocBufPlanes(strides/sizeInBytes):[ 0/0 ] Private{exist?0 id:0}
    03-14 22:07:13.925354  1127  1127 I MtkCam/ppl_context: [dump]     [IMAGE-HAL-POOL    ]0x100000013  640x360  ImgFormat:0x14(YUY2) BufPlanes(strides/sizeInBytes):[ 1280/460800 ] startOffset:0 bufStep:0 t:0 maxBufNum:5 minInitBufNum:1 Hal:Image:FD AllocImgFormat:0x14(YUY2) AllocBufPlanes(strides/sizeInBytes):[ 1280/460800 ] Private{exist?0 id:0}
    03-14 22:07:13.925370  1127  1127 I MtkCam/ppl_context: [dump] <meta streams>
    03-14 22:07:13.925396  1127  1127 I MtkCam/ppl_context: [dump]     [META -APP-USER    ]0x80000000 maxBuffers:0 minInitBufNum:0 Meta:App:Control phy:0
    03-14 22:07:13.925416  1127  1127 I MtkCam/ppl_context: [dump]     [META -HAL-USER    ]0x100000018 maxBuffers:10 minInitBufNum:1 Hal:Meta:Control_main1 phy:-1
    ... ...
    03-14 22:07:13.925589  1127  1127 I MtkCam/ppl_context: [dump] <image buffer pool>
    
    //21. AppStreamMgr 配3路流 预览: 1280x720 ;拍照:4080x2296 ; 缩略图:160x96 
    03-14 22:07:13.929036  1127  1127 D mtkcam-AppStreamMgr: [AppMgr-configureStreams]  0 1280x720  OUT ImgFormat:0x11(NV21) BufPlanes(strides/sizeInBytes):[ 1280/921600 1280/493440 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x00000000(UNKNOWN) s0:d0:App:YCrCb_420_SP:0|HW_TEXTURE AllocImgFormat:0x11(NV21) AllocBufPlanes(strides/sizeInBytes):[ 1280/921600 1280/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/0x20033 0xb400007c8ac50690 phy:-1
    03-14 22:07:13.929091  1127  1127 D mtkcam-AppStreamMgr: [AppMgr-configureStreams]  0x1 4080x2296 OUT ImgFormat: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_OFTEN AllocImgFormat: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/0x20033 0xb400007c8ac50310 phy:-1
    03-14 22:07:13.929148  1127  1127 D mtkcam-AppStreamMgr: [AppMgr-configureStreams]  0x2  160x96   OUT ImgFormat:0x11(NV21) BufPlanes(strides/sizeInBytes):[ 192/18432 192/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_OFTEN AllocImgFormat:0x11(NV21) AllocBufPlanes(strides/sizeInBytes):[ 192/18432 192/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/0x20033 0xb400007c8ac535d0 phy:-1
    03-14 22:07:13.929375  1127  1127 I 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}
    03-14 22:07:13.929396  1127  1127 I 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}
    03-14 22:07:13.929413  1127  1127 I 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}
    
    //22. Camera app 创建会话结束 配流结束
    //03-14 22:07:13.767801  2897  3163 I CamAp_API2-Handler-0: [createCaptureSession]+, pending time = 0ms.
    03-14 22:07:13.948694  2897  3163 I CamAp_API2-Handler-0: [createCaptureSession]-, executing time = 181ms.
    03-14 22:07:13.948976  2897  3164 I CamAp_API2-Handler-0: [onConfigured], session = android.hardware.camera2.impl.CameraCaptureSessionImpl@9221bde
    03-14 22:07:13.949524  2897  3180 I CamAp_PhotoDevice2Controller: [onConfigured],session = com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@3b7b1bf, mNeedFinalizeOutput:false
    
    //23. OTP 数据获取
    03-14 22:07:14.055323  1127  3200 D awb_mgr : [getEEPROMData()][1]
    03-14 22:07:14.055383  1127  3200 D CamCalHelper: CamCalHelper Get cal data.
    03-14 22:07:14.055404  1127  3200 I CamCalCamCal: ver0723 pCamCalData->deviceID=1
    03-14 22:07:14.055420  1127  3200 I CamCalCamCal: ver0723 g_lastSensorID=5026  pCamCalData->sensorID=5026
    03-14 22:07:14.055435  1127  3200 I CamCalCamCal: ver0723 s_preloadSizeLimitDefaultValue = 0x1500,change value to 0x214d
    03-14 22:07:14.055449  1127  3200 I CamCalCamCal: ver0723 result = 0, LayoutType = 1
    03-14 22:07:14.055464  1127  3200 I CamCalCamCal: ver0723 DoCamCal2AGain : enter..BlockSize=23 SensorID=5026
    03-14 22:07:14.055481  1127  3200 D CamCalHelper: CamCalHelper Read data from memory[0]
    03-14 22:07:14.055498  1127  3200 I CamCalCamCal: ver0723 DoCamCal2AGain : ======================AF CAM_CAL==================
    03-14 22:07:14.055513  1127  3200 I CamCalCamCal: ver0723 DoCamCal2AGain : [AFInf] = 441
    03-14 22:07:14.055527  1127  3200 I CamCalCamCal: ver0723 DoCamCal2AGain : [AFMacro] = 739
    03-14 22:07:14.055542  1127  3200 I CamCalCamCal: ver0723 DoCamCal2AGain : ======================AF CAM_CAL==================
    03-14 22:07:14.055624  1127  3200 I CamCalCamCal: ver0723 DoCamCal2AGain : ======================AWB CAM_CAL==================
    03-14 22:07:14.068210  1127  3241 I CamCalCamCal: ver0723 ======================PDAF Data==================
    
    //24. 配流结束,Camera APP 用于在CameraCaptureSession中设置预览请求,以实现连续的相机预览或视频录制等功能
    03-14 22:07:14.080826  2897  3163 I CamAp_API2-Handler-0: [setRepeatingRequest]+, pending time = 1ms
    03-14 22:07:14.086297  2897  3163 I CamAp_API2-Handler-0: [setRepeatingRequest]-, executing time = 5ms.
    
    //25. Camera HAL 开始准备第一帧预览请求 [submitRequest] <4Cell/0> requestNo:0
    03-14 22:07:14.111577  1127  1127 D 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-14 22:07:14.111722  1127  1127 I mtkcam-AppStreamMgr: [earlyCallbackMeta] early callback metadata, requestNo: 0
    03-14 22:07:14.111853  1127  1127 I mtkcam-PipelineModelSession: 
    [submitRequest] <4Cell/0> requestNo:0 {  //submit第一帧预览请求
    repeating:0 
    control.aeTargetFpsRange:5,30   //预览帧率配置
    control.captureIntent:1         // captureIntent 1: 预览; 2: 拍照 ;3: 录像; 4:录像抓拍 5:ZSL
    control.enableZsl:0             // 是否开启ZSL
    control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:1 }
    03-14 22:07:14.111928  1127  1127 I mtkcam-FeatureSettingPolicy: [collectDefaultSensorInfo] keep the first request config as default config
    03-14 22:07:14.112664  1127  1127 I mtkcam-InitFrameHandler: [enqueue] RequestNo:0 FrameNo:0
    
    // 26. Camera FWK  第一帧请求ok
    03-14 22:07:14.113523  1127  1127 D mtkcam-dev3: [0-session::processCaptureRequest] -> 1st request - OK
    
    // 27. Camera  HAL  出图并callback result 到上层 Frame timer: 预览出图  frame end  updateResult callback 预览帧到上层 
    03-14 22:07:14.115334  1127  3168 D mtkcam-AppStreamMgr: [0-FrameHandler::updateResult] requestNo 0, real time:1, last partial:0
    03-14 22:07:14.250714  1127  3231 D 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-14 22:07:14.282892  1127  3223 D mtkcam-pipeline: [onLastStrongRef] [ requestNo:0 frameNo:0 ] frame end
    03-14 22:07:14.283846  1127  3168 D mtkcam-AppStreamMgr: [0-FrameHandler::updateResult] requestNo 0, real time:0, last partial:1

二、MTK Camera Trace 启动流程拆解

1.MTK Camera app 启动阶段拆解表格

启动阶段模块trace 关键字
S0系统deliverInputEvent(AppLaunch_dispatchPtr:Up桌面相机图标点击事件处理 ) ⇒ activityStart或Camera APP 进程创建
S1Camera APPactivityStart或Camera APP 进程创建 ⇒ connectDevice
S2Camera HALconnectDevice
S3Camera APPconnectDevice end ⇒ CameraHal::configureStreams start
S4Camera HALCameraHal::configureStreams
S5Camera APPCameraHal::configureStreams end ⇒ setRepeatingRequest start
S6Camera HALsetRepeatingRequest start ⇒ first full buffer
S7Camera APP、SFfirst full buffer ⇒ 第一帧显示(onPreviewOk)

2 MTK Camera 预览流程trace 拆解

2.1 S0:AppLaunch_dispatchPtr:Up /deliverInputEvent (桌面相机图标点击事件处理) --> APP 进程创建

和你一起终身学习,这里是程序员Android

点击事件 Trace TAG:
AppLaunch_dispatchPtr:Up
deliverInputEvent

2.2 S1: activityStart或Camera APP 进程创建 ⇒ connectDevice

从Touch UP 到 ActivityStart 阶段,系统创建App进程耗时:

和你一起终身学习,这里是程序员Android

Camera APP 进程创建trace TAG
PostFork
ZygoteInit
ActivityThreadMain
bindApplication
activityStart
Activity.onCreate
activityResume

  • 1.PostFork 耗时需要排查 Zygote.java 代码

Zygote.java frameworks\base\core\java\com\android\internal\os

    1. ZygoteInit 耗时需要排查ZygoteInit.java 代码

ZygoteInit.java frameworks\base\core\java\com\android\internal\os

  • 3.ActivityThreadMain耗时需要排查ActivityThread.java代码

ActivityThread.java frameworks\base\core\java\android\app

    1. bindApplication 耗时需要排查ActivityThread.java代码,同上
    1. 从 ActivityStart 到 App 层 OpenCamera 耗时

Camera App 开始执行 MainActivity 一系列 onCreate,onStart,onResume,openCamera等操作

和你一起终身学习,这里是程序员Android

5.1. activityStart 耗时需要排查 LaunchActivityItem.java 代码
LaunchActivityItem.java frameworks\base\core\java\android\app\servertransaction
5.2. ResumeActivityItem耗时需要排查 ResumeActivityItem.java 代码
ResumeActivityItem.java frameworks\base\core\java\android\app\servertransaction
5.3. Choreographer#doFrame 耗时需要排查 Choreographer.java 代码
Choreographer.java frameworks\base\core\java\android\view

  • 6.Framework层 cameraserver 开始响应App getCameraCharacteristics 、connectDevice 等操作。
camera Server 在此期间的行为

open camera 前的Trace TAG
getCameraCharacteristics
connectDevice

2.3 S2: connectDevice

和你一起终身学习,这里是程序员Android

连接Camera 期间的Trace TAG:
AIDL::cpp::ICameraService::connectDevice::cppServer
connectDevice
CameraHal::openSession
mtkcam-devicemgr:finishOpenDevice

2.4 S3: connectDevice end ⇒ CameraHal::configureStreams start

Camera app 下发opensession后,底层开始对sensor 进行poweron上电处理

2.4.1 power on 上电 trace
和你一起终身学习,这里是程序员Android

power on 上电 trace TAG:
powerOnSensor0
LogicalDev powerOn
init(3A)
AE init
AF init
FLASH init
TUNING init

2.4.2 power on 上电 log
行  7595: 03-14 22:07:13.602602  1127  3169 I mtkcam-DeviceAdapter: 0[HalDeviceAdapter::powerOn] powerOn +
    行  7605: 03-14 22:07:13.603073  1127  3171 D mtkcam-DeviceAdapter: [initSensor] powerOnSensor0
    行  7638: 03-14 22:07:13.605041  1127  3171 D MtkCam/HalSensor: [powerOn] sensorIdx : 0
    行  8302: 03-14 22:07:13.827410  1127  3169 D lsc_nvram: [importEEPromData] Sensor(1) power on done, count(20), (m_eSensorDev & u4PowerOn)(0)
    行  8478: 03-14 22:07:13.847626  1127  3171 D MtkCam/HalSensor: [powerOn] - <HalDeviceAdapter:0> ret:1, meSensorDev = 0x1
    行  8667: 03-14 22:07:13.874610  1127  3169 D MtkCam/Utils: {CamProfile}[HalDeviceAdapter:0::powerOn] 3A Hal -: (0-th) ===> [start-->now: 271 ms]
    行  8677: 03-14 22:07:13.875060  1127  3169 D MtkCam/Utils: {CamProfile}[HalDeviceAdapter:0::powerOn] ISP Hal -: (1-th) ===> [start-->now: 272 ms] [last-->now: 0 ms]
    行  8678: 03-14 22:07:13.875081  1127  3169 D MtkCam/Utils: {CamProfile}[HalDeviceAdapter:0::powerOn] Sensor powerOn -: (2-th) ===> [start-->now: 272 ms] [last-->now: 0 ms]
    行  8680: 03-14 22:07:13.875143  1127  3169 I mtkcam-DeviceAdapter: 0[HalDeviceAdapter::powerOn] 3A notifyPowerOn
    行  8688: 03-14 22:07:13.875312  1127  3169 D MtkCam/Utils: {CamProfile}[HalDeviceAdapter:0::powerOn] 3A notifyPowerOn -: (3-th) ===> [start-->now: 272 ms] [last-->now: 0 ms]
    行  8689: 03-14 22:07:13.875326  1127  3169 I mtkcam-DeviceAdapter: 0[HalDeviceAdapter::powerOn] powerOn -
2.4.3 Camera app opencamera 以及getCameraCharacteristics

Camera app photoDevice.openCamera 获取getCameraCharacteristics

和你一起终身学习,这里是程序员Android

Trace TAG:
photoDevice.openCamera
openCamera.createSettingsByStage1

2.4.4 Camera APP 开始配流(预览,拍照、缩略图)Trace
和你一起终身学习,这里是程序员Android

Trace TAG:
AIDL::cpp::ICameraDeviceUser::beginConfigure::cppServer
createStream
endConfigure
configureStreams
2.4.5 Camera APP 开始配流(预览,拍照、缩略图)Log
行  8196: 03-14 22:07:13.761319  2897  3180 I CamAp_PhotoDevice2Controller: [configureSession] +, isFromOpen :true
    行  8199: 03-14 22:07:13.763024  2897  3163 I CamAp_API2-Handler-0: [createCaptureRequest]+, pending time = 0ms.
    行  8207: 03-14 22:07:13.764230  2897  3163 I CamAp_API2-Handler-0: [createCaptureRequest]-, executing time = 1ms.
    行  8212: 03-14 22:07:13.767801  2897  3163 I CamAp_API2-Handler-0: [createCaptureSession]+, pending time = 0ms.
    行  8213: 03-14 22:07:13.768280  2897  3163 I CamAp_API2-Handler-0: [createCaptureSession] with mOutputConfigs
    行  8230: 03-14 22:07:13.782269  1127  1127 I 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-14 22:07:13.782320  1127  1127 I 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-14 22:07:13.782403  1127  1127 I 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-14 22:07:13.782502  1127  1127 D mtkcam-dev3: [0-session::configureStreams] camera default configureStreams setConfigTimeCPUCtrl
    行  8247: 03-14 22:07:13.783354  1127  1127 D mtkcam-dev3: [0-session::tryRunCommandLocked] Run command onConfigureStreamsLocked +
    行  8248: 03-14 22:07:13.783383  1127  1127 D mtkcam-dev3: [0-session::onConfigureStreamsLocked] +
    行  8249: 03-14 22:07:13.783409  1127  1127 D mtkcam-dev3: [0-session::onConfigureStreamsLocked] Enter CPU full run mode, timeout: 1000 ms
    行  9197: 03-14 22:07:13.915184  1127  1127 D MtkCam/ppl_context: [beginConfigure] +
    行  9201: 03-14 22:07:13.915239  1127  1127 D MtkCam/ppl_context: [beginConfigure] -
    行  9389: 03-14 22:07:13.928783  1127  1127 D mtkcam-dev3: [0-session::onConfigureStreamsLocked] halMaxBufferSize=12 HalStream.maxBuffers=12
    行  9390: 03-14 22:07:13.928800  1127  1127 D mtkcam-dev3: [0-session::onConfigureStreamsLocked] halMaxBufferSize=11 HalStream.maxBuffers=11
    行  9391: 03-14 22:07:13.928817  1127  1127 D mtkcam-dev3: [0-session::onConfigureStreamsLocked] halMaxBufferSize=12 HalStream.maxBuffers=12
    行  9392: 03-14 22:07:13.928836  1127  1127 D mtkcam-dev3: [0-session::onConfigureStreamsLocked] [setConfigMap] mImageConfigMap.size()=3, mMetaConfigMap.size()=1
    行  9401: 03-14 22:07:13.929036  1127  1127 D mtkcam-AppStreamMgr: [AppMgr-configureStreams]  0 1280x720  OUT ImgFormat:0x11(NV21) BufPlanes(strides/sizeInBytes):[ 1280/921600 1280/493440 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x00000000(UNKNOWN) s0:d0:App:YCrCb_420_SP:0|HW_TEXTURE AllocImgFormat:0x11(NV21) AllocBufPlanes(strides/sizeInBytes):[ 1280/921600 1280/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/0x20033 0xb400007c8ac50690 phy:-1
    行  9403: 03-14 22:07:13.929091  1127  1127 D mtkcam-AppStreamMgr: [AppMgr-configureStreams]  0x1 4080x2296 OUT ImgFormat: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_OFTEN AllocImgFormat: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/0x20033 0xb400007c8ac50310 phy:-1
    行  9404: 03-14 22:07:13.929148  1127  1127 D mtkcam-AppStreamMgr: [AppMgr-configureStreams]  0x2  160x96   OUT ImgFormat:0x11(NV21) BufPlanes(strides/sizeInBytes):[ 192/18432 192/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_OFTEN AllocImgFormat:0x11(NV21) AllocBufPlanes(strides/sizeInBytes):[ 192/18432 192/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/0x20033 0xb400007c8ac535d0 phy:-1
    行  9409: 03-14 22:07:13.929243  1127  1127 D mtkcam-dev3: [0-session::onConfigureStreamsLocked] -
    行  9413: 03-14 22:07:13.929306  1127  1127 I mtkcam-dev3: [0-session::tryRunCommandLocked] Run command onConfigureStreamsLocked -
    行  9414: 03-14 22:07:13.929375  1127  1127 I 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-14 22:07:13.929396  1127  1127 I 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-14 22:07:13.929413  1127  1127 I 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-14 22:07:13.948694  2897  3163 I CamAp_API2-Handler-0: [createCaptureSession]-, executing time = 181ms.
    行  9587: 03-14 22:07:13.948976  2897  3164 I CamAp_API2-Handler-0: [onConfigured], session = android.hardware.camera2.impl.CameraCaptureSessionImpl@9221bde
    行  9591: 03-14 22:07:13.949524  2897  3180 I CamAp_PhotoDevice2Controller: [onConfigured],session = com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@3b7b1bf, mNeedFinalizeOutput:false

2.5 S4: CameraHal::configureStreams

和你一起终身学习,这里是程序员Android

Trace TAG:
AIDL::cpp::ICameraDeviceUser::endConfigure::cppServer
endConfigure
configureStreams
CameraHal::configureStreams

2.6 S5:CameraHal::configureStreams 结束 -->submitRequestList

2.6.1 CameraHal::configureStreams 结束 -->submitRequestList 下发预览请求 trace TAG
和你一起终身学习,这里是程序员Android
2.6.2 submitRequestList 下发预览请求 trace TAG
和你一起终身学习,这里是程序员Android

Trace TAG:
AIDL::cpp::ICameraDeviceUser::submitRequestList::cppServer
submitRequestList
setStreamingRequestList
submitRequestsHelper
setRepeatingRequests

2.7 S6:submitRequestList --> first full buffer

2.7.1 第一帧预览请求
第一帧预览请求 Trace
第一帧预览请求的trace

Camera FWK trace TAG:
sendRequestsBatch
CameraHal::processBatchCaptureRequests
frame capture

Camera HAL trace TAG:
processCaptureRequest

第一帧预览请求 Log
//25. Camera HAL 开始准备第一帧预览请求 [submitRequest] <4Cell/0> requestNo:0
    03-14 22:07:14.111577  1127  1127 D 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-14 22:07:14.111722  1127  1127 I mtkcam-AppStreamMgr: [earlyCallbackMeta] early callback metadata, requestNo: 0
    03-14 22:07:14.111853  1127  1127 I mtkcam-PipelineModelSession: 
    [submitRequest] <4Cell/0> requestNo:0 {  //submit第一帧预览请求
    repeating:0 
    control.aeTargetFpsRange:5,30   //预览帧率配置
    control.captureIntent:1         // captureIntent 1: 预览; 2: 拍照 ;3: 录像; 4:录像抓拍 5:ZSL
    control.enableZsl:0             // 是否开启ZSL
    control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:1 }
    03-14 22:07:14.111928  1127  1127 I mtkcam-FeatureSettingPolicy: [collectDefaultSensorInfo] keep the first request config as default config
    03-14 22:07:14.112664  1127  1127 I mtkcam-InitFrameHandler: [enqueue] RequestNo:0 FrameNo:0
    
    // 26. Camera FWK  第一帧请求ok
    03-14 22:07:14.113523  1127  1127 D mtkcam-dev3: [0-session::processCaptureRequest] -> 1st request - OK
2.7.2 第一帧出图callback 请求
第一帧出图定位: callback Camera FWK 关键trace TAG
和你一起终身学习,这里是程序员Android

Trace TAG:
processCaptureResults
Stream 0: first full buffer
第一帧出图callback Camera HAL --> Camera FWK -->Camera APP
和你一起终身学习,这里是程序员Android
第一帧callback 流程(Camera HAL -->Camera FWK)
和你一起终身学习,这里是程序员Android

第一帧出图callback Camera HAL trace TAG
processCaptureResult
第一帧出图callback Camera FWK 关键 trace TAG:first full buffer
Stream 0: first full buffer
frame capture

第一帧callback 流程(Camera FWK -->Camera APP)
和你一起终身学习,这里是程序员Android

Camera APP trace TAG:
SurfaceTexture

第一帧callback 流程 Log
// 27. Camera  HAL  出图并callback result 到上层 Frame timer: 预览出图  frame end  updateResult callback 预览帧到上层 
    03-14 22:07:14.115334  1127  3168 D mtkcam-AppStreamMgr: [0-FrameHandler::updateResult] requestNo 0, real time:1, last partial:0
    03-14 22:07:14.250714  1127  3231 D 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-14 22:07:14.282618  1127  3223 I 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-14 22:07:14.282892  1127  3223 D mtkcam-pipeline: [onLastStrongRef] [ requestNo:0 frameNo:0 ] frame end
    03-14 22:07:14.283846  1127  3168 D mtkcam-AppStreamMgr: [0-FrameHandler::updateResult] requestNo 0, real time:0, last partial:1

2.8 S7: first full buffer ⇒ 第一帧显示(onPreviewOk)

第一帧callback 流程(Camera APP -->SurfaceFliger 送显示)
和你一起终身学习,这里是程序员Android

SF 显示trace TAG:
surfaceflinger
vsync-sf
BufferTx
Fence

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

点个在看,为大佬点赞!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值