|
前两天看见论坛上有一个老帖子讲6410用VGA输出屏幕会抖动的。正好前些日子我正试摄像头采集然后给硬件编解码器编码,也遇到了这个问题,不过已经稀里糊涂的解决了,希望大家针对如下问题来讨论。
看那个帖子上说,这是“ram总线竞争”导致。那么大家来看看我如下的做法和现象:
做法1:摄像头接口有两个通路,一个预览,一个编码,我关闭编码的通路,只采预览的图像进行硬件编解码,简单说结构是:
主线程: 创建采集编码线程。并响应刷新来画图显示。
采集和编码线程: 如此循环工作(从预览缓存取一帧图像->刷新显示->送硬件编解码器编码)。
现象1:这样的结果是抖动。
理解1:如果按照“ram总线竞争”的说法,我理解就是摄像头接口,硬件编解码器都在占用ram,导致VGA该刷新时无法得到ram总线。使屏幕发抖。
-----------------发抖的分割线~ 切利哦~!--------------------------------------------------------
做法2:接下来,我把摄像头接口的两个通路都打开,预览的只用来显示,然后从编码那个通道获得数据并送硬件编解码器,结构是:
主线程: 创建预览线程,编码线程,并响应刷新来画图显示。
预览线程: 如此循环工作(从预览缓存取一帧图像->刷新显示)。
编码线程: 如此循环工作(从编码缓存取一帧图像->送硬件编解码器编码)。
现象2:不抖了,显示很正常。
理解2:理解不能……如果说抖动是因为ram总线竞争,那么按照我这个做法,VGA以外占用ram总线的东西比做法1还多呢,摄像头接口的预览通道要往ram上存图像,编码通道也要存,硬件编解码器也工作,怎么反而不抖了呢?
大家各抒己见~!
|
|