在dm8168中我的osd叠加出来,如果画面静止 的话显示效果是正常的,但是如果画面变化比较剧烈,显示不正常,osd叠加的内容会出现飘得现象,画面剩余部分会有比较严重的马赛克现象,如图1。我把osd叠加去掉,dsp什么都不做然后晃动画面发现显示不会出现马赛克。这是不是说明是SWOSD_blendWindow函数造成的?
然后我再画面上画两根线,晃动画面,发现也有很严重的飘得现象。。这是怎么回事
?
brad white:
这个好像是只要做了和像素点的坐标相关的操作都会出现“飘”的现象。
Chris Meng:
回复 brad white:
Brad,
请问你系统(DDR)的负荷是否比较重?如果是,可能是DDR带宽不够导致的问题。请参考下面论坛讨论里面的文档,调整各个访问DDR的master的优先级。
https://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/p/475154/1708797
brad white:
回复 Chris Meng:
这个应该不是啊!为了测试 我只画了很短的两根线都会这样,处理的数据很少,每帧处理时间不到1ms,这是不是说明不是ddr3造成的
Chris Meng:
回复 brad white:
Brad,
不单单是SWOSD处理的复杂度,是你系统访问DDR的loading。
简单来说,如果你不编码,只是本地显示,是否会有同样的问题?
brad white:
回复 Chris Meng:
dsp不处理或者在dsp里面处理的时候如果不访问ddr3的时候 没有出现这个问题
brad white:
回复 Chris Meng:
有编码解码 只要dsp不对像素点进行操作就不会有马赛克。但是编码解码也去读ddr3了,是不是说明是dsp读ddr3的问题?
brad white:
回复 brad white:
还有就是 我再dsp里面做memcpy,把图像拷贝一下,不做其他操作,输出没有马赛克,这应该可以说明和访问ddr3 没有关系吧?
Chris Meng:
回复 brad white:
Brad,
请问我下面的理解是否正确?
使用DSP处理SWOSD+显示,编码,会出现该问题
如果上述理解正确,请问如果DSP处理SWOSD+显示,不编码,是否会出现该问题?
brad white:
回复 Chris Meng:
是的 使用DSP处理SWOSD+显示,编码,会马赛克。我们这个是没有本地显示的,,都是编码后通过网络发送出去显示的,所以测不了不编码的效果。
我测试过两种情况:
1 在alg_priv.c中定义一个数组,每一帧都memcpy到这个数组中,DSP不做其他任何处理,每一帧处理时间12-13ms,显示没有马赛克
2 在alg_priv.c中定义一个数组(大小为每帧图像大小的1/4),memset为0,然后memcpy给每一帧,dsp不做其他任何处理,每帧处理时间2-3ms,显示有马赛克
这说明读ddr3没问题,写ddr3会有问题。这也和前面我说明的情况一样 。可能是什么原因造成写ddr3会这样?
Chris Meng:
回复 brad white:
brad white使用DSP处理SWOSD+显示,编码,会马赛克。我们这个是没有本地显示的,,都是编码后通过网络发送出去显示的,所以测不了不编码的效果。
能否保持几帧编码前的数据,但是不编码?
下面链接里面的方法,你可以尝试一下,看是否有改善?
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/p/93914/242271.aspx#242271