主题 : 【成功】tiny210在Linux下的MFC库移植及硬编码测试源码 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 87533
精华: 1
发帖: 41
金钱: 255 两
威望: 51 点
贡献值: 1 点
综合积分: 102 分
注册时间: 2013-02-19
最后登录: 2017-09-13
楼主  发表于: 2013-04-09 08:53

 【成功】tiny210在Linux下的MFC库移植及硬编码测试源码

上周惊奇的发现Tiny210没有在Linux下的MFC库。折腾了好几天,终于把Android下的MFC库移植过来了。
Linux下已经有MFC的驱动了,设备名是/dev/s3c-mfc,可以ls -l /dev/s3c-mfc验证一下
所以移植的基本步骤就很简单了,把Android4源码中 device/friendly-arm/mini210/sec_mm/sec_omx/sec_codecs/video/mfc_c110 整个目录拷贝到linux下。
编码的话只用到3个文件 mfc_interface.h, SsbSipMfcApi.h 和 SsbSipMfcEncAPI.c,解码再多一个SsbSipMfcDecAPI.c
然后SsbSipMfcEncAPI.c中需要把对 utils/Log.h 相关调用(LOGE,LOGV,LOGI等)改掉,因为linux没有这个库。LOGE改成fprintf(stderr,...)就行,LOGV,LOGI可以直接注释掉。或者自己用fprintf定义宏LOGE。
然后就可以调用SsbSipMfc的API了。
注意几点:
1)输入yuv格式必须是nv12,这个和6410是不同的。
2)参数里面FrameRate应该是实际fps的1000倍。比如30fps就应该设FrameRate=30000,这个在s5pv210的datasheet里面有说明。
3)bootloader必须用superboot。我之前为了开发方便一直用u-boot+tftp+nfs,结果总是出错,换成superboot,就没问题了。不知道superboot对mfc做了什么初始化之类的

测试程序和修改的API源码附上供大家参考。
附件: mfc4linux.zip (20 K) 下载次数:898
级别: 新手上路
UID: 82590
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2012-11-24
最后登录: 2014-05-23
1楼  发表于: 2013-05-13 14:53
MfcEncOpen succeeded
SsbSipMfcEncInit: Encode Init start
SsbSipMfcEncInit: H264 Encode
SsbSipMfcEncInit succeeded
SsbSipMfcEncGetOutBuf suceeded
SsbSipMfcEncGetInBuf succeeded
[ 6858.078267] mfc_wait_for_done: Interrupt Time Out(Cmd: 5)    (Ver: 0x00110126) (0x64: 0x0000000a) (0xF4: 0x00050e14) (0x80: 0x00000001)
[ 6858.078378] mfc_encode_one_frame: MFCINST_ERR_ENC_EXE_TIME_OUT
SsbSipMfcDecExe: IOCTL_MFC_ENC_EXE failed(ret : -1007)
Error: SsbSipMfcEncExe. Code -3002

楼主请问一下这个什么错误,怎么查这些错误?