【camera】自定义水印添加黄色表情,拍出来的照片水印表情显示为蓝色

问题描述:

相机-设置-打开照片水印-添加自定义(添加黄色表情)-拍照-观察照片

问题分析:

  1. 水印实现流程为:APP传输水印yuv到hal层,在hal层完成叠加动作
  2. dump出水印yuv图与拍照生成的yuv图观察:
    水印yuv图用nv12解析时显示正常黄色表情,用nv21格式解析时显示异常蓝色表情
    拍照生成的yuv图使用YUYV格式解析时显示正常
  3. dump出叠加完成后的yuv图观察,使用YUYV格式解析,水印显示异常蓝色表情。
  4. 排查水印与主图的叠加过程,发现是按照Y U V的排列顺序,遍历图像数组实现叠加操作。
  5. 确认YUYV和NV12的数据排列格式。参考文档:https://blog.youkuaiyun.com/cgwang_1580/article/details/79595958
  6. 代码中根据数组第几个元素区分Y U V三种数据,再将主图/水印的三种数据意义对应做叠加处理。
  7. 排查代码发现,叠加处理时:
    将水印yuv图中uv plane buffer中的偶数位下标(buffer[0], buffer[2], buffer[4])作为V值处理
    将水印yuv图中uv plane buffer中的奇数位下标(buffer[1], buffer[3], buffer[5])作为U值处理
    对照参考文档中的格式可以发现,这是NV21的排列方式,而不是NV12的。也就是说,处理水印yuv数据时使用NV21的数据格式解析了NV12的图像数据。就导致了水印的U值与V值被颠倒。

修改方案:

调整叠加部分的代码,按照NV12的格式解析水印数据,修改后验证表情水印显示为正常的黄色。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值