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

 【这次是解码】tiny210在Linux下的MFC库移植及硬解码测试源码

管理提醒: 本帖被 xoom 执行加亮操作(2013-04-22)
上次搞定了编码 http://www.arm9home.net/read.php?tid-28647-fpage-2.html
周末无事,又研究了一下解码,看似不难,但为了一个tiled nv12的问题浪费了大量光阴。
注意几点
1)还是和编码一样superboot,必不可少,u-boot不行
2)调用SsbSipMfcDecInit()之前一定要先调用SsbSipMfcDecGetInBuf()然后填入header(SPS/PPS/SEI)信息。
3)SsbSipMfcDecGetOutBuf()返回的status只有是MFC_GETOUTBUF_DISPLAY_DECODING或者MFC_GETOUTBUF_DISPLAY_ONLY时YVirAddr和CVirAddr才有效,如果返回MFC_GETOUTBUF_DECODING_ONLY则需要再次调用SsbSipMfcDecExe()和SsbSipMfcDecGetOutBuf()
4)YVirAddr和CVirAddr指向的数据是tiled nv12的格式(64x32 tiled),需要转化成现行格式才能正常现实。这个mfc api已经提供了csc_tiled_to_linear(),头文件color_space_convertor.h
5)测试程序有几个问题:不支持multi-slice的帧;最后buffer里的几帧偷懒没有处理直接丢掉了;如果第一个header后的数据帧不是IDR的话,会出warning,直到第一个IDR帧为止,之前的non-IDR帧可能译码不正确或者丢帧。
测试代码和mfc api包附上供参考。
觉得有用的tx请回个帖留个浮云。我很讨厌强制回复才能下载,没意思。
Makefile就不写了,简单的就 arm-none-linux-gnueabi-gcc testMfcDec.c color_space_convertor.c SsbSipMfcDecAPI.c -o testMfcDec
[ 此帖被kylezhou在2013-04-21 22:01重新编辑 ]
附件: s5pv210_mfc_dec_test.tgz (20 K) 下载次数:598
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5407
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11054 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2013-04-22 06:54
谢谢分享
"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."
刚刚接触210啊!!
级别: 新手上路
UID: 86143
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
贡献值: 0 点
综合积分: 28 分
注册时间: 2013-01-14
最后登录: 2013-05-21
2楼  发表于: 2013-04-22 09:04
支持分享!!!!        ,楼主,别偷懒,上MAKEFILE     
刚刚接触210啊!!
级别: 新手上路
UID: 86143
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
贡献值: 0 点
综合积分: 28 分
注册时间: 2013-01-14
最后登录: 2013-05-21
3楼  发表于: 2013-04-22 11:05
楼主,如何解决帧率问题???
级别: 侠客
UID: 87533
精华: 1
发帖: 41
金钱: 255 两
威望: 51 点
贡献值: 1 点
综合积分: 102 分
注册时间: 2013-02-19
最后登录: 2017-09-13
4楼  发表于: 2013-04-22 11:30

 回 3楼(jims_zhang) 的帖子

帧率有什么问题?跟解码有什么关系?
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8881
金钱: 46490 两
威望: 9298 点
贡献值: 27 点
综合积分: 18302 分
注册时间: 2010-01-09
最后登录: 2016-03-18
5楼  发表于: 2013-04-22 11:37
厉害,多谢分享
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 83647
精华: 0
发帖: 20
金钱: 105 两
威望: 21 点
贡献值: 0 点
综合积分: 40 分
注册时间: 2012-12-10
最后登录: 2014-04-21
6楼  发表于: 2013-04-22 17:34
支持牛人继续牛
级别: 新手上路
UID: 70195
精华: 0
发帖: 24
金钱: 120 两
威望: 24 点
贡献值: 0 点
综合积分: 48 分
注册时间: 2012-05-16
最后登录: 2017-09-13
7楼  发表于: 2013-04-25 10:14
顶起,真是碉堡了
级别: 新手上路
UID: 70195
精华: 0
发帖: 24
金钱: 120 两
威望: 24 点
贡献值: 0 点
综合积分: 48 分
注册时间: 2012-05-16
最后登录: 2017-09-13
8楼  发表于: 2013-04-25 16:09

 回 楼主(kylezhou) 的帖子

楼主,你好,我用你的代码测试结果出现了这样的问题。。看了好久都没明白,我用的内核是linux3.0.8 ,logo如下:
Input file: test1.mp4. Output file: test-mfc-dec.nv12.
Header: cstart=63827, cend=7eebe, length=112279
SsbSipMfcDecOpen succeeded.
SsbSipMfcDecGetInBuf succeeded.
[ 4361.018554] mfc_wait_for_done: Decode Error Returned Disp Error Status(0), Dec Error Status(52)
[ 4361.018642] mfc_init_decode: MFCINST_ERR_DEC_SEQ_HEADER_FAIL ....Intr Code (32)
[ 4361.025618] mfc_wait_for_done: Decode Error Returned Disp Error Status(0), Dec Error Status(4)
[ 4361.025695] mfc_return_inst_no: R2H_CMD_CLOSE_INSTANCE_RET FAIL
SsbSipMfcDecInit: IOCTL_MFC_DEC_INIT (-2008) failed
Error: SsbSipMfcDecInit. Code -2000
级别: 风云使者
UID: 36096
精华: 3
发帖: 2536
金钱: 14075 两
威望: 2815 点
贡献值: 3 点
综合积分: 5132 分
注册时间: 2011-01-11
最后登录: 2015-11-15
9楼  发表于: 2013-04-25 21:10
支持 看下
极度缺钱,求捐赠……支付宝兼邮箱:huming2207@qq.com