小蓝相机HDR拍照流程分析

news/2025/2/22 11:00:16/

69a731074df2b0251f43535318d3ba91.gif

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

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

  1. HDR 场景下发 3 帧拍照请求
  2. HDR 3帧拍照请求帧(478,479 480)
  3. HDR 3帧 result callback帧
  4. HDR 算法处理
  5. 算法编解码处理
  6. HDR 拍照log关键字

1. HDR 场景下发 3 帧拍照请求

HDR 场景下,点击拍照按钮提交拍照请求,拍照请求帧为3帧(trace 中submitRequestList
下可以看到 3 个 createCaptureRequest
)。

a390dab43a724132afeef45e6c8e2c4c.jpeg
点击拍照按钮提交拍照请求

2. HDR 3帧拍照请求帧(478,479 480)

ffa8993bf1bacf251455d31e21c98411.jpeg
3帧拍照请求帧

3. HDR 3帧 result callback帧

7a56b13a93b7e2643d234c75bc1bc9d6.jpeg
HDR 3帧 result callback帧

4. HDR 算法处理

8867a5677f63318e14b9c27b1ac6432f.jpeg
HDR 算法处理

5.算法编解码处理

7383613102f10e6a8ad556e1e319e432.jpeg
算法编解码处理

6. HDR 拍照log关键字

onShutterButtonFocus|connect call|Creating new stream|AlgoNativeInterface: HDR|AlgoNativeInterface: pAlgoParams|AlgoNativeInterface: algo process|IMG_20240829_195647.jpg|ACTION_UP|CAMAP_MAIN
部分log如下:

onShutterButtonFocus|connect call|Creating new stream|AlgoNativeInterface: HDR|AlgoNativeInterface: pAlgoParams|AlgoNativeInterface: algo process|IMG_20240829_195647.jpg|ACTION_UP|CAMAP_MAIN// 启动 cameraactivity行  205615: 08-29 19:56:29.548 10140 30284 30284 D _V_CAM_CameraActivity: CAMAP_MAIN: [Thread:main] CameraActivity---onStart, ActivityCode: 81415032行  205620: 08-29 19:56:29.551 10140 30284 30284 D _V_CAM_CameraActivity: CAMAP_MAIN: [Thread:main] CameraActivity---onNewIntent, ActivityCode: 81415032行  205755: 08-29 19:56:29.589 10140 30284 30284 V CAMAP_MAIN:: IS_LOG_CTRL_OPEN = true行  205756: 08-29 19:56:29.589 10140 30284 30284 D _V_CAM_CameraActivity: CAMAP_MAIN: [Thread:main] CameraActivity---onResumeTask, ActivityCode: 81415032 version: 12.1.78.8//  下发open camera行  205856: 08-29 19:56:29.632 10140 30284 19959 D _V_CAM_CameraModeProxyIml: CAMAP_MAIN: [Thread:camera_task] task thread---open camera E, CameraParam [ facing : FACING_BACK, modeName : Normal, cameraType : Master, mVModeInfo : 行  205863: 08-29 19:56:29.634 10140 30284 19959 D _V_CAM_CameraModeProxyIml: CAMAP_MAIN: [Thread:camera_task] task thread---open camera X//  连接cameraservice connect call行  205884: 08-29 19:56:29.646  1047  1557  3193 I CameraService: CameraService::connect call (PID 30284 "com.android.camera", camera ID 0) and Camera API version 2行  205956: 08-29 19:56:29.660 10140 30284 30284 D _V_CAM_StateMachine: CAMAP_MAIN: [Thread:main] change state --- photo : [ StateDestroy -> StateInit ]//  配3路流 Creating new stream行  206304: 08-29 19:56:29.769  1047  1557  3193 I Camera3-Device: Camera 0: Creating new stream 0: 1080 x 1080, format 34, dataspace 0 rotation 0 consumer usage 0, isShared 0, physicalCameraId , isMultiResolution 0 dynamicRangeProfile 0x1, streamUseCase 0, timestampBase 0, mirrorMode 0, colorSpace -1, useReadoutTimestamp 0行  206330: 08-29 19:56:29.775  1047  1557  3193 I Camera3-Device: Camera 0: Creating new stream 1: 1080 x 1080, format 35, dataspace 146931712 rotation 0 consumer usage 0, isShared 0, physicalCameraId , isMultiResolution 0 dynamicRangeProfile 0x1, streamUseCase 0, timestampBase 0, mirrorMode 0, colorSpace -1, useReadoutTimestamp 0行  206349: 08-29 19:56:29.787  1047  1557  3193 I Camera3-Device: Camera 0: Creating new stream 2: 3060 x 3060, format 35, dataspace 146931712 rotation 0 consumer usage 0, isShared 0, physicalCameraId , isMultiResolution 0 dynamicRangeProfile 0x1, streamUseCase 0, timestampBase 0, mirrorMode 0, colorSpace -1, useReadoutTimestamp 0行  207156: 08-29 19:56:30.141 10140 30284 19992 D _V_CAM_CameraModeProxyIml: CAMAP_MAIN: [Thread:camera_callback] onConfigured mode = BackNormalMainMode行  207163: 08-29 19:56:30.141 10140 30284 30284 D _V_CAM_StateMachine: CAMAP_MAIN: [Thread:main] change state --- photo : [ StateCameraOpened -> StateSessionCreated ]//  开始起预览请求 startPreview行  207247: 08-29 19:56:30.168 10140 30284 19959 D _V_CAM_CameraModeProxyIml: CAMAP_MAIN: [Thread:camera_task] ---startPreview PreviewParam {    [previewdetect = 140821240225795],    [eyeDetect = -1],    [previewAiDetect = [-1, -1]],    [vivo.control.ois = true],    [relight = 0],    [vivo.control.face.detect = true],    [vcamsdk.repeating.VideoStabilization = true],    [vivo.control.singleBlur_level = 0],    [vivo.control.portrait.effect = 0],    [vivo.record.eis.mode.enable = false],    [vivo.control.motionVersion=17],    [android.control.videoStabilizationMode=1],    [vivo.control.sod.state=0],    [vivo.parameter.temperature=43],    [vivo.control.captureStateForDetect=0],    [android.jpeg.orientation=90],    [vivo.parameter.cameraColdStart=false],    [custom.zoom=1.0],    [custom.flash_mode=0],    [custom.exposure_value=0],    }行  207407: 08-29 19:56:30.259 10140 30284 30284 D _V_CAM_ThumbnailAddition: CAMAP_MAIN: [Thread:main] updateThumbnailView//  首帧可用callback onFirstFrameAvailableCallback onFirstFrameAvailable行  207867: 08-29 19:56:30.431 10140 30284 19501 D _V_CAM_CameraActivity: CAMAP_MAIN: [Thread:VIEngine-Main]  onFirstFrameAvailableCallback行  207887: 08-29 19:56:30.437 10140 30284 30284 D _V_CAM_CameraActivity: CAMAP_MAIN: [Thread:main]  onFirstFrameAvailable//  HDR 场景下点击拍照 ACTION_UP  onShutterButtonFocus行  211606: 08-29 19:56:32.015 10069  3054  3054 D _V_InputEventReceiver: dispatchInputEvent ,vLog[a2c672 StatusBar (client)] ,event=MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=524.0, y[0]=420.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=76500757, downTime=76500650, deviceId=5, source=0x1002, displayId=0, eventId=17122441 }行  215088: 08-29 19:56:33.250 10069  3054  3054 D _V_InputEventReceiver: dispatchInputEvent ,vLog[375f109 NotificationShade (client)] ,event=MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=313.0, y[0]=651.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=76502116, downTime=76502045, deviceId=5, source=0x1002, displayId=0, eventId=980268846 }行  222254: 08-29 19:56:37.928 10069  3054  3054 D _V_InputEventReceiver: dispatchInputEvent ,vLog[375f109 NotificationShade (client)] ,event=MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=686.0, y[0]=2186.0, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=76506799, downTime=76505392, deviceId=5, source=0x1002, displayId=0, eventId=840324513 }行  235965: 08-29 19:56:47.169 10140 30284 30284 D _V_CAM_BaseBottomBar: CAMAP_MAIN: [Thread:main] onShutterButtonFocus  pressed = true行  237770: 08-29 19:56:48.077 10122 10844  4581 D AlgoNativeInterface: algo process E//  HDR 算法处理行  237774: 08-29 19:56:48.077 10122 10844  4581 D AlgoNativeInterface: algo process img[0] fd 109 width 3060 height 3060 stride 3072 scanline 3072 size 14155776 numFds 2 numInts 23 version 12行  237775: 08-29 19:56:48.077 10122 10844  4581 D AlgoNativeInterface: algo process img[1] fd 111 width 3060 height 3060 stride 3072 scanline 3072 size 14155776 numFds 2 numInts 23 version 12行  237776: 08-29 19:56:48.078 10122 10844  4581 D AlgoNativeInterface: algo process img[2] fd 113 width 3060 height 3060 stride 3072 scanline 3072 size 14155776 numFds 2 numInts 23 version 12行  237779: 08-29 19:56:48.078 10122 10844  4581 D AlgoNativeInterface: algo process imageFormat: 0x23 requestId: 8行  237814: 08-29 19:56:48.080 10122 10844  4581 D AlgoNativeInterface: HDR 3-frames version行  237872: 08-29 19:56:48.090 10122 10844  4581 D AlgoNativeInterface: pAlgoParams->frameFlag: 1724932607175 localtime:20240829195647//  HDR 算法选帧 478 479 480 3帧行  237889: 08-29 19:56:48.090 10122 10844  4581 D AlgoNativeInterface: pAlgoParams->frameId[0]: 478行  237890: 08-29 19:56:48.090 10122 10844  4581 D AlgoNativeInterface: pAlgoParams->frameId[1]: 479行  237891: 08-29 19:56:48.090 10122 10844  4581 D AlgoNativeInterface: pAlgoParams->frameId[2]: 480行  237985: 08-29 19:56:48.095 10122 10844  4581 D AlgoNativeInterface: hdrGains[0]: 6.733059, hdrShutters[0]: 30.000000, hdrFrameIndex:0行  237986: 08-29 19:56:48.095 10122 10844  4581 D AlgoNativeInterface: hdrGains[1]: 10.965449, hdrShutters[1]: 30.000000, hdrFrameIndex:1行  237987: 08-29 19:56:48.095 10122 10844  4581 D AlgoNativeInterface: hdrGains[2]: 1.454850, hdrShutters[2]: 10.000000, hdrFrameIndex:2行  238000: 08-29 19:56:48.096 10122 10844  4581 D AlgoNativeInterface: pAlgoParams->shotAeRegions left:0 top:0 right:0 bottom:0行  238009: 08-29 19:56:48.098 10122 10844  4581 D AlgoNativeInterface: algo process: pAlgoParams->satCropRegions ltwh 0 0 0 0

参考文献:

【腾讯文档】Android Framework 知识库
https://docs.qq.com/doc/DSXBmSG9VbEROUXF5

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

e1cad6758a6489fde9d8e565facd0b67.jpeg

点个在看,为大佬点赞!


http://www.ppmy.cn/news/1572845.html

相关文章

el-table封装一个自定义列配置表格组件(vue3开箱即用)

组件核心功能 拖拽排序(使用 vuedraggable) 显示/隐藏控制 列宽调整 列固定状态记忆 搜索过滤列 本地存储(localStorage)可改成接口保存 默认配置恢复 通过 searchText 动态过滤列。 安装拖拽依赖 npm install vuedragg…

vscode环境搭建

目录 一、安装VSCode 二、安装Python 三、安装Anaconda(可选,但推荐) 四、安装深度学习相关库 五、配置VSCode 六、 结果可视化 一、安装VSCode 访问官网下载:从VSCode官方网站下载适合你操作系统的安装包。安装:运行安…

PrimeFaces实战:IdleMonitor与Ajax的完美结合

在现代的Web开发中,用户交互的实时反馈是一个重要的用户体验环节。PrimeFaces作为一个强大的Java EE UI库,提供了许多便捷的功能组件,其中之一就是IdleMonitor。通过IdleMonitor,我们可以轻松地检测用户何时处于空闲状态以及何时从…

Bug日记:Linux中systemctl restart network失败问题,网络故障

日期 2023年10月25日 问题描述 在尝试使用 systemctl restart network 重启网络服务时,出现以下错误: Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and …

CTFHub技能树-密码口令wp

目录 引言弱口令默认口令 引言 仅开放如下关卡 弱口令 通常认为容易被别人(他们有可能对你很了解)猜测到或被破解工具破解的口令均为弱口令。 打开环境,是如下界面,尝试一些弱口令密码无果 利用burpsuite抓包,然后爆…

数据结构------单向链表。

一.实现单向链表的头插,头删,尾插,尾删,按位置插,按位置删,按位置修改,按元素查找,按元素修改,按元素删除,单链表的逆置,查找倒数第几个元素&…

word文档提取信息

目录 一、说明二、Aspose-words方式2.1、Aspose-words介绍2.2、Aspose-words使用说明2.3、Aspose-words解析核心代码一、说明 项目中遇到这样的一个需求问题:“一个docx文档,用户根据关键词能搜索定位到文档的哪一页”。docx文档主要有文本、表格、图片、附件这几类组合,为…

C#中的动态类型用法总结带演示代码

在C#中,dynamic 类型是一种特殊的类型,它允许你在编译时绕过类型检查,而是在运行时解析类型。这使得你可以编写更灵活的代码,但也增加了运行时错误的风险。dynamic 类型通常用于与动态语言(如Python、JavaScript&#…