美文网首页camera
MTK Capture 拍照流程分析

MTK Capture 拍照流程分析

作者: 程序员Android1 | 来源:发表于2023-05-30 11:58 被阅读0次

    和你一起终身学习,这里是程序员 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

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

    相关文章

      网友评论

        本文标题:MTK Capture 拍照流程分析

        本文链接:https://www.haomeiwen.com/subject/mmvjedtx.html