logo资料库

android 视频通话APK camera方向调整修改文档.pdf

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
福州瑞芯微电子有限公司 密级状态: 绝密() 秘密() 内部资料() 公开(√ ) 视频通话 APK 之 camera 方向问题说明手册 文件状态: [ ] 草稿 [ ] 正式发布 [√] 正在修改 文件标识: 当前版本: 作 者: 完成日期: 1.0 张云龙 2015-05-21 本文档为瑞芯微电子成员撰写及提供,不得用于工作之外的使用及交流。
福州瑞芯微电子有限公司 1 适用平台 本文档适用于 RK3066,RK3188,RK312x, RK3288,RK3368。 2 概述 camera 是有方向的,从模组规格书中可知 camera 的原始方向。装 camera 时, camera 原始方向与 LCD 长边方向只能是 0 度或者 180 度,如果装错 90 度,软件上是 无法修复的。 Camera sensor 送出来的都是横屏分辨率的数据(宽大于高,比如 800x600,不会 送出 600x800),不管屏幕怎么转动都是一样的。sensor 只有一个正方向,转动 sensor (或者说机器)时,sensor 出来的图像实际上相当于 sensor 不动,外部景象进行反向 旋转。 不管机器旋转到哪个方向,屏幕都能正常显示图像是因为系统根据配置的 camera 角度,系统方向及 gsensor 角度等,对要显示的图像做了必要的旋转。 图 1 LCD 方向和 Sensor 方向 本文档为瑞芯微电子成员撰写及提供,不得用于工作之外的使用及交流。
福州瑞芯微电子有限公司 3 术语解释 3.1 mirror 和 flip 图 2 mirror and flip 4 确定 APK 获取数据的方式 视频 APK 取得帧数据有两种方式,一种通过设置 preview data callback,另一种从显示 buffer 中获 取。 RK312x/3288/3368 平台: 在hardware\rockchip(4.4中是rk29)\camera\CameraHal\ AppMsgNotifier.cpp中的processPreviewData Cb函数中加打印信息,如果视频通话时有打印你加的信息说明走的是datacallbak方式,否则就是 从显示buf中取数据。更彻底的判断方法是: 图 3 RK3066/3188 平台: hardware\rk29 \ camera\ CameraHal.cpp 本文档为瑞芯微电子成员撰写及提供,不得用于工作之外的使用及交流。
福州瑞芯微电子有限公司 加上图中框中的一行代码。 如果视频通话时显示绿色,说明走的是 datacallback。如果本地端画面及传给对方的画面都是绿色, 说明两者取得帧数据的方式一样。已知 QQ 和微信都是这种方式。 5. camera 的相关方向 5.1 配置 camerainfo 中的方向。 hardware\rockchip\camera\CameraHal\CameraHal_Module.cpp 中 camera_get_camera_info 函数中 图 4 这里是将 camera 的角度信息上报给 service 层, 这些宏可以在 hardware\rockchip\camera\CameraHal\CameraHal.h 中设置: 本文档为瑞芯微电子成员撰写及提供,不得用于工作之外的使用及交流。
福州瑞芯微电子有限公司 图 5 其中: CONFIG_CAMERA_ORIENTATION_SKYPE 是宏开关,若要开启,设为 1 CONFIG_CAMERA_BACK_ORIENTATION_SKYPE 是后置摄像头的角度信息,可以设为 0、90、180、 270。 CONFIG_CAMERA_FRONT_ORIENTATION_SKYPE 是前置摄像头的角度信息,可以设为 0、90、180、 270。 另外,需要加上调用者进程名的判断,调用者进程名可以直接将图 3 中的 process_name 打印出来, 或者查看进入 APK(如 QQ)视频通话时 logcat 打印信息中有:Calling process is:xxxxxx。 注意:一定要打印进程名,不要臆想,如QQ 视频通话的进程名是com.tencent.mobileqq:video 而不 是com.tencent.mobileqq。 5.2 对帧数据进行 mirror 和 flip hardware\rockchip\camera\CameraHal\CameraHal.h 中两个宏: 图 6 CONFIG_CAMERA_FRONT_MIRROR_MDATACB_APK 左右镜像 CONFIG_CAMERA_FRONT_FLIP_MDATACB_APK 上下翻转 (3188 和 3066 平台代码中只有 CONFIG_CAMERA_FRONT_MIRROR_MDATACB_APK 宏) 这两个宏就是分别对通过 datacallback 获取的帧数据进行 mirror 或 flip。 在宏里追加上你要处理的 APK 进程名即可,进程名的获取方式参见 5.1。 如果当前已经是左右镜像或者上下翻转了,且相应宏中有该 APK 进程名,则去掉之。 注意,这两个宏默认只对前置摄像头有效果,如果要对后置摄像头处理,可自行参考实现。 5.3 sensor 寄存器中的 mirror 和 flip 一般 sensor 寄存器都可配置 mirror 和 flip(有的叫 updown),使得 sensor 输出的图像就是镜像或翻 转的。 本文档为瑞芯微电子成员撰写及提供,不得用于工作之外的使用及交流。
福州瑞芯微电子有限公司 图 7 5.4 系统方向参数 系统方向直接影响 camera 画面的显示方向。 root@rk3288:/ # getprop | grep rotation [ro.sf.fakerotation]: [true] [ro.sf.hwrotation]: [270] 这两个决定了横竖屏方向,一般来说,需要同时设置,具体如何使用也没搞得很懂,只有尝试着 调。 配置文件为/system/build.prop,修改该文件中的 ro.sf.fakerotation 和 ro.sf.hwrotation 的值后,push 到/system/下,要 chmod 755 改一下权限,否则可能导致重启后无法进入系统。 这两个属性的值修改后,需要配合修改 gsensor 的方向,使得系统方向正确。 6 常见问题分析 视频通话 APK 的方向调节,就是通过上面章节 5 中的几种方式来调节的,有的只需其中一种方式 调节,有的需要几种方式配合调节,一般情况下可以调节过来,如果无论如何也调不过来(如模组 真的装错了方向?),那么很抱歉,我们也没有办法。如果本地端与送给对方的画面始终都不能调 正确,那么先保证本地端的方向正确。有的视频通话 APK 本身有旋转方向的功能,既然有这个功能, 应该也考虑到确实存在方向的问题吧。 本文档为瑞芯微电子成员撰写及提供,不得用于工作之外的使用及交流。
福州瑞芯微电子有限公司 案例 1 图 8 平板端 图 9 电脑端 如上图中的 QQ 视频,机器 A 的本地预览画面 A2 方向正确,但对方传过来的画面 A1 却是显 示旋转了 270 度(逆时针 90 度);机器 B 同样,本地端 B2 正确,对方传过来的画面 B1 显示旋转了 270 度(逆时针 90 度)。而 B 是电脑端,数据方向应该是没错,那么方向问题就出在平板端。 初步分析,机器 A 显示对方传过来的画面(这个数据是通过网络传输到 QQ,QQ 直接显示, 不经过我们处理)倒了 270 度,并且送去对方的数据也倒了 270 度,可以认为是系统方向没调好, 因为电脑端 B 送来的画面肯定是正确的,QQ 只是根据系统设定的方向进行了调整,QQ 认为倒 270 度是正确的方向,所以就倒 270 度的显示出来了。实验证明,使用 5.1 和 5.2 的调节方式确实都 无法将本地及送给对方的同时调正确。 查看机器的系统方向参数: ro.sf.fakerotation=false ro.sf.hwrotation=0 改成这样: ro.sf.fakerotation=true ro.sf.hwrotation=270 机器转屏就会差 270, 而这时的 gesene 差 90 度,好像镜像一样(两轴 gsensor),最后把 gsensor 的 x y 对调,调好 gsensor 之后,QQ 视频画面就显示正确了。 本文档为瑞芯微电子成员撰写及提供,不得用于工作之外的使用及交流。
福州瑞芯微电子有限公司 案例 2 现象:视频通话中,竖屏时前置摄像头本地显示方向正确,送给对方的也显示正确,转为横屏时, 前置摄像头本地显示倒立,送给对方的也显示倒立。 首先确认,竖屏时前置摄像头显示效果是不是跟照镜子类似,可左右移动一下头部看看。如 果不是跟照镜子一样,那么按照 5.2 中方式进行 mirror 处理,应该就可以调正确。 如果前置摄像头显示效果已经跟照镜子效果一样,那就是其他原因了,尝试结合 5 章节中的 几种方式进行调节。 案例 3 现象:视频通话中,本地端显示倒立,送给对方的也显示倒立。 可以通过 5.2 中的 flip 方式进行调节,如果 flip 宏中有该进程名则去掉,没有则追加上。3188 和 3066 平台代码没有 flip 宏,可尝试通过 5.1 中的方式对后置摄像头旋转 180 度调节。 本文档为瑞芯微电子成员撰写及提供,不得用于工作之外的使用及交流。
分享到:
收藏