新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 通过开源API进行DSP视频处理

通过开源API进行DSP视频处理

作者:时间:2011-09-20来源:网络收藏
缓冲器创建

本文引用地址:http://www.eepw.com.cn/article/150196.htm

  基于DaVinci技术的DM644x器件上ARM926的MMU(存储器管理单元)具有虚拟/物理寻址能力。然而,C64x+内核只能够物理地址。因此,用于的输入和输出缓冲器必须驻存在物理上连续的存储器中。

  虚拟到物理地址的转换由编解码引擎复用(指针指向)某些由驱动器分配的缓冲器,可获得物理上连续的存储器,这里使用了Linux中的一些技术,比如dma_alloc_coherent(),来在内核空间中分配这类存储器。由TI开发的库/内核模块CMEM,允许从用户空间应用来分配物理上连续的存储器。

  例如,我们利用前面提到的CMEM驱动器来分配物理上连续的“输出”缓冲器。编解码引擎对帧解码,并把解码后的帧放在输出缓冲器中。

  接下来,指向输出缓冲器的指针被传递给fbvideosink( GstBuffer)。这个videosink必须把解码后的数据memcpy(复制)到帧缓存中,然后才能显示。由于memcpy操作是一种成本很高的GPP使用,这种方法使得ARM 和DDR接口的负载很重,因而增加了功耗,且效率极低。

  这种技术对非常小的缓冲器是可行的,但在开发人员使用D1(和更高)大小的缓冲器时,将开始降低系统性能。一种更有效的方案是复用已经驱动器分配了的物理连续缓冲器,并在编解码器引擎和videosink插件之间把指向这些缓冲器的指针来回传递。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭