新网站百度搜不到,我想开网店需要怎么做,深圳中装建设,洛阳有做网站开发的吗在发布SDK内测的时候#xff0c;我们发现在切换视频分辨率的时候有低概率出现VPSS模块跑飞的情况#xff0c;概率低于1%#xff0c;试个两三百次#xff0c;能出1~2次。切换视频分辨率这个功能在安防产品上也确实存在需求#xff0c;网络带宽不大好的地方分辨率可以适当下… 在发布SDK内测的时候我们发现在切换视频分辨率的时候有低概率出现VPSS模块跑飞的情况概率低于1%试个两三百次能出1~2次。切换视频分辨率这个功能在安防产品上也确实存在需求网络带宽不大好的地方分辨率可以适当下调一点降低负载真正在产品端切换视频分辨率这个功能也不会切换那么频繁但是从技术上有这个1%的风险从长远考虑还是得花力气来解决一下。 VPSS模块的概念来源于海思平台后面大家都这样学习实际上就是一个视频中间处理的一个模块比如分辨率的动态调整、多通道输出比如一个sensor输出多个分辨率的视频有点像是分频器一样、还有一些图像格式转换比如输出yuv还是rgb都可以设置、叠加OSD显示时间、品牌logo等。 产品背景是采用自研的安防类的芯片采用linux操作系统框架上采用自研的多媒体框架概念学习海思平台大致也就是那么就给打快VI, VPSS, VENC, NPU,VDEC,AENC,ADEC等等。这种安防的产品是无屏幕的通过网络连到服务器在手机上开发了一个APP来实现互联互通。
/*****************************************************************************************************/ 声明本博内容均由http://blog.csdn.net/edsam49原创转载请注明出处谢谢 /*****************************************************************************************************/ 切换视频分辨率的时候叠加在视频上的OSD也会做相应调整比如300w的视频用个的LOGO图片跟720P视频用的图片大小肯定是不一样的显示的时间戳这些字号的大小要跟视频成一定比例不然看起来就不协调了因此就会有osd删除和再叠加的过程。先看看出问题的打印 出现这种 fifo overflow 就没法恢复串口也没法输入了只能重新上电。没有图像帧数据往后传递编码也不会有数据这种情况跟死机一样后果很严重。从品质控制的来说虽然你的概率很低但是你的后果已经是顶级的严重两者关系相乘得出的品质控制参数RPN值也还是不容忽视的那就彻查吧。 从出现的概率很低复现一次不容易因此得做足调试的功课把能想到的可疑点都加上一些关键打印不然也只是复现问题对真正解决问题推动不大。从前面跑飞的前后打印来看我们分析应该是出在osd部分。先从驱动入手分析VPSS什么情况下可能会overflow跟ic设计的人沟通前面osd位置、大小超过图像的范围会导致overflow。但是从流程上我们切换之前已经把osd都拿下了为啥还会有呢我们再在VPSS的中间hal层增加和删除osd的必经之路上加满打印同时对增加和删除不成功的时候增加了重试机制多试几次。有了这些信息后我们就继续跑呗。这种要操作手机APP很多次的会累死个人重复、枯燥真是苦了测试的兄弟。为了减少这种疲劳在应用上我开发了不通过手机APP也能在本地实现重复反复设置的切换视频分辨率的功能循环执行高频高压执行。方法如下通过后门来控制 通过反复调试测试抓到一次很有意义的突破口 发现正常的时候删除OSD都是清一色的del信息出问题前有遇到一次osd_update跟SDK hal层同事分析osd_update就是直接增加了一个osd进去。为啥在退出的时候还会有增加一个osd进来呢 有了重要线索就继续查吧 往最上面就是应用的处理.先看应用的处理,我们时间刷新有一个线程定时刷.看代码流程上,有先停刷新操作,再删除osd. 从理论上看也是没问题的. 那就再看看SDK接口的实现吧! 果然找到了一点信息. 就是说删除OSD和update canvas的接口是共用的一把锁。出问题的时候大致是这种情况先执行到了删除就拿到这把锁了还没删除完之前update canvas就调用了这时候handle这些是有效的就跑到了等锁这里等删除完成归还锁了后update就呼噜呼噜的跑下去了。这是明显有漏洞的调过了handle的有效性检查。如果把这把锁位置提前就完全可以避免出问题。 同时HAL层处理也是有问题的在刚执行完删除后没有做状态标记又能update执行下去而且是跟掉叠加osd的接口是一样的这也是不合理的。你相当于有两条路走到驱动上去没有管控状态上面失控的时候你没有防范啊。 所以说从根本原因上分析接口层和HAL层都有问题。为了快速解决问题我们就把接口层的锁的位置提前一点HAL层的问题等HAL层的同事后面来补强吧至少现在跑起来是没有问题了的。 修改完后跑了差不多跑了切换视频分辨率接近4800次没有复现问题。再提交到测试同步手动操作APP又测试了上千次没有再复现问题算解决了吧后面再遇到再分析。 总结起来解决这种疑难杂症需要耐心需要多方位考虑把不大可能发生的地方也当成可能发生的地方不放过死角问题最终解决之前都有嫌疑丰富一下调试手段提高解决问题的效率。