现象
设备从老版本R2B1切到了R2B3流,畸变校正算法不生效
解决思路
- 代码解决编译问题
- 2241设备已经切到R2B3了,把动态库放到设备里面看一下是否生效 ——测试:葛志海
- 把动态库库放到2431中是否生效,确认一下用的媒控库是新的还是老的 —— 测试:王海龙
- 如果生效了,检查路径。如果不生效,IMGVideoAlgOpen函数返回1,在其中加打印,看一下传入结构体里的值对不对
- 如果不生效,查看媒控的调用情况,主要注意库名和函数名
- 2241把新库放进去看一下是否生效,如果生效了,就是库的版本不对,如果不生效的话,还需要和媒控查看代码
过程
编译 到
jni
目录下,运行ndk_build.cmd
2241设备IP:
10.67.36.191
启动ssh登陆后,登陆17230端口,
openssh
。然后打开10023端口,输入网口转usb指令:setprop service.adb.tcp.port 5555 && stop adbd && start adbd
,然后root:setprop service.ipc.root 1
,最后用adb连上防止换的库被覆盖,
mv /etc/update.bz2 /etc/update.bz2.bak
,换库路径/storage/sdcard0/bin/lib
发现2241开关没有明显作用,联系葛志海测试多台设备发现,R2B3的每日流有效果,封闭流没效果。
又找了一台设备
10.67.36.194
发现花屏换到中试R2B1版本,有点效果
# IPC
setcapratio 1920 1080 # 上面这一条是切分辨率的,2241是200万的,但是没有用
mcsetldc 1500 100换上我的库后在界面上开关没有反应,但是输入命令mcsetldc就生效了 。由于mcsetldc命令是媒控封装的,是否能证明是业务的问题?
在2241上的R2B3测试:原有的库输入命令就会花屏,换上最新的算法库,在web界面上调没有反应,但是输入指令就正常了
在2431上换上最新的算法库也会报错,先搞定2431的问题
查看媒控代码,发现老版本的媒控使用的库名和函数名都不对,用的是老的算法库,需要替换成新的
当媒控修改库之后,配上最新的算法库就正常了,联系CMO取库,发现一套代码编出了两个版本,一个放在8056目录,一个放在了660目录。2431是8056的老设备,用8056目录下的库即可
2241更新代码后,换上最新的算法库,发现一切正常。说明还是算法库用的是老的,但是CMO放的路径确实没有问题。查看业务的编译脚本,发现它把两个版本的算法库都拷贝了进来,但是用老的算法库覆盖了新库,导致最后用的还是老库
小结
CMO分两种,第一种是专门编译代码的,第二种是专门把编译出的代码放在一个地方让业务去取的。然后业务写编译脚本,把库包含进来。
媒控有两个版本,老设备用的是alpha,新设备和双摄用的是beta版,需要关注他们的版本。
版本信息的打印很重要,只不过这个是很久不维护的,如何添加版本信息,可以参考我之前的文章。