TI中文支持网
TI专业的中文技术问题搜集分享网站

omap3530上H.264编码时CMEM出错

你好,我现在在omap3530上做一个视频采集+H.264编码的应用程序。下面我说下我的开发环境吧,Linux内核版本是2.6.28,TI提供的DVSDK_3_00_02_44,开发板是天漠公司的DevKit8000。前面的视频采集部分是已经确定可以使用的,在编码部分遇到了个问题,在分配了一个连续的缓存后,就是Memory_contigAlloc()后,执行VIDENC1_process()时,会报错,具体错误信息如下:

CMEMK Error: get_phys: Unable to find phys addr for 0x423d4000
CMEMK Error: get_phys: get_user_pages() failed: -14
CMEMK Error: GETPHYS: Failed to convert virtual 0x423d4000 to physical.
CMEM Error: getPhys: Failed to get physical address of 0x423d4000
Encode Error:VIDENC1_process() failed,status=-1
Encode Error:Encode Error
Encode Error:VIDENC1_process() failed,status=-1
Encode Error:Encode Error

找了下google和百度,没有一个具体的能说明原因及解决办法的。就去看了下DVSDK的CMEM源码,里面对这块的定义是ARM端调用DSP,有一个虚拟地址转实际物理地址的过程。
在这基础上我用详细信息打印出来:
# export CE_DEBUG=2
# ./encode -qws >log 2>&1

log文件见附录,在最后打印的错误信息是Memory_getBufferPhysicalAddress> ERROR: user buffer at addr=0x42478000, size=304128 is NOT contiguous。但是我已经用Memory_contigAlloc去分配了一个连续的缓存。没有找到解决办法。

请问这是在哪出错了呢?谢谢!

Meng Feng:

您好,我也在OMAP3530上做H.264视频压缩编码,能问你几个问题吗?谢谢哈,看到的话麻烦回复下,谢谢哈

Yaoming Qin:

你看看你的kernel boot args, 看看memory的配置。

赞(0)
未经允许不得转载:TI中文支持网 » omap3530上H.264编码时CMEM出错
分享到: 更多 (0)