【预览或录像画面异常问题的 buffer dump和处理】

本文详细介绍了Android Camera HAL3中遇到预览或录像画面异常时的Buffer Dump方法,包括P2S I/O、TPI I/O和Streaming Feature Pipe buffer的NDD Dump和自定义Dump,以及分析SOP。通过Dump和特定的debug方法,如绘制magic number和线条,配合log分析,帮助定位和解决问题。
摘要由CSDN通过智能技术生成

一、Streaming 的各个dump方法

1.整个P2S I/O buffer 的 dump

1.1 整个P2S I/O buffer 的 NDD Dump(Normal Data Dump)方法

Dump P2S 的 input/output buffer, contain rrzo, lcso, img3o, preview, record, and other yuv buffers which AP request.

Dump 步骤:

  1. 测试前,先下adb命令准备dump:
adb root

adb shell setenforce 0

adb shell setprop debug.cam.drawid 1            		--> draw magic number on camera output buffer

adb shell setprop vendor.debug.fpipe.force.img3o 1		--> force enable img3o

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
  1. 复现问题,并下adb命令开始dump:
  • 2.1 如果问题复现后,异常画面是一直存在的而不是闪现,则异常画面出现后,下 adb 命令开始 dump
  • 2.2 如果问题是概率性出现的,异常画面不会一直存在,则异常画面出现前,下 adb 命令开始 dump
  • 2.3 如果是录像录出的视频画面异常,则需要在录像时,就要下 adb 命令开始 dump,才能 dump 到 camera 输出的 record buffer
adb shell setprop vendor.debug.camera.preview.dump 1
  1. 停止dump:
  • 3.1 如果问题复现后,异常画面是一直存在的而不是闪现,则 dump 一小会儿(大概2s, 3s左右),立马下adb命令停止 dump(防止 dump时间长,dump 信息过大)
  • 3.2 如果问题是概率性出现的, 异常画面不会一直存在,则要等异常画面复现后,再下adb命令停止 dump
adb shell setprop vendor.debug.camera.preview.dump 0
  1. 将dump到的信息pull到本地目录:
adb pull /data/vendor/camera_dump <本地电脑存放路径>

dump 完后,dump 出来的 buffer 都放到 /data/vendor/camera_dump 这个目录下了。

camera_dump文件夹下的文件名称命令格式:

UniqueKey-RequestNo-FrameNo-SensorDev-Port-BufferWidth-BufferHeight-BufferStride_ImageWidthxImageHeight_xxx.Format

Dump example:

053310842-0032-0032-main-rrzo-PW1920-PH1440-BW3600__1920x1440_10_2.packed_word --> main sensor 的P1 rrzo buffer

053310842-0032-0032-main-img3o-PW1920-PH1472-BW1920__1920x1440_8_s0.yv12 --> main sensor 的img3o buffer(P2Anode 下过了ISP 但是还没过MDP 的buffer,供3DNR用)

053310842-0032-0032-main-wdmao-PW1920-PH1080-BW1920__1920x1080_8_s0.nv21 --> wdmao 代表判断为 display output buffer,也就是P2S 最终输出的main sensor的display buffer

053310842-0032-0032-main-PW352-PH352-BW704__352x264_12_s0.lcso --> main sensor 的P1 lcso buffer

040521031-2275-1954-sub-wroto-PW640-PH480-BW640__640x480_8_s0.yv12 --> wroto代表判断为record output buffer,也就是 P2S 最终输出的sub sensor 的record buffer

064306554-0118-0118-main-undef-PW1920-PH1080-BW1920__1920x1080_8_s0.nv21 --> previewCallback ,也就是P2S 最终输出的main sensor 的previewCallback buffer

5G project(除了5G B) 上,P1输出的 yuvo buffer(分两个文档存,由以往的P1输出rrzo buffer改为P1 直接输出yuvo buffer) :

040751403-0451-0246-sub-yuvo-cplane-PW1280-PH976-BW1600__1280x976_10_s0.packed_word

040751403-0451-0246-sub-yuvo-yplane-PW1280-PH976-BW1600__1280x976_10_s0.packed_word

1.2 整个P2S I/O buffer 的自定义 Dump方法

有时候,可能不需要每一帧都 dump,只需要 dump 指定的某些帧的P2S I/O buffer,就可以用自定义dump 方法去 dump。

Dump 步骤:

  1. 测试前,直接下以下命令开始 dump:
adb root

adb shell setenforce 0

adb shell setprop debug.cam.drawid 1            -->  draw magic number on camera output buffer
adb shell mkdir /data/vendor/p2_dump
adb shell setprop vendor.debug.p2f.dump.enable 1
adb shell setprop vendor.debug.p2f.dump.mode 2
adb shell setprop vendor.debug.p2f.dump.start  50        -->  P2S 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

千北@

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

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

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

打赏作者

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

抵扣说明:

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

余额充值