MTK 多帧拍照流程分析

科技   2024-08-29 08:15   上海  

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

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

一、多帧拍照请求概览
二、多帧拍照回帧概览

一、多帧拍照请求概览

多帧拍照请求概览如下:

多帧拍照请求
1.1 APP 下发拍照请求到 Camera Framework
1.1.1 Trace关键字如下:

APP:
deliverInputEvent: app 点击事件处理
CameraUnitCamera2ImplTakePicture: app 下发拍照请求
binder transaction :通过bind 跟FWK交互

FWK:
binder reply :响应app 下发的bind
submitRequestList:Camera FWK提交拍照请求给HAL,并包含拍照帧数
captureList
submitRequestsHelper
createCaptureRequest :比如多帧会下发4 帧
queueRequestList
unpauseForNewRequests:暂停新的拍照请求

1.1.2 详细请看下面trace 截图
1.1.3 下发4帧请求createCaptureRequest
请求4帧
1.2 Camera Framework下发拍照请求到 camera HAL中
1.2.1 Trace关键字如下:

FWK:
sendRequestsBatch:Camera FWK 下发批处理请求
CameraHal::processBatchCaptureRequests: Camera FWK 每帧请求到HAL
HIDL::ICameraDeviceSession::processCaptureRequest_3_4::client: Camera 向Camera HAL请求一帧
binder transaction

CAM HAL:
binder reply
HIDL::ICameraDeviceSession::processCaptureRequest_3_4::server :Camera HAL接受处理Camera FWK 请求
processCaptureRequest_3_4
processCaptureRequest
submitOneRequest
onRequest_EvaluateRequest
evaluateRequest
FeatureSettingPolicy::evaluateRequest
evaluateCaptureSetting
negotiate
onRequest_ProcessEvaluatedFrame
processEvaluatedFrame
onProcessEvaluatedFrame
submitZslRequest:Camera HAL 提交拍照请求帧
makePipelineFrame
queue|requestNo:97 frameNo:97
onFrameUpdated

1.2.2 详细请看下面trace 截图
1.2.3 拍照log关键字:

control.captureIntent:2|capture req#
拍照log 如下:

01-02 09:05:10.695442  1161  1642 I mtkcam-PipelineModelSession: [submitRequest] <Default/1> requestNo:94 { repeating:0 control.aeTargetFpsRange:5,30 control.captureIntent:2 control.enableZsl:1 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:2 }
01-02 09:05:10.695560 1161 1642 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] (0xb4000075a3a43020) capture req#:94
01-02 09:05:10.734815 1161 1642 I mtkcam-PipelineModelSession: [submitRequest] <Default/1> requestNo:95 { repeating:0 control.aeTargetFpsRange:5,30 control.captureIntent:2 control.enableZsl:1 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:2 }
01-02 09:05:10.734937 1161 1642 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] (0xb4000075a3a43020) capture req#:95
01-02 09:05:10.770126 1161 1645 I mtkcam-PipelineModelSession: [submitRequest] <Default/1> requestNo:96 { repeating:0 control.aeTargetFpsRange:5,30 control.captureIntent:2 control.enableZsl:1 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:2 }
01-02 09:05:10.770526 1161 1645 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] (0xb4000075a3a43020) capture req#:96
01-02 09:05:10.795720 1161 1645 I mtkcam-PipelineModelSession: [submitRequest] <Default/1> requestNo:97 { repeating:0 control.aeTargetFpsRange:5,30 control.captureIntent:2 control.enableZsl:1 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:2 }
01-02 09:05:10.795846 1161 1645 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] (0xb4000075a3a43020) capture req#:97
01-02 09:05:10.958217 1161 1642 I mtkcam-FeatureSettingPolicy_ISP: [evaluateCaptureSetting] (0xb4000075a3be0c58) capture req#:94 (count:4, index:0)
01-02 09:05:13.924135 1161 1644 I mtkcam-FeatureSettingPolicy_ISP: [evaluateCaptureSetting] (0xb400007592195818) capture req#:94 (count:1, index:0)

二、多帧拍照回帧概览

2.1 多帧拍照回帧概览如下:

2.2 Camera HAL 请求返回帧处理
2.2.1 Trace 关键字如下:

CAM HAL:
onDispatchFrame|requestNo:97 frameNo:97 nodeId:1 : 处理拍照请求帧97
CaptureNode::queue

P2_Capture:enque()
MWFrameRequest::createRequests->createP2ImgMap

p2a:process|r97f97s1 :RequestNo : 97 FrameNo: 97 SensorID :1 前摄

r97f97s1 解释

p2a:finish|r97f971)
P2_Capture:notifyRelease()
P2:ApplyRelease
P2:DispatchFrame

processCaptureResult
convertToHidlCaptureResults
HIDL::ICameraDeviceCallback::processCaptureResult_3_4::client

2.3 Camera FWK && Camera APP 请求返回帧处理

CAM FWK:
HIDL::ICameraDeviceCallback::processCaptureResult_3_4::server
queueBuffer

APP:
binder reply
queueBuffer
ImageReader : APP 接收到 Camera FWK PostView

2.4 MTK BSS效果选帧处理

效果处理:
BSS(Best Shot Selection)MTK 最佳选帧算法,拍照返回帧的效果的一些处理,主要优化图片质量效果

packIspTuningDataToHeap: 4帧拍照会有5个,每帧一个,在MFNR处理后会还有一个
downSampleImageBufferHeap
doZipWithBss

2.5 app 请求返回帧处理

APP拿到请求返回帧后对图片进行处理,
比如多帧算法,人脸识别,美颜算法,滤镜,镜像等等,app 处理完之后就开始压jpeg进行图片保存。
大致流程如下:

2.6 拍照log分析

拍照 log关键字:
CameraTest |capture req#|select size|connect call|imgoDefaultRequest|MtkCam/StreamingPipe/Timer.Frame timer|P2C cam 1: notify release|AppMgr-configureStreams|capture_algo_list|submitRequest.requestNo:0|powerOn|configureStreams_3_6|convertStreamConfigurationFromHidl|control.captureIntent:2|1st request - OK|evaluateCaptureSetting.*trigger feature|onProcessEvaluatedFrame|ImageReader

拍照log分析:


// apk 包名, camera id 1: 前置 API2
01-02 09:05:07.465981 1069 1713 I CameraService::connect call (PID -1 "com.android.camera", camera ID 1) and Camera API version 2
// Sensor 上电 PowerOn
01-02 09:05:07.479948 1161 16439 I mtkcam-DeviceAdapter: 1[HalDeviceAdapter::powerOn] powerOn +
01-02 09:05:07.479982 1161 16439 D mtkcam-DeviceAdapter: 1[HalDeviceAdapter::powerOn] change priority
01-02 09:05:07.480312 1161 16440 D mtkcam-DeviceAdapter: [initSensor] powerOnSensor0
01-02 09:05:07.480366 1161 16440 D MtkCam/HalSensor: [powerOn] sensorIdx : 1
01-02 09:05:07.487151 1161 16439 D MtkCam/Utils: {CamProfile}[HalDeviceAdapter:1::powerOn] 3A Hal -: (0-th) ===> [start-->now: 7 ms]
01-02 09:05:07.490895 1161 16439 D MtkCam/Utils: {CamProfile}[HalDeviceAdapter:1::powerOn] ISP Hal -: (1-th) ===> [start-->now: 10 ms] [last-->now: 3 ms]
01-02 09:05:07.515776 1161 16440 D MtkCam/HalSensor: [powerOn] - <HalDeviceAdapter:1> mSensorIdx = 0x1
01-02 09:05:07.515791 1161 16440 D MtkCam/HalSensor: [sensorPowerOnCountInc] caller(HalDeviceAdapter:1) sensorIdx(0x1) powerOn count: 1
01-02 09:05:07.515858 1161 16439 D MtkCam/Utils: {CamProfile}[HalDeviceAdapter:1::powerOn] Sensor powerOn -: (2-th) ===> [start-->now: 35 ms] [last-->now: 24 ms]
01-02 09:05:07.515915 1161 16439 I mtkcam-DeviceAdapter: 1[HalDeviceAdapter::powerOn] 3A notifyPowerOn
01-02 09:05:07.516048 1161 16439 D MtkCam/Utils: {CamProfile}[HalDeviceAdapter:1::powerOn] 3A notifyPowerOn -: (3-th) ===> [start-->now: 36 ms] [last-->now: 0 ms]
01-02 09:05:07.516056 1161 16439 I mtkcam-DeviceAdapter: 1[HalDeviceAdapter::powerOn] powerOn -
//app 请求配流
01-02 09:05:07.530467 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::configureStreams_3_6] +
01-02 09:05:07.530577 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::convertStreamConfigurationFromHidl] {.v3_2 = {.id = 0, .streamType = OUTPUT, .width = 960, .height = 720, .format = YCBCR_420_888, .usage = CPU_READ_NEVER | CPU_READ_RARELY | CPU_READ_OFTEN | CPU_WRITE_NEVER | GPU_TEXTURE (0x103), .dataSpace = UNKNOWN | STANDARD_UNSPECIFIED | STANDARD_BT601_625 | TRANSFER_UNSPECIFIED | TRANSFER_LINEAR | TRANSFER_SRGB | TRANSFER_SMPTE_170M | RANGE_UNSPECIFIED | RANGE_FULL | V0_JFIF (0x8c20000), .rotation = ROTATION_0}, .physicalCameraId = "", .bufferSize = 0}
01-02 09:05:07.530609 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::convertStreamConfigurationFromHidl] {.v3_2 = {.id = 1, .streamType = OUTPUT, .width = 3264, .height = 2448, .format = YCBCR_420_888, .usage = CPU_READ_NEVER | CPU_READ_RARELY | CPU_READ_OFTEN | CPU_WRITE_NEVER (0x3), .dataSpace = UNKNOWN | STANDARD_UNSPECIFIED | STANDARD_BT601_625 | TRANSFER_UNSPECIFIED | TRANSFER_LINEAR | TRANSFER_SRGB | TRANSFER_SMPTE_170M | RANGE_UNSPECIFIED | RANGE_FULL | V0_JFIF (0x8c20000), .rotation = ROTATION_0}, .physicalCameraId = "", .bufferSize = 0}
01-02 09:05:07.530665 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::convertStreamConfigurationFromHidl] {.v3_2 = {.id = 2, .streamType = OUTPUT, .width = 3264, .height = 2448, .format = RAW10, .usage = CPU_READ_NEVER | CPU_READ_RARELY | CPU_READ_OFTEN | CPU_WRITE_NEVER (0x3), .dataSpace = UNKNOWN | ARBITRARY | STANDARD_UNSPECIFIED | TRANSFER_UNSPECIFIED | RANGE_UNSPECIFIED (0x1), .rotation = ROTATION_0}, .physicalCameraId = "", .bufferSize = 0}
01-02 09:05:07.530709 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::convertStreamConfigurationFromHidl] {.v3_2 = {.id = 3, .streamType = OUTPUT, .width = 2560, .height = 1920, .format = YV12, .usage = CPU_READ_NEVER | CPU_READ_RARELY | CPU_READ_OFTEN | CPU_WRITE_NEVER (0x3), .dataSpace = UNKNOWN | STANDARD_UNSPECIFIED | STANDARD_BT601_625 | TRANSFER_UNSPECIFIED | TRANSFER_LINEAR | TRANSFER_SRGB | TRANSFER_SMPTE_170M | RANGE_UNSPECIFIED | RANGE_FULL | V0_JFIF (0x8c20000), .rotation = ROTATION_0}, .physicalCameraId = "", .bufferSize = 0}
01-02 09:05:07.530735 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::convertStreamConfigurationFromHidl] {.v3_2 = {.id = 4, .streamType = OUTPUT, .width = 1280, .height = 720, .format = YV12, .usage = CPU_READ_NEVER | CPU_READ_RARELY | CPU_READ_OFTEN | CPU_WRITE_NEVER (0x3), .dataSpace = UNKNOWN | STANDARD_UNSPECIFIED | STANDARD_BT601_625 | TRANSFER_UNSPECIFIED | TRANSFER_LINEAR | TRANSFER_SRGB | TRANSFER_SMPTE_170M | RANGE_UNSPECIFIED | RANGE_FULL | V0_JFIF (0x8c20000), .rotation = ROTATION_0}, .physicalCameraId = "", .bufferSize = 0}
01-02 09:05:07.530753 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::convertStreamConfigurationFromHidl] operationMode=32769
01-02 09:05:07.531418 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::convertStreamConfigurationFromHidl] streamId:0 type:OUT (w,h) = (960,720) format:35 usage:0x103 dataSpace:8c20000 rotation:0 physicalCameraId: bufferSize:0
01-02 09:05:07.531446 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::convertStreamConfigurationFromHidl] streamId:1 type:OUT (w,h) = (3264,2448) format:35 usage:0x3 dataSpace:8c20000 rotation:0 physicalCameraId: bufferSize:0
01-02 09:05:07.531470 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::convertStreamConfigurationFromHidl] streamId:2 type:OUT (w,h) = (3264,2448) format:37 usage:0x3 dataSpace:1 rotation:0 physicalCameraId: bufferSize:0
01-02 09:05:07.531493 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::convertStreamConfigurationFromHidl] streamId:3 type:OUT (w,h) = (2560,1920) format:842094169 usage:0x3 dataSpace:8c20000 rotation:0 physicalCameraId: bufferSize:0
01-02 09:05:07.531517 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::convertStreamConfigurationFromHidl] streamId:4 type:OUT (w,h) = (1280,720) format:842094169 usage:0x3 dataSpace:8c20000 rotation:0 physicalCameraId: bufferSize:0
01-02 09:05:07.531529 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::convertStreamConfigurationFromHidl] operationMode=32769
// selectsize sensormode
01-02 09:05:07.540522 1161 1644 I mtkcam-SensorSettingPolicy: select size(3264x2448)@30 sensorMode:0 hdrSensorMode:0 hdrHalMode:0, hfpsMode:0, staggerScenarios:0
// P1 IMGO RRZO
01-02 09:05:07.540946 1161 1644 I mtkcam-P1HwSettingPolicy: { .imgoAlloc={ format:0x2201 3264x2448 } .imgoDefaultRequest={ format:0x2201 3264x2448 } .imgoSeamlessRequest={ format:0 0x0 } .rrzoDefaultRequest={ format:0x2205 1280x960 } .rssoSize=288x512 .pixelMode=2 .usingCamSV=0 }
//app 请求配流
01-02 09:05:07.552660 1161 1644 D mtkcam-AppStreamMgr: [AppMgr-configureStreams] 0 960x720 OUT ImgFormat:0x1000(NV12) BufPlanes(strides/sizeInBytes):[ 960/691200 960/345600 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s0:d1:App:NV12:0|SW_READ_OFTEN|HW_TEXTURE AllocImgFormat:0x1000(NV12) AllocBufPlanes(strides/sizeInBytes):[ 960/691200 960/345600 ] Real:0x1000(NV12) Request:0x23(YCbCr_420_888) Override:0x23(YCbCr_420_888) Hal-Client-usage:0x103(0|SW_READ_OFTEN|HW_TEXTURE) Hal-usage:0x20033(0|SW_READ_OFTEN|SW_WRITE_OFTEN|HW_CAMERA_WRITE) HalStream::(consumer/producer)Usage:0/0x20033 0xb4000075a3a274c0 phy:-1
01-02 09:05:07.552684 1161 1644 D mtkcam-AppStreamMgr: [AppMgr-configureStreams] 0x1 3264x2448 OUT ImgFormat:0x11(NV21) BufPlanes(strides/sizeInBytes):[ 3264/7990272 3264/4157248 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s1:d1:App:YCrCb_420_SP:0|SW_READ_OFTEN AllocImgFormat:0x11(NV21) AllocBufPlanes(strides/sizeInBytes):[ 3264/7990272 3264/4157248 ] 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 0xb4000075593c6840 phy:-1
01-02 09:05:07.552708 1161 1644 D mtkcam-AppStreamMgr: [AppMgr-configureStreams] 0x2 3264x2448 OUT ImgFormat:0x2201(BAYER10) BufPlanes(strides/sizeInBytes):[ 4080/9987840 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:8 d/s:0x00000001(ARBITRARY) s2:d1:App:RAW10:0|SW_READ_OFTEN AllocImgFormat:0x21(BLOB) AllocBufPlanes(strides/sizeInBytes):[ 9987840/9987840 ] Real:0x25(RAW10) Request:0x25(RAW10) Override:0x25(RAW10) 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 0xb4000075920f0040 phy:-1
01-02 09:05:07.552733 1161 1644 D mtkcam-AppStreamMgr: [AppMgr-configureStreams] 0x3 2560x1920 OUT ImgFormat:0x32315659(YV12) BufPlanes(strides/sizeInBytes):[ 2560/4915200 1280/1228800 1280/1232640 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s3:d1:App:YV12:0|SW_READ_OFTEN AllocImgFormat:0x32315659(YV12) AllocBufPlanes(strides/sizeInBytes):[ 2560/4915200 1280/1228800 1280/1232640 ] Real:0x32315659(YV12) Request:0x32315659(YV12) Override:0x32315659(YV12) 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 0xb4000075593c5180 phy:-1
01-02 09:05:07.552756 1161 1644 D mtkcam-AppStreamMgr: [AppMgr-configureStreams] 0x4 1280x720 OUT ImgFormat:0x32315659(YV12) BufPlanes(strides/sizeInBytes):[ 1280/921600 640/230400 640/263040 ] startOffset:0 bufStep:0 t:0/r:0 maxBuffers:12 d/s:0x08c20000(V0_JFIF|STANDARD_BT601_625|TRANSFER_SMPTE_170M|RANGE_FULL) s4:d1:App:YV12:0|SW_READ_OFTEN AllocImgFormat:0x32315659(YV12) AllocBufPlanes(strides/sizeInBytes):[ 1280/921600 640/230400 640/263040 ] Real:0x32315659(YV12) Request:0x32315659(YV12) Override:0x32315659(YV12) 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 0xb4000075a3a25540 phy:-1
01-02 09:05:07.553218 1161 1644 D mtkcam-dev3-hidl: [1-hidl-session::configureStreams_3_6] -
//下发第一帧预览请求
01-02 09:05:07.592050 1161 1644 I mtkcam-PipelineModelSession: [submitRequest] <Default/1> requestNo:0 { repeating:0 control.aeTargetFpsRange:5,30 control.captureIntent:1 control.enableZsl:0 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:1 }
01-02 09:05:07.597302 1161 1644 D mtkcam-dev3: [1-session::processCaptureRequest] -> 1st request - OK
//第一帧预览HAL 测返回
01-02 09:05:07.756047 1161 16485 D MtkCam/StreamingPipe/Timer: [print]Frame timer [# 1/ 0][t 24][io 0][tof 0/ 0][d 0/ 0][mss 0/ 0/ 0/ 0][a 15/ 5/ 10][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 6/ 1/ 4][e 0][r 0/ 0][w_A 0/ 0/ 0/ 0 w_B 0/ 0/ 0/ 0][x 0][disp 0/ 0][async 20/ 20][p2sm 0/ 0/ 0][fps0.00/0.00/ 5/ 30]
// camera app display 显示
01-02 09:05:07.759964 2392 2392 E CameraManager: CameraTest Displayed com.android.camera
//点击拍照, 多帧拍照 4帧 mfll
01-02 09:05:10.609488 2392 16153 E CameraManager: CameraTest Shutter Respond Start, count: 0
01-02 09:05:10.609667 2392 16153 E CameraManager: CameraTest Shutter Respond Start
01-02 09:05:10.736028 2392 2392 E BaseMode: CameraTest Shutter clickable Restart
01-02 09:05:10.788154 2392 2392 E BaseMode: CameraTest Shutter clickable Restart
01-02 09:05:10.803813 2392 2392 E BaseMode: CameraTest Shutter clickable Restart
01-02 09:05:10.834660 2392 2392 E BaseMode: CameraTest Shutter clickable Restart
//capture req# / control.captureIntent:2 2表示拍照
01-02 09:05:10.695442 1161 1642 I mtkcam-PipelineModelSession: [submitRequest] <Default/1> requestNo:94 { repeating:0 control.aeTargetFpsRange:5,30 control.captureIntent:2 control.enableZsl:1 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:2 }
01-02 09:05:10.734815 1161 1642 I mtkcam-PipelineModelSession: [submitRequest] <Default/1> requestNo:95 { repeating:0 control.aeTargetFpsRange:5,30 control.captureIntent:2 control.enableZsl:1 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:2 }
01-02 09:05:10.770126 1161 1645 I mtkcam-PipelineModelSession: [submitRequest] <Default/1> requestNo:96 { repeating:0 control.aeTargetFpsRange:5,30 control.captureIntent:2 control.enableZsl:1 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:2 }
01-02 09:05:10.795720 1161 1645 I mtkcam-PipelineModelSession: [submitRequest] <Default/1> requestNo:97 { repeating:0 control.aeTargetFpsRange:5,30 control.captureIntent:2 control.enableZsl:1 control.processRawEn:0 control.mode:1 control.sceneMode:0 control.videoStabilizationMode:0 edge.mode:2 }
01-02 09:05:10.695560 1161 1642 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] (0xb4000075a3a43020) capture req#:94
01-02 09:05:10.734937 1161 1642 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] (0xb4000075a3a43020) capture req#:95
01-02 09:05:10.770526 1161 1645 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] (0xb4000075a3a43020) capture req#:96
01-02 09:05:10.795846 1161 1645 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] (0xb4000075a3a43020) capture req#:97
// 拍照Feature 多帧降噪 MTK_FEATURE_MFNR
01-02 09:05:10.703491 1161 1642 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] trigger feature:MTK_FEATURE_MFNR(0x1), feature combination:MTK_FEATURE_COMBINATION_ISP_HIDL_SOURCE_MFNR(0x300d1) for req#94
01-02 09:05:10.736608 1161 1642 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] trigger feature:MTK_FEATURE_MFNR(0x1), feature combination:MTK_FEATURE_COMBINATION_ISP_HIDL_SOURCE_MFNR(0x300d1) for req#95
01-02 09:05:10.774027 1161 1645 I mtkcam-FeatureSettingPolicy: [evaluateCaptureSetting] trigger feature:MTK_FEATURE_MFNR(0x1), feature combination:MTK_FEATURE_COMBINATION_ISP_HIDL_SOURCE_MFNR(0x300d1) for req#96
01-02 09:05:10.705427 1161 1642 D mtkcam-PipelineModelSessionDefault: [onProcessEvaluatedFrame] [requestNo:94] submit Zsl Request
01-02 09:05:10.737615 1161 1642 D mtkcam-PipelineModelSessionDefault: [onProcessEvaluatedFrame] [requestNo:95] submit Zsl Request
01-02 09:05:10.775992 1161 1645 D mtkcam-PipelineModelSessionDefault: [onProcessEvaluatedFrame] [requestNo:96] submit Zsl Request
01-02 09:05:10.815992 1161 1645 D mtkcam-PipelineModelSessionDefault: [onProcessEvaluatedFrame] [requestNo:96] submit Zsl Request
01-02 09:05:13.924135 1161 1644 I mtkcam-FeatureSettingPolicy_ISP: [evaluateCaptureSetting] (0xb400007592195818) capture req#:94 (count:1, index:0)
// 图片保存
01-02 09:05:14.084218 2392 16945 E ImageSaverThread: CameraTest Picture Save End, picture.mFormat: jpeg, picture.mUri: content://media/external/images/media/1211
01-02 09:05:14.324900 14552 14552 W PhotoPage: CameraTest Camera View Picture End

参考文献:

【腾讯文档】Camera学习知识库
https://docs.qq.com/doc/DSWZ6dUlNemtUWndv

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

点个在看,为大佬点赞!

程序员Android
这是一个专注提供 Java Android 知识体系服务的公众号。 和你一起终身学习,小安愿做你成长道路上的垫脚石,不断垫高你的高度,衬托你的威仪。 风里雨里,我们一直在 Java Android 学习的路上支持你!
 最新文章