现象

设备从老版本R2B1切到了R2B3流,畸变校正算法不生效

解决思路

  • 代码解决编译问题
  • 2241设备已经切到R2B3了,把动态库放到设备里面看一下是否生效 ——测试:葛志海
  • 把动态库库放到2431中是否生效,确认一下用的媒控库是新的还是老的 —— 测试:王海龙
  • 如果生效了,检查路径。如果不生效,IMGVideoAlgOpen函数返回1,在其中加打印,看一下传入结构体里的值对不对
  • 如果不生效,查看媒控的调用情况,主要注意库名和函数名
  • 2241把新库放进去看一下是否生效,如果生效了,就是库的版本不对,如果不生效的话,还需要和媒控查看代码

过程

  1. 编译 到jni目录下,运行ndk_build.cmd

  2. 2241设备IP:10.67.36.191

  3. 启动ssh登陆后,登陆17230端口,openssh。然后打开10023端口,输入网口转usb指令:setprop service.adb.tcp.port 5555 && stop adbd && start adbd,然后root:setprop service.ipc.root 1,最后用adb连上

  4. 防止换的库被覆盖,mv /etc/update.bz2 /etc/update.bz2.bak,换库路径/storage/sdcard0/bin/lib

  5. 发现2241开关没有明显作用,联系葛志海测试多台设备发现,R2B3的每日流有效果,封闭流没效果。

  6. 又找了一台设备10.67.36.194发现花屏

  7. 换到中试R2B1版本,有点效果

    # IPC
    setcapratio 1920 1080 # 上面这一条是切分辨率的,2241200万的,但是没有用
    mcsetldc 1500 100
  8. 换上我的库后在界面上开关没有反应,但是输入命令mcsetldc就生效了 。由于mcsetldc命令是媒控封装的,是否能证明是业务的问题?

  9. 在2241上的R2B3测试:原有的库输入命令就会花屏,换上最新的算法库,在web界面上调没有反应,但是输入指令就正常了

  10. 在2431上换上最新的算法库也会报错,先搞定2431的问题

  11. 查看媒控代码,发现老版本的媒控使用的库名和函数名都不对,用的是老的算法库,需要替换成新的

  12. 当媒控修改库之后,配上最新的算法库就正常了,联系CMO取库,发现一套代码编出了两个版本,一个放在8056目录,一个放在了660目录。2431是8056的老设备,用8056目录下的库即可

  13. 2241更新代码后,换上最新的算法库,发现一切正常。说明还是算法库用的是老的,但是CMO放的路径确实没有问题。查看业务的编译脚本,发现它把两个版本的算法库都拷贝了进来,但是用老的算法库覆盖了新库,导致最后用的还是老库

小结

  1. CMO分两种,第一种是专门编译代码的,第二种是专门把编译出的代码放在一个地方让业务去取的。然后业务写编译脚本,把库包含进来。

  2. 媒控有两个版本,老设备用的是alpha,新设备和双摄用的是beta版,需要关注他们的版本。

  3. 版本信息的打印很重要,只不过这个是很久不维护的,如何添加版本信息,可以参考我之前的文章。