
和你一起终身学习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、Flash 基础知识
二、MTK 闪光灯拍照l分析
一、Flash 基础知识
1.1 Flash HAL 场景枚举值
1.2 AE AF mode State 枚举值
1.3 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 闪光灯第一次打闪:预闪
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_
MTK闪光灯拍照流程及trace分析

最低0.47元/天 解锁文章
862

被折叠的 条评论
为什么被折叠?



