主题 : 【成功】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: 28798
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2010-09-17
最后登录: 2015-03-03
1楼  发表于: 2013-04-09 09:24
正准备搞这个,非常有用。谢谢!
级别: 新手上路
UID: 28798
精华: 0
发帖: 11
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 22 分
注册时间: 2010-09-17
最后登录: 2015-03-03
2楼  发表于: 2013-04-09 09:42
楼主,麻烦把视频测试文件一并传上来啊,非常感谢!
级别: 新手上路
UID: 75685
精华: 0
发帖: 14
金钱: 75 两
威望: 15 点
贡献值: 0 点
综合积分: 28 分
注册时间: 2012-08-11
最后登录: 2013-05-08
3楼  发表于: 2013-04-09 14:21
感谢楼主的无私分享
级别: 总版主
UID: 45585
精华: 3
发帖: 628
金钱: 3375 两
威望: 675 点
贡献值: 3 点
综合积分: 1316 分
注册时间: 2011-05-06
最后登录: 2018-10-18
4楼  发表于: 2013-04-10 17:16
在这个基础上能搞定 mplayer 硬解就爽了
级别: 侠客
UID: 87533
精华: 1
发帖: 41
金钱: 255 两
威望: 51 点
贡献值: 1 点
综合积分: 102 分
注册时间: 2013-02-19
最后登录: 2017-09-13
5楼  发表于: 2013-04-10 21:49

 回 2楼(黄瓜帅) 的帖子

视频是我用webcam抓的yuyv然后转成nv12,都很简单的。nv12太大了,传不了。这里有sample可以下,应该都要转换成nv12. yuyv到nv12的转换程序我也附上,供你参考。
http://www.sunrayimage.com/examples.html
[ 此帖被kylezhou在2013-04-11 11:46重新编辑 ]
附件: yuyv2nv12.c.txt (1 K) 下载次数:230
级别: 侠客
UID: 87533
精华: 1
发帖: 41
金钱: 255 两
威望: 51 点
贡献值: 1 点
综合积分: 102 分
注册时间: 2013-02-19
最后登录: 2017-09-13
6楼  发表于: 2013-04-10 21:52

 回 4楼(xoom) 的帖子

对mplayer没有研究,这个要等待高人了
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
7楼  发表于: 2013-04-11 12:41
支持
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 80423
精华: 0
发帖: 25
金钱: 125 两
威望: 25 点
贡献值: 0 点
综合积分: 50 分
注册时间: 2012-10-24
最后登录: 2024-01-20
8楼  发表于: 2013-04-12 14:45
试了一下,把一段nv12的视频编码成264只有几K,也没办法在vlc上播放
这段视频用x264工具编码出来是554K,可以用vlc播放的
是不是我哪里操作不对啊?
级别: 新手上路
UID: 80423
精华: 0
发帖: 25
金钱: 125 两
威望: 25 点
贡献值: 0 点
综合积分: 50 分
注册时间: 2012-10-24
最后登录: 2024-01-20
9楼  发表于: 2013-04-12 16:00
找到问题了,和楼主说的一样,确实必须用superboot
不知道是因为superboot做了什么特殊设置,还是我用的u-boot有什么bug