【FAQ】全志D1芯片 mp4(Xvid)视频文件播放花屏问题
-
1、问题背景
客户使用F133进行一体广告机项目开发过程中,测试到附件中的片源《少女时代OhMVFullHD1080(播放花屏).mp4》播放时会出现花屏现象。但在之前的C800相同项目中该片源测试正常。2、问题描述
出错第一帧标号为17(标号从0开始),如下图所示:抓取该帧花屏图像,现象如下:
花掉的图像帧数据如下:
3、问题分析
(1)关掉cache,花屏现象仍旧,排除漏刷cache影响;
(2)64位系统(tina/melis)播放均花屏,32位系统正常;
(3)寄存器对比,未发现异常;
(4)在FbmRequestBuffer中将请求到的buffer清零,图像仍会花掉,但是花屏现象如下:
推测在视频播放的过程中,该部分未有数据写出,仍然保留该buffer中上一帧的数据。(未修改代码前出错第一帧下半部分之所以是黑色的,是因为该视频前面的12帧均为黑色图像帧,所以该buffer中残留有上一帧的数据)
最后,通过添加打印发现,正常情况(R528平台),在未解码完一帧时,会通过检查同步标记函数而进入下一个packet的解码 ,但是现在异常(F133/D1)情况下跑到了else里面,导致一帧图像没有解码完,就解下一帧了。 正好前面抓图的现象也是第一帧出错的图像,下半部分是前面图像的数据残余。
经分析,该问题的根本原因是在64位编译器中,i>>32 都等于i;而在32位编译器中,i>>32 都等于0。所以此发现也正好解释了之前的测试结果 “64位系统(tina/melis)播放均花屏,32位系统正常”。
4、解决办法
对出现右移32位的情况做判断,即return (rbit-n)<0?0:((rbit-n)>=32?0:(ld->bit_a & (0xFFFFFFFF >> (ld->bitcnt))) >> (rbit-n));对应的库文件见附件。
library.7z -
这个问题都能跟踪到,牛叉!
-
-
-
-
-
@q1215200171 在 【FAQ】全志D1芯片 mp4(Xvid)视频文件播放花屏问题 中说:
4、解决办法
对出现右移32位的情况做判断,即return (rbit-n)<0?0:((rbit-n)>=32?0:(ld->bit_a & (0xFFFFFFFF >> (ld->bitcnt))) >> (rbit-n));这个问题换库文件就行了吗?
-
-
-
-
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号