【01 Streaming Framework】

本文主要介绍了Android相机中P2StreamingNode在Hal3架构中的作用,包括其架构、各层功能、调试开关及日志标签。内容涵盖P2S的流程、模块日志控制、缓冲区dump方法,以及EIS效果调试和控制流程。
摘要由CSDN通过智能技术生成

P2StreamingNode 介绍

P 版 Hal3 上,Streaming 相关的 flow(比如 preview, video record, VSS, EIS 等) 主要由 P2StreamingNode 以及这个 node 下各sub module来实现。

P2StreamingNode 是 Pipeline 中的一个 HwNode ,功能类似于旧架构中的 P2FreatureNode 。

接下来提到的 P2S 简写实际就是指 P2StreamingNode 以及这个 node 下各sub module 。

1. P2S Architecture

1

  • P2S 整个架构分4层。其中的 SFP 是 StreamingFeaturePipe 的缩写。

  • SFP Node 是 SFP 下的各个 node。request 传到 SFP 后,SFP 会往下丢到 SFP Node 处理。

  • SFP Node 的 flow 总是从 RootNode 开始,中间根据不同的处理需求,流经各个不同的node 处理,最终都会流到 HelperNode 处理。

  • HelperNode 会将处理结果 callback 回 StreamingProcessor。

  • TPINode 是用于挂载三方算法的 Node。

2. P2S 每一层作用以及相关封装的类

2
IPipelineFrame 被 queue 到 P2S 后,会经过一层一层的封装和处理,最终传到 SFP 中被各个 node 处理。

注:

这里没有将 StreamingFeaturePipe 下的各个node 画出来, StreamingFeaturePipe 就代表了整个 SFP module(包含了 SFP Node) 。

3. SFP Node flow for Preview/Recording/VSS

3
各个场景下的 SFP Node flow:

(1). normal preview/Recording:

  RootNode -> P2ANode -> P2AMDPNode -> HelperNode

  其中: P2ANode 做 Raw 转YUV 。 Bypass P2AMDPNode 。

            每一个 streaming flow 里都会有这个 node flow, 只是有的 flow 会根据情况 bypass 这个 node flow。

(2). AP 要求有 preview callback 或 VSS 时:

  RootNode -> P2ANode -> P2AMDPNode -> HelperNode

  其中: P2AMDPNode -- 有一出多作用,可以出多路 YUV buffer。如果没有走 TPINode和 VendorMDPNode,且要出多于2路的 YUV buffer,则 P2ANode只出其中任意2路 YUV buffer, 其他的几路YUV buffer就由 P2AMDPNode 去出。  

(3). Recording(开EIS,且无三方算法) 时:

  RootNode -> P2ANode -> EISNode -> WarpNode -> HelperNode 

  P2ANode -> WarpNode 

  其中: P2ANode 做Raw转YUV 并出 display 。

            P2ANode 将 YUV buffer 给到 WarpNode , 并通知 EISNode 可以进行 warp map 计算。

            WarpNode 收到 EISNode 计算出的 warp map 以及 P2ANode 传过来的 YUV buffer 后,做 crop 计算。最后 call 到 hw 做真正的 crop。 WarpNode 最终会出 有 EIS 效果的 record 。

(4). Preview(有三方算法) 时:

  RootNode -> P2ANode -> TPINode(有几个preview相关的三方算法,就有几个Node) -> VendorMDPNode -> HelperNode

  其中:  TPINode 是三方算法挂载点。最多有3个。

             P2ANode 只负责Raw转YUV,并只出一张 YUV buffer,流经 TPINode,最后给到 VendorMDPNode。

             VendorMDPNode 有一出多的作用,需要出所有的YUV buffer。

(5). Recording(不开EIS, 有三方算法)/VSS 时:

  RootNode -> P2ANode -> TPINode(接几个 preview 的三方算法,就有几个node) -> VendorMDPNode -> HelperNode 

  其中:  P2ANode  只负责 Raw转YUV ,VendorMDPNode  应该出 display/record/vss 。

(6). Recording(开 EIS,且有三方算法) 时:

  RootNode -> P2ANode -> TPINode(可以是多个) -> VendorMDPNode -> WarpNode -> HelperNode 

  VendorMDPNode -> HelperNode

  P2ANode -> EISNode -> WarpNode 

  其中: VendorMDPNode : 应该出 display/vss/以及用于流到 WarpNode 的 working buffer。

            WarpNode : 出有 EIS 效果的 record 。

4. P2S Debug 开关

(1). 如果要开 P2S 所有 module 的 log 开关,则下:

adb shell setprop vendor.debug.trace.p2 1     

or

adb shell setprop persist.vendor.trace.p2 1

(2). 如果要开 P2S 中某一个 module 的 log 开关,则下:

adb shell setprop vendor.debug.trace.p2.(P2_CLASS_TAG) 1     

or

adb shell setprop persist.vendor.trace.p2.(P2_CLASS_TAG) 1

其中:

P2_CLASS_TAG 对应的是各个 module 的.cpp 文件中定义的宏值。

比如:

如果只要开 MWFrame 的 log 时,要下如下 adb 命令:

adb shell setprop vendor.debug.trace.p2.MWFrame 1     

or

adb shell setprop persist.vendor.trace.p2.(MWFrame) 1

5. P2S 各 module 的 LOG TAG

  • StreamingNode : MtkCam/P2/StreamingNode

  • DispatchProcessor : MtkCam/P2/DispatchProcessor

  • StreamingProcessor : MtkCam/P2/StreamingProcessor

  • StreamingFeaturePipe : MtkCam/StreamingPipe

6. P2S dump buffer

P2S buffer dump 有两种 dump 方式,一种是 NDD dump,一种是 debug dump 。

NDD 是 Normal Data Dump 的缩写。

NDD dump 是比较常用的 dump 方式。

1. NDD dump :
adb root 

adb shell rm -rf /data/vendor/camera_dump/* 

adb shell setprop "vendor.debug.p2f.dump.enable" 1

adb shell setprop "vendor.debug.p2f.dump.mode" 1

进入 camera, 需要开始 dump 时, 请下adb 命令:

adb shell setprop "vendor.debug.camera.preview.dump" 1

需要停止 dump 时,请下 adb 命令:

adb shell setprop "vendor.debug.camera.preview.dump" 0
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

千北@

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

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

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

打赏作者

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

抵扣说明:

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

余额充值