MTK 闪光灯拍照流程

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

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

一、Flash 基础知识
二、MTK 闪光灯拍照l分析

一、Flash 基础知识

1.1 Flash HAL 场景枚举值

Flash HAL 场景枚举值

1.2 AE AF mode State 枚举值

AE AF mode State 枚举值

1.3 AWB mode State 枚举值

AWB mode State 枚举值

二、MTK 闪光灯拍照分析

2.1 闪光灯拍照预闪、主闪总体流程

2.2 拍照log关键字

connect call|AppMgr-configureStreams|AppMgr-ResCbHelper::performCallback\] requestNo:0|Frame timer \[# 1/|convertCallbackParcelToHidl\] requestNo:0|evaluateCaptureSetting|capture req#|setduty|setonoff|setFlashO|takePicture|onShutterButtonClick|submitRequest.*control.captureIntent:2|submitRequest.*requestNo:0|MTK_CONTROL_AF_TRIGGER|MTK_CONTROL_AE_PRECAPTURE_TRIGGER|Backup|Precapture Trigger|AEPrecaptureStart|endPrecapture|doCapAE|CaptureNode.*queue|CaptureProcessor.*onEnque|CaptureProcessor.*onContinue|CaptureProcessor.*notifyRelease|Open with FUSE

2.3 MTK Camera log 分析

2.3.1 闪光灯第一次打闪:预闪

预闪备份2A

2.3.2 闪光灯第二次打闪:主闪

主闪存图

2.3.3 MTK camera 闪光灯拍照 log

MTK 相机on 状态下,闪光灯拍照走预闪,主闪流程。

// 相机调用
    02-10 11:20:30.671910  1001 26533 I CameraService: CameraService::connect call (PID 26709 "com.mediatek.camera", camera ID 0) and Camera API version 2
    //预览、拍照、缩略图尺寸
    02-10 11:20:30.852660  4720  5025 D mtkcam-AppStreamMgr: [AppMgr-configureStreams]  0 1920x1080 OUT ImgFormat:0x11(NV21) BufPlanes(strides/sizeInBytes):[ 1920/2073600 1920/1062720 ] 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):[ 1920/2073600 1920/1062720 ] 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 0xb400007a43dcde50 phy:-1
    02-10 11:20:30.852684  4720  5025 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 0xb400007a43dce8d0 phy:-1
    02-10 11:20:30.852710  4720  5025 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 0xb400007a43d9f310 phy:-1
    //第一帧请求 requestNo:0 第一帧  control.captureIntent:1 行为为预览
    02-10 11:20:31.076045  4720  5025 I mtkcam-PipelineModelSession: [submitRequest] <4Cell/0> requestNo:0 { repeating:0 control.aeTargetFpsRange:10,30 control.captureIntent:1 control.enableZsl:0 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:1 }
    //第一帧出图
    02-10 11:20:31.232717  4720 26780 D MtkCam/StreamingPipe/Timer: [print]Frame timer [#    1/   0][t  47][io   0][tof  0/  0][d  0/  0][mss  0/  0/  0/  0][a 47/ 24/ 22][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  3/  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/ 10/ 30]
    //第一帧callback image && meta
    02-10 11:20:31.234330  4720 26736 D mtkcam-AppStreamMgr: [0-CallbackHandler::convertCallbackParcelToHidl] requestNo:0 o:image#:1
    02-10 11:20:31.234601  4720 26735 D mtkcam-AppStreamMgr: [0:AppMgr-ResCbHelper::performCallback] requestNo:0 o:image#:1
    02-10 11:20:31.234619  4720 26735 D mtkcam-AppStreamMgr: [0:AppMgr-ResCbHelper::performCallback] requestNo:0
    02-10 11:20:31.320917  4720 26736 D mtkcam-AppStreamMgr: [0-CallbackHandler::convertCallbackParcelToHidl] requestNo:0 o:meta#:4
    02-10 11:20:31.321192  4720 26735 D mtkcam-AppStreamMgr: [0:AppMgr-ResCbHelper::performCallback] requestNo:0 o:meta#:1
    02-10 11:20:31.321293  4720 26735 D mtkcam-AppStreamMgr: [0:AppMgr-ResCbHelper::performCallback] requestNo:0
    //预闪 AE AF tag  MTK_CONTROL_AE_PRECAPTURE_TRIGGER
    02-10 11:20:33.500835  4720  5014 D Hal3Av3 : [parseMeta] MTK_CONTROL_AE_PRECAPTURE_TRIGGER(0 -> 1)
    02-10 11:20:33.500874  4720  5014 D Hal3Av3 : [parseMeta] MTK_CONTROL_AF_TRIGGER(0 -> 1)
    02-10 11:20:33.500897  4720  5014 D Hal3Av3 : [parseMeta] MTK_CONTROL_AF_TRIGGER_ID(1)
    02-10 11:20:33.540439  4720 26740 D Hal3Av3 : [setNormal] Precapture Trigger @ i4MagicNum(62)
    02-10 11:20:33.540502  4720 26740 W TaskMgr : [sendEvent] AEPrecaptureStart, fgLampflashCond(1)
    02-10 11:20:33.541150  4720 25786 D Hal3Av3 : [parseMeta] MTK_CONTROL_AE_PRECAPTURE_TRIGGER(1 -> 0)
    02-10 11:20:33.541199  4720 25786 D Hal3Av3 : [parseMeta] MTK_CONTROL_AF_TRIGGER(1 -> 0)
    // 2A backup doBackupAE AWB
    02-10 11:20:33.546911  4720 26740 D ae_mgr  : [doBackupAE()+] i4SensorDev:1
    02-10 11:20:33.546930  4720 26740 D ae_mgr  : [doBackupAE()-] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/5904/4100 (ISO:144) m_rAESettingBackup.u4Index/F:111/335 (IndexBase:3)Pre-flash:0 
    02-10 11:20:33.565240  4720 26740 D awb_mgr : [backup] AWB(908,512,765)
    02-10 11:20:33.581089  4720 26740 D ae_mgr  : [doBackupAE()+] i4SensorDev:1
    02-10 11:20:33.581107  4720 26740 D ae_mgr  : [doBackupAE()-] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/5904/4100 (ISO:144) m_rAESettingBackup.u4Index/F:111/335 (IndexBase:3)Pre-flash:0 
    02-10 11:20:33.602423  4720 26740 D awb_mgr : [backup] AWB(908,512,765)
    02-10 11:20:33.605946  4720 26740 D Hal3ARaw: [doBackup2A]
    02-10 11:20:33.605960  4720 26740 D ae_mgr  : [doBackupAE()+] i4SensorDev:1
    02-10 11:20:33.605974  4720 26740 D ae_mgr  : [doBackupAE()-] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/5904/4100 (ISO:144) m_rAESettingBackup.u4Index/F:111/335 (IndexBase:3)Pre-flash:1 
    //预闪 flash on type:1:后摄 enable:1 开启闪光灯 scenario:3:预闪 duty(0).
    02-10 11:20:33.606962  4720 26847 I FlashHal: [CAT][flash] setOnOff(): type:1 enable:1 scenario:3
    02-10 11:20:33.606982  4720 26847 I FlashHal: setFlashOn(): duty(0), timeout(0), lt duty(0), lt timeout(0).
    02-10 11:20:33.607010  4720 26847 I StrobeDrvFlashlight: setDuty(): duty(0).
    02-10 11:20:33.607125  4720 26847 I StrobeDrvFlashlight: setOnOff(): enable(1).
    02-10 11:20:33.613575  4720 26847 I StrobeDrvFlashlight: setOnOff(): on time(148789707).
    02-10 11:20:33.632018  4720 26740 D awb_mgr : [backup] AWB(908,512,765)
    02-10 11:20:33.651878 26709 26746 I CamAp_FocusCaptureRequestConfigure: [onCaptureStarted] ae precapture triggered
    02-10 11:20:34.264236  4720 26740 D ae_mgr  : [doRestoreAE()] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/6016/4100 (ISO:147) m_rAESettingBackup.u4Index/F:111/335 (IndexBase: 3) bIsRestorePreflash:1
    02-10 11:20:34.265317  4720 26740 D ae_mgr  : [doRestoreAE] backup FD information at AFAE state (for main flash)
    //预闪 flash off
    02-10 11:20:34.288120  4720 26847 I FlashHal:  [CAT][flash] setOnOff(): type:1 enable:0 scenario:3
    02-10 11:20:34.288137  4720 26847 I FlashHal: setFlashOff().
    02-10 11:20:34.288156  4720 26847 I StrobeDrvFlashlight: setOnOff(): enable(0).
    02-10 11:20:34.289802  4720 26847 I StrobeDrvFlashlight: setOnOff(): off time(148790388).
    02-10 11:20:34.386669  4720 26740 I FlashMgrM: endPrecapture().
    02-10 11:20:34.386770  4720 26740 I FlashMgrM: endPrecapture().
    //开始拍照
    02-10 11:20:34.538837 26709 26746 I CamAp_PhotoMode: onShutterButtonClick, is storage ready : true,isDeviceReady = true
    02-10 11:20:34.540462 26709 26746 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@8fee002
    //拍照请求帧 control.captureIntent:2
    02-10 11:20:34.589042  4720 25786 I mtkcam-PipelineModelSession: [submitRequest] <4Cell/0> requestNo:88 { repeating:0 control.aeTargetFpsRange:10,30 control.captureIntent:2 control.enableZsl:1 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:2 }
    02-10 11:20:34.589203  4720 25786 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] (0xb4000079e3e13630) capture req#:88
    02-10 11:20:34.589717  4720 25786 D mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] openId(0), sensorId(0), subsensorId(-1), sub sensor nums 0
    //拍照决策 MTK_CAMERA_SCENARIO_CAPTURE_NORMAL MTK_FEATURE_COMBINATION_SINGLE frames count
    02-10 11:20:34.589850  4720 25786 D mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] find scenario:MTK_CAMERA_SCENARIO_CAPTURE_NORMAL for (openId:0, scenario:1)
    02-10 11:20:34.605578  4720 25786 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] trigger feature:NO_FEATURE_NORMAL(0), feature combination:MTK_FEATURE_COMBINATION_SINGLE(0x20000000300f0) for req#88
    02-10 11:20:34.605586  4720 25786 D mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] capture request frames count(mainFrame:1, subFrames:0, preDummyFrames:2, postDummyFrames:3)
    //主闪开启 scenario:4 主闪 duty(1).
    02-10 11:20:34.738555  4720 26740 I FlashHal:  [CAT][flash] setOnOff(): type:1 enable:1 scenario:4
    02-10 11:20:34.738580  4720 26740 E FlashHal:  FLASH_HAL_SCENARIO_MAIN_FLASH dutyLt=-1,duty=1 (setOnOff){#610:vendor/mediatek/proprietary/hardware/mtkcam/aaa/source/isp_6s/../common/flash_mgr/flash_hal.cpp}
    02-10 11:20:34.738602  4720 26740 I FlashHal: setFlashOn(): duty(1), timeout(0), lt duty(-1), lt timeout(0).
    02-10 11:20:34.738627  4720 26740 I StrobeDrvFlashlight: setDuty(): duty(1).
    02-10 11:20:34.738738  4720 26740 I StrobeDrvFlashlight: setOnOff(): enable(1).
    02-10 11:20:34.743919  4720 26740 I StrobeDrvFlashlight: setOnOff(): on time(148790839).
    02-10 11:20:34.744568  4720 26740 D ae_mgr  : [doBackupAE()+] i4SensorDev:1
    02-10 11:20:34.744582  4720 26740 D ae_mgr  : [doBackupAE()-] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/5904/4100 (ISO:144) m_rAESettingBackup.u4Index/F:111/335 (IndexBase:3)Pre-flash:0 
    02-10 11:20:34.763537  4720 26740 D ae_mgr  : [doCapAE()] i4SensorDev:1 CamMode:5 TargetMode:0 minISO:25 bIsSyncAE:0
    02-10 11:20:34.763652  4720 26740 D ae_mgr  : [prepareAlgoFrameInfo] send backup FD information to algo at POSTCAP state (during main flash)
    02-10 11:20:34.764276  4720 26740 D ae_mgr  : [doCapAE():monitor] SensorDev:1 Mag:88 CWVY:450 AEStable:1 AlgoAPAELock/AlgoAFAELock:0/0 Index/F:111/335 Algo:39998/5904/4100(144) Real:20004/1632/4156(40) EV/BV/BVWOStrobe:68/18/18 SkipCount:0 hdr LE(39998/3643/4112/89) ME(39998/3643/4112/89) SE(39998/3643/4112/89) VSE(39998/3643/4112/89) R(100)
    02-10 11:20:34.836886  4720 26740 D ae_mgr  : [doRestoreAE()] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/6016/4100 (ISO:147) m_rAESettingBackup.u4Index/F:111/335 (IndexBase: 3) bIsRestorePreflash:0
    // 主闪关闭   enable:0  setFlashOff
    02-10 11:20:34.863356  4720 26763 I FlashHal:  [CAT][flash] setOnOff(): type:1 enable:0 scenario:4
    02-10 11:20:34.863367  4720 26763 E FlashHal:  FLASH_HAL_SCENARIO_MAIN_FLASH dutyLt=-1,duty=1 (setOnOff){#610:vendor/mediatek/proprietary/hardware/mtkcam/aaa/source/isp_6s/../common/flash_mgr/flash_hal.cpp}
    02-10 11:20:34.863374  4720 26763 I FlashHal: setFlashOff().
    02-10 11:20:34.863382  4720 26763 I StrobeDrvFlashlight: setOnOff(): enable(0).
    02-10 11:20:34.863939  4720 26763 I StrobeDrvFlashlight: setOnOff(): off time(148790964).
    // P2 capture  处理
    02-10 11:20:34.883859  4720 26765 I MtkCam/P2/CaptureNode: [queue] P2C cam 0: (0xb400007883da59b0) R/F Num: 88/90
    02-10 11:20:34.884348  4720 26792 D MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0: isZoom 0, isVsdof 0, isMultiCam 0, isHidlIsp 0
    02-10 11:20:34.885773  4720 26792 D MtkCam/P2/CaptureProcessor: [onEnque]P2 frame number(90) main sensorId(0) sub sensor(-1) isPhyStream(0) isPhyControl(0)
    02-10 11:20:34.885797  4720 26792 I MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90 : Index/Count:-1/0 Feature:0x20000000300f0
    02-10 11:20:34.885813  4720 26792 I MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90 : Index/Count:-1/0 isEarlyNotificationTrigger:1, isCshot:0, SS_CapHint:0
    02-10 11:20:34.885845  4720 26792 D MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90 : [SS] iShootingMode (0)
    02-10 11:20:34.885893  4720 26792 D MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90 : [SS] use out_jpeg size as validSize(2296,4080)
    02-10 11:20:34.885906  4720 26792 D MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90 : [SS] Update SEC_ANDROID_SCALER_VALID_IMAGE_REGION (0,0)(2296x4080)
    02-10 11:20:34.885917  4720 26792 I MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90 : enqued request to captureFeaturePipe, R/F Num:88/90
    02-10 11:20:34.895019  4720 26791 I MtkCam/P2/CaptureProcessor: [onContinue] P2C cam 0 MWFrame:#90 MWReq:#88, frame 90-0 : (0xb400007993dd3470) notify next capture, request count:1, R/F Num:88/90
    02-10 11:20:34.926198  4720 26896 I MtkCam/P2/CaptureProcessor: [notifyRelease] P2C cam 0: notify release, R/F Num:88/90
    02-10 11:20:34.926335  4720 26896 I MtkCam/P2/CaptureProcessor: [notifyRelease] P2C cam 0: notify release, R/F Num:88/90
    //保存图片
    02-10 11:20:35.025687  2150  2164 D MediaProvider: Open with FUSE. FilePath: /storage/emulated/0/DCIM/Camera/IMG_20250210_112034_998.jpg. Uid: 10100. Media Capabilities Uid: 0. ShouldRedact: false. ShouldTranscode: false

2.4 MTK闪光灯拍照trace 分析

1.点击拍照按钮事件处理

  • 点击拍照Trace TAG: AppLaunch_dispatchPtr:Up && deliverInputEvent
    Start time 00:00:08.617971754
程序员Android

2.Camera FWK 提交拍照trace

  • 提交拍照请求Trace TAG:submitRequestList
    Start time 00:00:08.624287677

AIDL::cpp::ICameraDeviceUser::submitRequestList::cppServer
submitRequestList
captureList
submitRequestsHelper
createCaptureRequest

程序员Android

3.预闪阶段: Task3APrecapture 帧号:96

  • Task3APrecapture 预闪Trace TAG:doPrecapAE 、doPrecapAWB
    Start time 00:00:08.710852369
程序员Android
  • MTK log Tag:
    MTK_CONTROL_AE_PRECAPTURE_TRIGGER|doPreCapAE|Frame Count|doBackupAE
程序员Android
MTK_CONTROL_AE_PRECAPTURE_TRIGGER|doPreCapAE|Frame Count|doBackupAE 
Task3APrecap : 
    帧号96
    02-11 16:46:46.760270  1073  2101 D Hal3Av3 : [parseMeta] MTK_CONTROL_AE_PRECAPTURE_TRIGGER(0 -> 1)  // 下发预闪 TAG MTK_CONTROL_AE_PRECAPTURE_TRIGGER 
    
    02-11 16:46:46.804209  1073  5014 D ae_mgr  : [doPreCapAE():monitor] SensorDev:1 Mag:93 CWVY:657 AEStable:1 Index/F:114/342 Algo:39998/7104/4184(177) Real:39998/7104/4184(177) EV/BV/BVWOStrobe:71/21/21 bAAASchedule:0
    02-11 16:46:46.804339  1073  5014 D Task3APrecap: [run] Frame Count(1) - doPrecapAE  // AEStable:1 没开灯的情况下通常都是下发1帧 
    02-11 16:46:46.806170  1073  5014 D Task3APrecap: [run] Cam 1 : Req(#96)/Frm(#95)/Stt(#93)/i4Opt(4)/FlashOnOff(0) Lv(71)/ISO(177)/RGB(881,512,791) FlashTask(1)
    02-11 16:46:46.806186  1073  5014 D ae_mgr  : [doBackupAE()+] i4SensorDev:1
    02-11 16:46:46.806204  1073  5014 D ae_mgr  : [doBackupAE()-] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/7104/4184 (ISO:177) m_rAESettingBackup.u4Index/F:114/342 (IndexBase:3)Pre-flash:0 
    02-11 16:46:46.806532  1073  5014 D Task3APrecap: [run] Frame Count(1) - Done
    02-11 16:46:46.818777  1073  5124 D TaskAFTrigger: [run] Frame Count(1) Initial //AFTrigger  初始化

4. 预闪 开灯、关灯 阶段:Task3AFlashTouch 帧号:97 98 99 100 ... ... 112 114 115 116

Task3AFlashTouch 共3个阶段: front 、touch 、back

Front(固定 3帧) --> touch --> back(固定4帧) :对应帧数 97 98 99 100 ... 112 114 115 116

  • Trace TAG:Task3AFlash_start
    Start time 00:00:08.793206446
程序员Android
  • MTK log TAG
    Task3AFlashTouch: \[|Frame Count|doBackupAE|setOnOff|setDuty
程序员Android
    Front(3帧) --> touch --> back(4帧) :对应帧数 97 98 99 100 ... 112 114 115 116
Task3AFlashTouch:: Front state 固定3帧  97 98 99
Task3AFlashTouch: \[|Frame Count|doBackupAE|setOnOff|setDuty
   02-11 16:46:46.844675  1073  5014 D Task3AFlashTouch: [front] Cam 1 : Req(#97)/Frm(#96)/Stt(#94)/i4Opt(4)/FlashOnOff(0) Lv(71)/ISO(177)/RGB(883,512,787) isMvHDREnable(0)
    02-11 16:46:46.844682  1073  5014 D Task3AFlashTouch: [front] Frame Count(1)    //固定执行3 帧
    02-11 16:46:46.844690  1073  5014 D Task3AFlashTouch: [front] SkipFrame, Frame Count(1)
    02-11 16:46:46.844727  1073  5014 D ae_mgr  : [doBackupAE()+] i4SensorDev:1  // 确保保存的AE 参数是稳定的
    02-11 16:46:46.844736  1073  5014 D ae_mgr  : [doBackupAE()-] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/7104/4184 (ISO:177) m_rAESettingBackup.u4Index/F:114/342 (IndexBase:3)Pre-flash:1 
    02-11 16:46:46.867331  1073  5125 I FlashHal: [CAT][flash] setOnOff(): type:1 enable:1 scenario:3  //预闪开灯
    02-11 16:46:46.867370  1073  5125 I StrobeDrvFlashlight: setDuty(): duty(0).
    02-11 16:46:46.867480  1073  5125 I StrobeDrvFlashlight: setOnOff(): enable(1).
    02-11 16:46:46.873723  1073  5125 I StrobeDrvFlashlight: setOnOff(): on time(6090713).
    02-11 16:46:46.883578  1073  5014 D Task3AFlashTouch: [front] Cam 1 : Req(#98)/Frm(#97)/Stt(#95)/i4Opt(4)/FlashOnOff(0) Lv(71)/ISO(177)/RGB(883,512,787) isMvHDREnable(0)
    02-11 16:46:46.883586  1073  5014 D Task3AFlashTouch: [front] Frame Count(2) //by pass
    02-11 16:46:46.924059  1073  5014 D Task3AFlashTouch: [front] Cam 1 : Req(#99)/Frm(#98)/Stt(#96)/i4Opt(4)/FlashOnOff(0) Lv(71)/ISO(177)/RGB(883,512,788) isMvHDREnable(0)
    02-11 16:46:46.924074  1073  5014 D Task3AFlashTouch: [front] Frame Count(3)
    02-11 16:46:46.924087  1073  5014 D Task3AFlashTouch: [proceed] Previous Status 0  //流转到下一个状态 touch 
    
  • TaskAFTrigger_start
    Start time 00:00:09.209619061

    程序员Android

  • MTK log TAG
    Task3AFlashTouch:: Touch state Task3AFlashTouch: \[|Frame Count|doAFAE|TaskAFTrigger: \[|af_mgr_v3.*AfState

程序员Android
Task3AFlashTouch:: Touch state
Task3AFlashTouch: \[|Frame Count|doAFAE|TaskAFTrigger: \[|af_mgr_v3.*AfState

    02-11 16:46:46.961651  1073  5014 D Task3AFlashTouch: [touch] Inform AFAE of AFTrigger ActiveItem 0 // 做AE 收敛
    02-11 16:46:46.962263  1073  5014 D ae_mgr  : [doAFAE():monitor] SensorDev:1 Mag:97 CWVY:876 AEStable:0 Index/F:110/332 Algo:39998/5600/4192(139) Real:39998/5600/4192(139) EV/BV/BVWOStrobe:75/25/21 bAAASchedule:0 i4EvComp:0
    02-11 16:46:46.964752  1073  5014 D Task3AFlashTouch: [touch] Cam 1 : Req(#100)/Stt(#97)/i4Opt(4)/FlashOnOff(0)/FlashTypeByTask(3)/FlashOpenByTask(1) Lv(75)/ISO(139)/RGB(886,512,795)
    02-11 16:46:47.001954  1073  5014 D Task3AFlashTouch: [touch] Inform AFAE of AFTrigger ActiveItem 0
    02-11 16:46:47.004094  1073  5014 D ae_mgr  : [doAFAE():monitor] SensorDev:1 Mag:98 CWVY:880 AEStable:0 Index/F:110/332 Algo:39998/5600/4192(139) Real:39998/5600/4192(139) EV/BV/BVWOStrobe:75/25/21 bAAASchedule:0 i4EvComp:0
    02-11 16:46:47.005879  1073  5014 D Task3AFlashTouch: [touch] Cam 1 : Req(#101)/Stt(#98)/i4Opt(4)/FlashOnOff(0)/FlashTypeByTask(3)/FlashOpenByTask(1) Lv(75)/ISO(139)/RGB(888,512,796)
    ... ...  102 -106 省略
    02-11 16:46:47.243513  1073  5014 D ae_mgr  : [doAFAE():monitor] SensorDev:1 Mag:104 CWVY:673 AEStable:0 Index/F:110/330 Algo:39998/5376/4104(131) Real:39998/5376/4104(131) EV/BV/BVWOStrobe:75/25/21 bAAASchedule:0 i4EvComp:0
    02-11 16:46:47.244428  1073  5014 D Task3AFlashTouch: [touch] Cam 1 : Req(#107)/Stt(#104)/i4Opt(4)/FlashOnOff(0)/FlashTypeByTask(3)/FlashOpenByTask(1) Lv(75)/ISO(131)/RGB(892,512,791)
    02-11 16:46:47.283495  1073  5014 D Task3AFlashTouch: [touch] Inform AFAE of AFTrigger ActiveItem 0
    02-11 16:46:47.284156  1073  5014 D ae_mgr  : [doAFAE():monitor] SensorDev:1 Mag:105 CWVY:675 AEStable:1 Index/F:110/330 Algo:39998/5376/4104(131) Real:39998/5376/4104(131) EV/BV/BVWOStrobe:76/26/21 bAAASchedule:0 i4EvComp:0
    02-11 16:46:47.285157  1073  5014 D Task3AFlashTouch: [touch] Cam 1 : Req(#108)/Stt(#105)/i4Opt(4)/FlashOnOff(0)/FlashTypeByTask(3)/FlashOpenByTask(1) Lv(76)/ISO(131)/RGB(892,512,791)
    02-11 16:46:47.285422  1073  5014 D Task3AFlashTouch: [updateStatus] status(1->2)
    02-11 16:46:47.285431  1073  5014 D Task3AFlashTouch: [touch] Frame Count(9), start waiting AF, exp/afe/isp(39998/5376/4104) //AE 收敛完成,等待AF 收敛
    02-11 16:46:47.300013  1073  5124 D TaskAFTrigger: [updateStatus] status(0->1)
    02-11 16:46:47.300312  1073  5124 D TaskAFTrigger: [run] Cam 1 : Req(#108)/Stt(#106)/i4Opt(18)/FlashOnOff(0)/AfTrigger(0, 0)
    02-11 16:46:47.323328  1073  5014 D Task3AFlashTouch: [touch] Inform AFAE of AFTrigger ActiveItem 16
    02-11 16:46:47.324490  1073  5014 D ae_mgr  : [doAFAE():monitor] SensorDev:1 Mag:106 CWVY:676 AEStable:1 Index/F:110/330 Algo:39998/5376/4104(131) Real:39998/5376/4104(131) EV/BV/BVWOStrobe:76/26/21 bAAASchedule:0 i4EvComp:0
    02-11 16:46:47.324638  1073  5014 D Task3AFlashTouch: [touch] Cam 1 : Req(#109)/Stt(#106)/i4Opt(18)/FlashOnOff(0)/FlashTypeByTask(3)/FlashOpenByTask(1) Lv(76)/ISO(131)/RGB(892,512,791)
    02-11 16:46:47.324817  1073  5014 D Task3AFlashTouch: [touch] Frame Count(9), start waiting AF, exp/afe/isp(39998/5376/4104)
    02-11 16:46:47.341004  1073  5124 D TaskAFTrigger: [run] Cam 1 : Req(#109)/Stt(#107)/i4Opt(18)/FlashOnOff(0)/AfTrigger(0, 0)
    02-11 16:46:47.363335  1073  5014 D Task3AFlashTouch: [touch] Inform AFAE of AFTrigger ActiveItem 16
    02-11 16:46:47.363878  1073  5014 D ae_mgr  : [doAFAE():monitor] SensorDev:1 Mag:107 CWVY:675 AEStable:1 Index/F:110/330 Algo:39998/5376/4104(131) Real:39998/5376/4104(131) EV/BV/BVWOStrobe:76/26/21 bAAASchedule:0 i4EvComp:0
    02-11 16:46:47.363997  1073  5014 D Task3AFlashTouch: [touch] Cam 1 : Req(#110)/Stt(#107)/i4Opt(18)/FlashOnOff(0)/FlashTypeByTask(3)/FlashOpenByTask(1) Lv(76)/ISO(131)/RGB(892,512,791)
    02-11 16:46:47.364768  1073  5014 D Task3AFlashTouch: [touch] Frame Count(9), start waiting AF, exp/afe/isp(39998/5376/4104)
    02-11 16:46:47.380516  1073  5124 D TaskAFTrigger: [run] Cam 1 : Req(#110)/Stt(#108)/i4Opt(18)/FlashOnOff(0)/AfTrigger(0, 0)
    02-11 16:46:47.404716  1073  5014 D Task3AFlashTouch: [touch] Inform AFAE of AFTrigger ActiveItem 16
    02-11 16:46:47.405882  1073  5014 D ae_mgr  : [doAFAE():monitor] SensorDev:1 Mag:108 CWVY:675 AEStable:1 Index/F:110/330 Algo:39998/5376/4104(131) Real:39998/5376/4104(131) EV/BV/BVWOStrobe:76/26/21 bAAASchedule:0 i4EvComp:0
    02-11 16:46:47.406135  1073  5014 D Task3AFlashTouch: [touch] Cam 1 : Req(#111)/Stt(#108)/i4Opt(18)/FlashOnOff(0)/FlashTypeByTask(3)/FlashOpenByTask(1) Lv(76)/ISO(131)/RGB(892,512,791)
    02-11 16:46:47.406330  1073  5014 D Task3AFlashTouch: [touch] Frame Count(9), start waiting AF, exp/afe/isp(39998/5376/4104)
    02-11 16:46:47.420763  1073  5124 D TaskAFTrigger: [run] Cam 1 : Req(#111)/Stt(#109)/i4Opt(18)/FlashOnOff(0)/AfTrigger(0, 0)
    02-11 16:46:47.442911  1073  5014 D Task3AFlashTouch: [touch] Inform AFAE of AFTrigger ActiveItem 16
    02-11 16:46:47.444222  1073  5014 D ae_mgr  : [doAFAE():monitor] SensorDev:1 Mag:109 CWVY:674 AEStable:1 Index/F:110/330 Algo:39998/5376/4104(131) Real:39998/5376/4104(131) EV/BV/BVWOStrobe:76/26/21 bAAASchedule:0 i4EvComp:0
    02-11 16:46:47.444341  1073  5014 D Task3AFlashTouch: [touch] Cam 1 : Req(#112)/Stt(#109)/i4Opt(18)/FlashOnOff(0)/FlashTypeByTask(3)/FlashOpenByTask(1) Lv(76)/ISO(131)/RGB(892,512,791)
    02-11 16:46:47.444483  1073  5014 D Task3AFlashTouch: [touch] Frame Count(9), start waiting AF, exp/afe/isp(39998/5376/4104)
    02-11 16:46:47.460832  1073  5124 I af_mgr_v3: [getResult] resultNum = 112, afMode = 4, afState = 4, lensState = 0, cafEvReq = 16000, lockAEReq = 0, lensPosition = 491, isFocusFinish = 1, isFocused = 1, focusDistance = 2.235563, eEvent = 0x80
    02-11 16:46:47.460845  1073  5124 D TaskAFTrigger: [run] Cam 1 : Req(#112)/Stt(#110)/i4Opt(18)/FlashOnOff(0)/AfTrigger(0, 0)
    02-11 16:46:47.460857  1073  5124 D TaskAFTrigger: [updateStatus] status(1->4)
    02-11 16:46:47.460863  1073  5124 D TaskAFTrigger: [run] TASK_STATUS_DONE Frame Count(6)  //AF 收敛完成,进入下一个状态
    02-11 16:46:47.484194  1073  5014 D Task3AFlashTouch: [updateStatus] status(2->1)
    02-11 16:46:47.484202  1073  5014 D Task3AFlashTouch: [proceed] Previous Status 1
  • TaskAFTrigger_end
    Start time 00:00:09.370467446


  • Trace TAG:Task3AFlash_end
    Start time 00:00:09.517450754

程序员Android
  • MTK log TAG
    Task3AFlashTouch: \[|Frame Count|setOnOff|setDuty
程序员Android
Task3AFlashTouch:Backstate 固定4帧  113 114 115 116
Task3AFlashTouch: \[|Frame Count|setOnOff|setDuty
    02-11 16:46:47.484219  1073  5014 D Task3AFlashTouch: [back] Cam 1 : Req(#113)/Stt(#110)/i4Opt(274)/FlashOnOff(0) Lv(76)/ISO(131)/RGB(892,512,791)
    02-11 16:46:47.484307  1073  5014 D Task3AFlashTouch: [back] Frame Count(0), WAIT CLOSE FLASH & GET FLASH OPEN DATA, addr(d46e9000), exp/afe/isp(39998/5376/4104)  //取开灯的AAO
    02-11 16:46:47.484328  1073  5014 D Task3AFlashTouch: [back] Frame Count(1)
    02-11 16:46:47.485845  1073  5014 D ae_mgr  : [updateAEInfo2ISP] m_eSensorDev:1 State:5 eAEstate:5 CCU ON:0 Algo:39998/5376/4104(131) P1RealSetting:39998/7104/4108(173/0/0) P2RealSetting:39998/7104/4108(173) P1/P2GainRatioX100:173/173 FrameDuration:40020000 Index:0(110/170) m_u4ISOIdx1StableCount:0 m_u4ISOIdx2StableCount:0 IsNeedUpdateSensor:0 i4LightValue_x10(Real):76(76) Lux:160000 FaceNum:0 RequestNum:112 MagicNum:109 u4ISOBase_1xGain:25 m_u4BinSumRatio:1000 i4AEComp:0 bIsAutoDetHDR:0 i4FDEVdiff:-9344 i4TouchEVdiff:0 i4EVbarEVdiff:0 Ratio:100 FDY/FDT/FDLink: 0/0/650 AI-Shutter(bMotion/MIP/exp/afe/isp/iso): 0/0/39998/7104/4108/174 flicker:0/0 OBC:1024/1024/1024
    02-11 16:46:47.509123  1073  5125 I FlashHal:  [CAT][flash] setOnOff(): type:1 enable:0 scenario:3 //预闪 关灯
    02-11 16:46:47.509165  1073  5125 I StrobeDrvFlashlight: setOnOff(): enable(0).
    02-11 16:46:47.510806  1073  5125 I StrobeDrvFlashlight: setOnOff(): off time(6091354).
    02-11 16:46:47.523751  1073  5014 D Task3AFlashTouch: [back] Cam 1 : Req(#114)/Stt(#111)/i4Opt(4)/FlashOnOff(0) Lv(76)/ISO(173)/RGB(883,512,787)
    02-11 16:46:47.523875  1073  5014 D Task3AFlashTouch: [back] Frame Count(1) Off(1), UPDATE FLASH OPEN DATA, addr(cad61000)
    02-11 16:46:47.523897  1073  5014 D Task3AFlashTouch: [back] Frame Count(2)
    02-11 16:46:47.563795  1073  5014 D Task3AFlashTouch: [back] Cam 1 : Req(#115)/Stt(#112)/i4Opt(4)/FlashOnOff(0) Lv(76)/ISO(173)/RGB(883,512,787)
    02-11 16:46:47.563811  1073  5014 D Task3AFlashTouch: [back] Frame Count(2) Off(1), BYPASS PARTIAL, addr(cab0b000)
    02-11 16:46:47.563820  1073  5014 D Task3AFlashTouch: [back] Frame Count(3)
    02-11 16:46:47.603369  1073  5014 D Task3AFlashTouch: [back] Cam 1 : Req(#116)/Stt(#113)/i4Opt(4)/FlashOnOff(0) Lv(76)/ISO(173)/RGB(883,512,787)
    02-11 16:46:47.603464  1073  5014 D Task3AFlashTouch: [back] Frame Count(3) Off(1), GET FLASH CLOSE DATA, addr(0x78cad61000/19803000)  //取关灯的AAO
    02-11 16:46:47.603542  1073  5014 I FlashMgrM: setAlgoExpPara(): exp(39998), iso(173)
    02-11 16:46:47.604148  1073  5014 W Task3AFlashTouch: [back] doPfOneFrame no-flash, exp/afe/isp(39998/7104/4108)
    02-11 16:46:47.604163  1073  5014 I FlashMgrM: setAlgoExpPara(): exp(39998), iso(131)
    02-11 16:46:47.607673  1073  5014 D ae_mgr  : [getCaptureSetting()] m_i4SensorDev:1 input index/F/base:110/330/3 input setting:39998/5376/4104(131) output setting:40005/5376/4100(131) isSkipManlPline:0
    02-11 16:46:47.607694  1073  5014 D ae_mgr  : [updateCaptureParams()] m_i4SensorDev:1 Exp.mode:0 Capture Shutter:20004 Sensor gain:3296 Isp gain:4104 ISO:80 u4Index/F/base:110/330/3
    02-11 16:46:47.607703  1073  5014 D ae_mgr  : [updateCaptureParams()] m_i4SensorDev:1 Modify Exp.mode:0 Capture Shutter:20004 Sensor gain:3296 Isp gain:4104 ISO:80
    02-11 16:46:47.604148  1073  5014 W Task3AFlashTouch: [back] doPfOneFrame no-flash, exp/afe/isp(39998/7104/4108)
    02-11 16:46:47.607742  1073  5014 W Task3AFlashTouch: [back] doPfOneFrame flash, exp/afe/isp(39998/5376/4104)
    02-11 16:46:47.607763  1073  5014 D Task3AFlashTouch: [back] duty(1) weight(50)
    02-11 16:46:47.607841  1073  5014 D Task3AFlashTouch: [updateStatus] status(1->4)
    02-11 16:46:47.607850  1073  5014 D Task3AFlashTouch: [back] Frame Count(4)
    02-11 16:46:47.607909  1073  5014 D Task3AFlashTouch: [~Task3AFlashTouchImp] FlashTouch Destruct done // 预闪流程完成

5. 主闪下发拍照: photoDevice.takePicture

MTK camera app 下发拍照帧
Trace TAG: photoDevice.takePicture
Start time 00:00:09.658526446

程序员Android
  • MTK log TAG
    onShutterButtonClick|takepicture
onShutterButtonClick|takepicture
    02-11 16:46:47.747987  4987  5021 I CamAp_PhotoMode: onShutterButtonClick, is storage ready : true,isDeviceReady = true
    02-11 16:46:47.748255  4987  5021 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@2645571  // app 下发 takepicture 

6. Take3ACapture 拍照帧数决策evaluateCaptureSetting

Trace TAG:evaluateCaptureSetting
Start time 00:00:09.679118831

程序员Android
  • 主闪拍照决策6帧 : 121 122 123 124 125 126


    程序员Android
  • MTK log TAG
    MTK_CONTROL_CAPTURE_INTENT|Task3ACapture:|evaluateCaptureSetting|takePicture|doBackupAE|setOnOff|setDuty|TaskEvent:Capture|control.captureIntent:2|onShutterButtonClick

程序员Android
MTK_CONTROL_CAPTURE_INTENT|Task3ACapture:|evaluateCaptureSetting|takePicture|doBackupAE|setOnOff|setDuty|TaskEvent:Capture|control.captureIntent:2|onShutterButtonClick

    02-11 16:46:47.747987  4987  5021 I CamAp_PhotoMode: onShutterButtonClick, is storage ready : true,isDeviceReady = true
    02-11 16:46:47.748255  4987  5021 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@2645571  // app 下发 takepicture 
    02-11 16:46:47.769334  1073  3713 I mtkcam-PipelineModelSession: [submitRequest] <4Cell/0> requestNo:121 { repeating:0 control.aeTargetFpsRange:10,30 control.captureIntent:2 control.enableZsl:1 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:2 }
    02-11 16:46:47.769508  1073  3713 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] (0xb400007b93684de0) capture req#:121   // capture 帧号121
    02-11 16:46:47.786708  1073  3713 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] trigger feature:NO_FEATURE_NORMAL(0), feature combination:MTK_FEATURE_COMBINATION_SINGLE(0x20000000300f0) for req#121 //capture Feature
    02-11 16:46:47.786716  1073  3713 D mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] capture request frames count(mainFrame:1, subFrames:0, preDummyFrames:2, postDummyFrames:3)
    02-11 16:46:47.803635  1073  3713 D Hal3Av3 : [parseMeta] MTK_CONTROL_CAPTURE_INTENT(1 -> 2) //连续3帧 下发capture intent 2
    02-11 16:46:47.843090  1073  5014 D Hal3Av3 : [setNormal] Dev(1) Req(#122) FrameNum(#121) Dummy(0/1/0) CapInt(1) AE(M:0/E:10000000/F:10000000/S:100) FLASH(M:0)  //连续两帧pre dummy 帧
    02-11 16:46:47.844604  1073  3713 D Hal3Av3 : [parseMeta] MTK_CONTROL_CAPTURE_INTENT(1 -> 2)  //连续3帧 下发capture intent 2
    02-11 16:46:47.882767  1073  5014 D Hal3Av3 : [setNormal] Dev(1) Req(#123) FrameNum(#122) Dummy(0/1/0) CapInt(1) AE(M:0/E:10000000/F:10000000/S:100) FLASH(M:0)   //连续两帧pre dummy 帧
    02-11 16:46:47.884304  1073  3713 D Hal3Av3 : [parseMeta] MTK_CONTROL_CAPTURE_INTENT(1 -> 2) //连续3帧 下发capture intent 2
    02-11 16:46:47.917908  1073  5014 I FlashHal:  [CAT][flash] setOnOff(): type:1 enable:1 scenario:4 // 主闪光灯开灯
    02-11 16:46:47.917968  1073  5014 I StrobeDrvFlashlight: setDuty(): duty(1).
    02-11 16:46:47.918082  1073  5014 I StrobeDrvFlashlight: setOnOff(): enable(1).
    02-11 16:46:47.923274  1073  5014 I StrobeDrvFlashlight: setOnOff(): on time(6091763).
    02-11 16:46:47.923396  1073  5014 W TaskMgr : [sendEvent] TaskEvent:Capture
    02-11 16:46:47.923599  1073  5014 D Task3ACapture: [run] Cam 1 : Req(#124)/Stt(#121)/Frm(#123)/i4Opt(516)/FlashOnOff(1)/HQC(1)/RemosaicEn(0)
    02-11 16:46:47.923612  1073  5014 D Task3ACapture: [run] Capture Start #(124)
    02-11 16:46:47.923736  1073  5014 D Task3ACapture: [run] FLASH UPDATED + #(121)
    02-11 16:46:47.923745  1073  5014 D ae_mgr  : [doBackupAE()+] i4SensorDev:1
    02-11 16:46:47.923760  1073  5014 D ae_mgr  : [doBackupAE()-] i4SensorDev:1 m_rAESettingBackup.EvSetting:39998/6272/4148 (ISO:155) m_rAESettingBackup.u4Index/F:112/337 (IndexBase:3)Pre-flash:0 
    02-11 16:46:47.924113  1073  5014 D Task3ACapture: [run] FLASH UPDATED - #(121)
    02-11 16:46:47.924168  1073  5014 D Task3ACapture: [run] Retrieve Capture ExpIndex = 0
    02-11 16:46:47.925616  1073  5014 D Task3ACapture: [updateStatus] status(0->1)
    02-11 16:46:47.949472  1073  5014 D Hal3Av3 : [setNormal] Dev(1) Req(#125) FrameNum(#124) Dummy(0/0/1) CapInt(1) AE(M:3/E:0/F:0/S:0) FLASH(M:0)
    02-11 16:46:47.950135  1073  3713 D Hal3Av3 : [parseMeta] MTK_CONTROL_CAPTURE_INTENT(1 -> 2)
    02-11 16:46:47.951652  1073  5014 D Task3ACapture: [run] Cam 1 : Req(#125)/Stt(#122)/Frm(#124)/i4Opt(516)/FlashOnOff(1)/HQC(1)/RemosaicEn(0)
    02-11 16:46:47.982897  1073  5014 D Hal3Av3 : [setNormal] Dev(1) Req(#126) FrameNum(#125) Dummy(0/0/1) CapInt(1) AE(M:3/E:0/F:0/S:0) FLASH(M:0)
    02-11 16:46:47.984236  1073  3713 D Hal3Av3 : [parseMeta] MTK_CONTROL_CAPTURE_INTENT(1 -> 2)
    02-11 16:46:47.985183  1073  5014 D Task3ACapture: [run] Cam 1 : Req(#126)/Stt(#123)/Frm(#125)/i4Opt(516)/FlashOnOff(1)/HQC(1)/RemosaicEn(0)
    02-11 16:46:48.010671  1073  5040 I FlashHal:  [CAT][flash] setOnOff(): type:1 enable:0 scenario:4  //主闪光灯关灯
    02-11 16:46:48.010721  1073  5040 I StrobeDrvFlashlight: setOnOff(): enable(0).
    02-11 16:46:48.011339  1073  5040 I StrobeDrvFlashlight: setOnOff(): off time(6091856).
    02-11 16:46:48.015948  1073  5014 D Hal3Av3 : [setNormal] Dev(1) Req(#127) FrameNum(#126) Dummy(0/0/1) CapInt(1) AE(M:3/E:0/F:0/S:0) FLASH(M:0)
    02-11 16:46:48.017513  1073  5014 D Task3ACapture: [run] Cam 1 : Req(#127)/Stt(#124)/Frm(#126)/i4Opt(516)/FlashOnOff(0)/HQC(1)/RemosaicEn(0)
    02-11 16:46:48.017534  1073  5014 D Task3ACapture: [run] Capture End #(124)
    02-11 16:46:48.023046  1073  5014 D Task3ACapture: [run] MFNR + flash (0, 0, 1)  // MFNR  不是指MultiFrame,而是指mainFlash 
    02-11 16:46:48.023054  1073  5014 D Task3ACapture: [run] Batch CAP + unlock ratio (pre, cur)=(-1, 124)
    02-11 16:46:48.023828  1073  5014 D Task3ACapture: [updateStatus] status(1->4)
    02-11 16:46:48.099810  1073  5123 D awb_mgr : [doPvAWB] Skip Frame Count for SEC fast AEC: 2, m_eSensorDev: 1, i4NewSensorMode: 0, rCurrentAWBGain: 883/512/787
    02-11 16:46:48.141348  1073  5123 D awb_mgr : [doPvAWB] Skip Frame Count for SEC fast AEC: 1, m_eSensorDev: 1, i4NewSensorMode: 0, rCurrentAWBGain: 883/512/787
    02-11 16:46:50.874861  1073  5014 I StrobeDrvFlashlight: setOnOff(): enable(0).
    02-11 16:46:50.875427  1073  5014 I StrobeDrvFlashlight: setOnOff(): off time(6091856).
    02-11 16:46:51.080360  1073  2103 I StrobeDrvFlashlight: setOnOff(): enable(0).
    02-11 16:46:51.080920  1073  2103 I StrobeDrvFlashlight: setOnOff(): off time(6091856)

7. Camera HAL P1 P2 处理

Trace TAG : NormalPipe::deque 、CaptureNode::queue、P2_Capture:enque
P1:NormalPipe::deque: 需要开P1 trace 拆可以看到p1::queue
P2 : CaptureNode::queue
P2_Capture:enque
P2_Capture:enque 拍照帧enque到P2 ,可以以此定位最新的点击拍照按钮的处理事件。

程序员Android

8. Camera P2 拍照帧处理

Trace TAG:p2a:process
p2a:setIsp
Start time 00:00:09.942486831

p2a:process|r121f123s0
r121:请求帧
f123:拍照主帧
s0:sensor 0

程序员Android
程序员Android

9. Camera P2 拍照帧处理结束

Trace TAG: p2a:finish 、P2_Capture:releaseImage()、P2:ApplyRelease

Start time 00:00:10.003458138

程序员Android

10. Camera HAL MDP Node处理

Trace TAG:mdp:process
Start time 00:00:10.004205523


程序员Android

11. Camera Jpeg Node 处理

Trace TAG: hardwareOps_encode、onProcessRequest

Start time 00:00:10.052295446


程序员Android

12. 拍照结果图callback,到app imagereader 收图

Trace TAG:processCaptureResult 、ImageReader 、queueBuffer

程序员Android

MTK log TAG
onLastStrongRef.*requestNo:121|removeRequest.*requestNo:121|CamAp_PhotoDevice2Controller|onShutterButtonClick|capture req#|ImageReader|Open with FUSE|getBuffer|ppl_context.*121|CaptureProcessor|P2C |hardwareOps_encode|waitJpegEncodeReqDone|onRequestProcess|\[capture\]

 02-11 16:46:47.747987  4987  5021 I CamAp_PhotoMode: onShutterButtonClick, is storage ready : true,isDeviceReady = true  // 点击拍照按钮
     02-11 16:46:47.748255  4987  5021 I CamAp_PhotoDevice2Controller: [takePicture] mSession= com.mediatek.camera.common.device.v2.Camera2CaptureSessionProxy@2645571 //下发拍照
     02-11 16:46:47.769464  1073  3713 D mtkcam-P2NodeDecisionPolicy: [evaluateRequest] Only use P2C node
     02-11 16:46:47.769478  1073  3713 D mtkcam-P2NodeDecisionPolicy: [checkIsOutputYuvFromP2c] find output YUV stream (0x2) from P2C in imageIds_Capture
     02-11 16:46:47.769508  1073  3713 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] (0xb400007b93684de0) capture req#:121
     02-11 16:46:47.803794  1073  3713 D MtkCam/ppl_context: [sendFrameToRootNodes] r121 frameNo:121 (X) -> 0x1 success; erase record // 拍照帧流经的pipeline
     02-11 16:46:47.842812  1073  5014 D MtkCam/ppl_context: [onCallback] param: (id:1), (lastFrameNum = 121), (eNoticeType = 0)
     02-11 16:46:47.844740  1073  3713 D MtkCam/ppl_context: [sendFrameToRootNodes] r121 frameNo:122 (X) -> 0x1 success; erase record
     02-11 16:46:47.884431  1073  3713 D MtkCam/ppl_context: [sendFrameToRootNodes] r121 frameNo:123 (X) -> 0x1 success; erase record
     02-11 16:46:47.918096  1073  3713 D MtkCam/ppl_context: [sendFrameToRootNodes] r121 frameNo:124 (X) -> 0x1 success; erase record
     02-11 16:46:47.950248  1073  3713 D MtkCam/ppl_context: [sendFrameToRootNodes] r121 frameNo:125 (X) -> 0x1 success; erase record
     02-11 16:46:47.984367  1073  3713 D MtkCam/ppl_context: [sendFrameToRootNodes] r121 frameNo:126 (X) -> 0x1 success; erase record 
     02-11 16:46:48.026995  1073  5042 D MtkCam/ppl_context: [onDispatchFrame] r121 frameNo:123 0x1 -> 0x14 READY(1/1)
     02-11 16:46:48.027120  1073  5042 I MtkCam/P2/CaptureNode: [queue] P2C cam 0: (0xb400007ac3653d30) R/F Num: 121/123   // queue 拍照帧 到p2 CaptureNode
     02-11 16:46:48.027234  1073  5042 D MtkCam/P2/MWFrameRequest: [printIOMap] P2C cam 0 MWFrame:#123 MWReq:#121, frame 123 : iomap: [0]=>img[3/3], meta[3/2], fps[0.00]
     02-11 16:46:48.027474  1073  5080 D MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0: isZoom 0, isVsdof 0, isMultiCam 0, isHidlIsp 0
     02-11 16:46:48.028875  1073  5080 D MtkCam/P2/CaptureProcessor: [onEnque]P2 frame number(123) main sensorId(0) sub sensor(-1) isPhyStream(0) isPhyControl(0)
     02-11 16:46:48.028898  1073  5080 I MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#123 MWReq:#121, frame 123 : Index/Count:-1/0 Feature:0x20000000300f0
     02-11 16:46:48.028911  1073  5080 I MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#123 MWReq:#121, frame 123 : Index/Count:-1/0 isEarlyNotificationTrigger:1, isCshot:0, SS_CapHint:0
     02-11 16:46:48.028941  1073  5080 D MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#123 MWReq:#121, frame 123 : [SS] iShootingMode (0)
     02-11 16:46:48.028991  1073  5080 D MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#123 MWReq:#121, frame 123 : [SS] use out_jpeg size as validSize(2296,4080)
     02-11 16:46:48.029003  1073  5080 D MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#123 MWReq:#121, frame 123 : [SS] Update SEC_ANDROID_SCALER_VALID_IMAGE_REGION (0,0)(2296x4080)
     02-11 16:46:48.029015  1073  5080 I MtkCam/P2/CaptureProcessor: [onEnque] P2C cam 0 MWFrame:#123 MWReq:#121, frame 123 : enqued request to captureFeaturePipe, R/F Num:121/123
     02-11 16:46:48.032876  1073  5074 I MtkCam/CapturePipe/P2ANode: [onRequestProcess](4) +, R/F/S Num: 121/123/0
     02-11 16:46:48.032908  1073  5074 D MtkCam/CapturePipe/P2ANode: [onRequestProcess]Main Full size enque process
     02-11 16:46:48.037758  1073  5074 I MtkCam/CapturePipe/P2ANode: [onRequestProcess](4) -, R/F/S Num: 121/123/0
     02-11 16:46:48.038761  1073  5074 I MtkCam/P2/CaptureProcessor: [onContinue] P2C cam 0 MWFrame:#123 MWReq:#121, frame 123-0 : (0xb400007a33641c30) notify next capture, request count:1, R/F Num:121/123
     02-11 16:46:48.041062  4987  5021 I CamAp_PhotoDevice2Controller: [doCreateAndConfigRequest] mCamera2Proxy =com.mediatek.camera.common.device.v2.Camera2Proxy@c77aae7
     02-11 16:46:48.094012  1073  5162 D MtkCam/P2/MWFrame: [doRelease] P2C cam 0 MWFrame:#123 MWReq:#121, frame 123 : all streams(11), using(8), status: s2:d0:App:YCrCb_420_SP:0|SW_READ_OFTEN(2),Meta:App:Control(2),Hal:Image:P1:Fullraw_main1(1),Hal:Image:P1:Resizeraw_main1(1),Hal:Image:STT_main1(1),Hal:Image:JpegYuv(2),Hal:Image:ThumbnailYuv(2),Hal:Meta:P1:Dynamic_main1(2),Hal:Meta:P2C:Dynamic(2),App:Meta:DynamicP1_main1(2),App:Meta:DynamicP2Cap(2),
     02-11 16:46:48.094188  1073  5162 I MtkCam/P2/CaptureProcessor: [notifyRelease] P2C cam 0: notify release, R/F Num:121/123
     02-11 16:46:48.094278  1073  5162 D MtkCam/P2/MWFrame: [doRelease] P2C cam 0 MWFrame:#123 MWReq:#121, frame 123 : all streams(11), using(7), status: s2:d0:App:YCrCb_420_SP:0|SW_READ_OFTEN(1),Meta:App:Control(2),Hal:Image:P1:Fullraw_main1(0),Hal:Image:P1:Resizeraw_main1(0),Hal:Image:STT_main1(0),Hal:Image:JpegYuv(2),Hal:Image:ThumbnailYuv(2),Hal:Meta:P1:Dynamic_main1(2),Hal:Meta:P2C:Dynamic(2),App:Meta:DynamicP1_main1(2),App:Meta:DynamicP2Cap(2),
     02-11 16:46:48.094421  1073  5162 I MtkCam/P2/CaptureProcessor: [notifyRelease] P2C cam 0: notify release, R/F Num:121/123
     02-11 16:46:48.094604  1073  5075 I MtkCam/CapturePipe/MDPNode: [onRequestProcess](25) +, R/F/S Num: 121/123/0
     02-11 16:46:48.094633  1073  5075 D MtkCam/CapturePipe/MDPNode: [onRequestProcess]isIgnoreCrop:0, isCroppedFSYUV:0
     02-11 16:46:48.094666  1073  5075 D MtkCam/CapturePipe/MDPNode: [onRequestProcess]Use source image size as active region size
     02-11 16:46:48.095346  1073  5075 D MtkCam/CapturePipe/MDPNode: [onRequestProcess]Resized(0) ignoreCrop(0) CroppedFSYUV(0) sensorId(0) R/F/M:121/123/124, Type(jpeg) Rot(4) Crop(0,388)(4080x2296) Size(2296x4080) Cap(1)
     02-11 16:46:48.095608  1073  5075 D MtkCam/CapturePipe/MDPNode: [onRequestProcess]CZ Port(0) nvram:0xb4000078e0502408 idx:0 ispProfile:2 HFG Port(0) nvram:0xb4000078e0552e44 idx:452 ispProfile:2 DRE cmd:0x4 Type:0x1(0/0) User:30977 Buffer:0x0 nvram:0xb4000078e051621c idx:0 ispProfile:2 pTuningBuffer: 0xb400007a43695ec0, iTuningBufSize: 52 setting:0x0xb400007a13639e90 PQtype:0xe Iso:80 Timestamp:164642717
     02-11 16:46:48.097002  4987  5021 I CamAp_CaptureSurface: [getBuffer] image.getFormat = 35 image.getWidth = 160 image.getHeight = 96 format = 35 captureType = thumbnail //app 接收拍照帧的缩略图
     02-11 16:46:48.131586  1073  5075 I MtkCam/CapturePipe/MDPNode: [onRequestProcess]Update Mdp debug info: addr 0xb400007b6378f310, size 30000 95 95
     02-11 16:46:48.132341  1073  5075 I MtkCam/CapturePipe/MDPNode: [onRequestProcess](25) -, R/F/S Num: 121/123/0
     02-11 16:46:48.132743  1073  5075 D MtkCam/P2/MWFrame: [doRelease] P2C cam 0 MWFrame:#123 MWReq:#121, frame 123 : all streams(11), using(0), status: s2:d0:App:YCrCb_420_SP:0|SW_READ_OFTEN(0),Meta:App:Control(1),Hal:Image:P1:Fullraw_main1(0),Hal:Image:P1:Resizeraw_main1(0),Hal:Image:STT_main1(0),Hal:Image:JpegYuv(1),Hal:Image:ThumbnailYuv(1),Hal:Meta:P1:Dynamic_main1(1),Hal:Meta:P2C:Dynamic(1),App:Meta:DynamicP1_main1(1),App:Meta:DynamicP2Cap(1),
     02-11 16:46:48.133006  1073  5075 D MtkCam/ppl_context: [onDispatchFrame] r121 frameNo:123 0x14 -> 0x16 READY(1/1)
     02-11 16:46:48.133052  1073  5075 D MtkCam/ppl_context: [onDispatchFrame] r121 frameNo:123 0x14 -> 0x23 READY(1/1)
     02-11 16:46:48.133278  1073  5075 I MtkCam/P2/CaptureProcessor: [onCompleted] P2C cam 0 MWFrame:#123 MWReq:#121, frame 123-0 : (0xb400007a33641c30) erased a completed request, request count:0, R/F Num:121/123
     02-11 16:46:48.133466  1073  5041 I MtkCam/JpegNode: [waitJpegEncodeReqDone] mReqNewTriggerEncodeCond wait - 
     02-11 16:46:48.133477  1073  5041 D MtkCam/JpegNode: [waitJpegEncodeReqDone] wait start: mJpegWaitDoneQueue size 1! 
     02-11 16:46:48.142688  1073  5163 D MtkCam/JpegNode: [hardwareOps_encode] + frameNo(123), requestNo(121), src: 2296x4080, dst: 2296x4080, format: 0x2300, crop(0,0;2296,4080), bsOffset(290688)
     02-11 16:46:48.142779  1073  5164 D MtkCam/JpegNode: [hardwareOps_encode] + frameNo(123), requestNo(121), src: 170x96, dst: 160x96, format: 0x2300, crop(56,0;58,96), bsOffset(1408)
     02-11 16:46:48.163314  1073  5041 D mtkcam-pipeline: [onLastStrongRef] [ requestNo:121 frameNo:123 ] frame end  //拍照帧 HAL 处理完成
     02-11 16:46:48.165027  4987  5021 I CamAp_CaptureSurface: [getBuffer] image.getFormat = 256 image.getWidth = 4080 image.getHeight = 2296 format = 256 captureType = jpeg
     // APP 接收拍照帧
     02-11 16:46:48.198899  2193  3478 D MediaProvider: Open with FUSE. FilePath: /storage/emulated/0/DCIM/Camera/IMG_20250211_164648_175.jpg. Uid: 10100. Media Capabilities Uid: 0. ShouldRedact: false. ShouldTranscode: false

2.5 腾讯水印相机闪光灯拍照

腾讯水印相机 拍照流程几乎跟MTK camera 流程一致,走预闪,主闪流程。
scenario:3 预闪
scenario:4 主闪

2.5.1 水印相机下发预闪Tag,进行预闪,主闪

腾讯水印相机预闪,主闪

2.5.2 主闪存图处理

腾讯水印相机主闪存图

2.6 美图秀秀,美颜相机、B612 闪光灯拍照

美图秀秀、美颜相机、B612等相机 拍照与视频录制统一一个button(点击拍照,长按录制视频),app 下发的flash on 场景为scenario:1 视频手电筒 scenario;

美图秀秀 拍照 视频统一

美颜相机 点击拍照,长按录制视频

B612点击拍照,长按录制视频

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容