Firefly开源社区

标题: 3288对得起解码小霸王的称号吗?咱们来测试测试 [打印本页]

作者: jingjin221    时间: 2016-1-26 09:32
标题: 3288对得起解码小霸王的称号吗?咱们来测试测试
本帖最后由 jingjin221 于 2016-1-27 10:16 编辑

很抱歉,如果你贸然进入,可能已经陷入我等标题党的圈套!:D:D:D
但是既然进来了,必不会让你白来一趟滴!:):):)
对于RK3288的解码能力确实是不容置疑的,但是小弟今天为何做此言论,必有一番理由和疑问需要大家来探讨探讨!
小弟这里有一份录下来的TS码流,AVC编码,1080@60i的分辨率,这对3288来说原本简直就是小菜一碟的事儿,但事实并非如此!
我的这份码流和普通的264编码的码流有区别,普通的通常是I,P,B帧构成,这个码流里面只有P帧(下面都简称低延时),且是隔行编码的!
经过我的测试,结果如下:

0、标准,逐行编码自然可以!
1、低延时,逐行编码的码流是可以正常硬解!
2、标准,隔行编码的码流也是可以正常硬解!(BOX和PAD版本有区别)
3、低延时,隔行编码的码流不能硬解!
那么问题来了?究竟是什么原因导致的呢?是解复用送帧的时候没有送对?

下面是小弟送给解码器的帧的实例!
码流源文件(http://pan.baidu.com/s/1bbQTmI),low_i.ts为低延时隔行ts流,low_i.264为解复用后的裸流!码流分工具析用的是Elecard StreamAnalyzer

标准模式:              
1、逐行
自然是I,P,B帧,依次送入,这个没有问题!
2、隔行(std_i.264)
一帧分为2场(同一Frame Number,SEI信息区分顶场还是底场,AUD单元分割),需要把一帧分为两场,依次送入,这个也没有问题!
低延时:
1、逐行(low_p.264)

同一Frame Number下有5个SLICE帧,需要一起送入,这个没有问题!
2、隔行(low_i.264)
一帧分两场,每一场有5个SLICE(同一Frame Number)帧构成,于是我采用,分两次送,先送5个SLICE的顶场,再送5个SLICE的底场。结果送到解码器,无反应!!!求解!










作者: jingjin221    时间: 2016-1-26 09:49
没人看吗?自己顶一个!解复用器是我移植的LIBDVBPSI库,具体帧的管理是我自己写的!
如果是解复用器出现了问题,但是我用VLC FOR ANDROID来解码,还是不行,证明不是解复用出问题咯!
只有两种可能,第一:帧送的不正确(指帧切割,解码器有特殊要求),第二:解码器不支持这种编码模式!
作者: jingjin221    时间: 2016-1-27 15:58
再顶!!!
作者: 暴走的阿Sai    时间: 2016-1-27 16:10
支持原创,赞一个!
评测比较专业,期待楼主的更多好帖子

作者: Mimosa    时间: 2016-1-27 22:32
我以前一般怎么解决这种问题呢:拖到对应芯片原生的Android播放器播放(因为厂商对Android的播放器还是做得比较齐全的),然后看能不能播放,能播放的话,就去找解码接口,在接口前面dump未解码数据(最好文件比较小),dump几帧就差不多,然后找到规律,模仿一下就可以了。
如果Android原生的那个播放器不能工作,一般需要邮件Rockchip需要技术支持了。

作者: jingjin221    时间: 2016-1-28 09:24
Mimosa 发表于 2016-1-27 22:32
我以前一般怎么解决这种问题呢:拖到对应芯片原生的Android播放器播放(因为厂商对Android的播放器还是做得 ...

原生播放器坑的很,,根本解不了!
我都是自己写的解复用器送入解码器的!
ROCKCHIP的技术支持都说只服务合作商!!!
作者: Mimosa    时间: 2016-1-28 10:10
@jingjin221 没关系,你可以用ffmpeg转一个格式,但是音视频内容不变,换成一种原生播放器播放的格式。最后能播放了,什么都好处理。
作者: jingjin221    时间: 2016-1-28 11:52
Mimosa 发表于 2016-1-28 10:10
@jingjin221 没关系,你可以用ffmpeg转一个格式,但是音视频内容不变,换成一种原生播放器播放的格式。最 ...

并不是封装格式影响了解码,不管是什么播放器,最后都是调用OMX来硬解,我现在直接调用的OMX IL层,就是吧一帧或一场数据送进解码器,解码器无处理成功返回给我!
作者: isle    时间: 2016-1-28 16:13
你确定全p帧 逐行可以解么?解码器要找到I帧才开始解码的。
作者: jingjin221    时间: 2016-1-28 18:06
isle 发表于 2016-1-28 16:13
你确定全p帧 逐行可以解么?解码器要找到I帧才开始解码的。

全P帧逐行,可以解码的!正常情况下一般解码器是要找到I帧,3288挺强的
作者: jingjin221    时间: 2016-1-28 18:08
isle 发表于 2016-1-28 16:13
你确定全p帧 逐行可以解么?解码器要找到I帧才开始解码的。

你可以下载我的码流测试一下即可,默认的系统播放器都是可以播的
作者: jingjin221    时间: 2016-1-28 18:12
3288 videocodec 的PDF里面说了,解码AVC格式有3中模式
frame by frame, field by filed, slice by slice
在低延时模式下我直接使用slice by slice是不能正常解码的,这是何解?

作者: jingjin221    时间: 2016-1-28 18:15
isle 发表于 2016-1-28 16:13
你确定全p帧 逐行可以解么?解码器要找到I帧才开始解码的。

版主,为什么我逐行的全P帧都可以解码,隔行的却不行呢?您分析一下呢?
作者: isle    时间: 2016-1-29 16:24
jingjin221 发表于 2016-1-28 18:08
你可以下载我的码流测试一下即可,默认的系统播放器都是可以播的

你那个low_p.264?用系统默认播放器不能播放啊!
作者: jingjin221    时间: 2016-1-29 17:00
本帖最后由 jingjin221 于 2016-1-29 17:12 编辑
isle 发表于 2016-1-29 16:24
你那个low_p.264?用系统默认播放器不能播放啊!

不好意思,那是裸流,默认播放器是播放不起的,我给你发个TS流http://pan.baidu.com/s/1bx7bqA
PAD版本可以播,BOX版本不行
作者: jingjin221    时间: 2016-2-16 16:09
没有兄弟顶我一下吗?FIREFLY的工程师能给一个合适的建议吗?
作者: isle    时间: 2016-4-1 09:43
你这种格式目前不支持。
作者: wuqingwei    时间: 2016-5-12 09:52
谢谢分享,
作者: 金子逸    时间: 2016-10-10 21:38
谢谢分享
作者: ChineseBoy    时间: 2016-10-11 11:35
我正郁闷这个问题中,硬解码这块真的是坑,有时候几天会挂,有时候10几天挂20几天挂,请问有好点的解决方案么
作者: jingjin221    时间: 2016-10-14 20:00
ChineseBoy 发表于 2016-10-11 11:35
我正郁闷这个问题中,硬解码这块真的是坑,有时候几天会挂,有时候10几天挂20几天挂,请问有好点的解决方案 ...

我现在基本不会出什么问题,我测试过连续解码3天没有出现任何问题!当然,这是在码流质量良好的情况下!
作者: jingjin221    时间: 2016-10-14 20:01
ChineseBoy 发表于 2016-10-11 11:35
我正郁闷这个问题中,硬解码这块真的是坑,有时候几天会挂,有时候10几天挂20几天挂,请问有好点的解决方案 ...

我现在基本OK!  连续解码3天,没有问题!在信号质量良好的情况下!




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1