MTK 闪光灯拍照流程分析(完善systrace篇)

MTK闪光灯拍照流程及trace分析

19210be3efa08a314ad7dc569bdf7020.gif

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

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

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

一、Flash 基础知识

1.1 Flash HAL 场景枚举值

1b11064941e487c6ff47666db2f6425f.jpeg
Flash HAL 场景枚举值

1.2 AE AF mode State 枚举值

c33e9075b223ac94a5176804e93f89ec.jpeg
AE AF mode State 枚举值

1.3 AWB mode State 枚举值

ec2de4716deb5a64ef4850f5993a7719.jpeg
AWB mode State 枚举值

二、MTK 闪光灯拍照分析

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

a2d7ad020ad29c7f0a071d139314883c.jpeg

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 闪光灯第一次打闪:预闪
36bb19c9d09ee040955a5bad58fc5f3f.jpeg
预闪备份2A
2.3.2 闪光灯第二次打闪:主闪
ec962e95a17fbd623f4fd02c65190563.jpeg
主闪存图
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_
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员Android

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

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

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

打赏作者

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

抵扣说明:

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

余额充值