您的位置:首页 > 其它

S3C6410处理器硬解视频文件评测(附测试版解码程序下载)

2013-08-26 16:29 453 查看
http://blog.chinaunix.net/uid-20702674-id-1754559.html

继s3c2440之后三星又推出了s3c6410处理器,据手头上的资料显示,该处理器非常适合做多媒体及移动设备等产品,它继前一代产品的基础上又整合了3D/2D加速器,媒体视频编解码器并带有TV信号输出功能。性能较之上一代产品已是跨越似的提升,它的应用范围几乎囊括了业界的各个领域。总之,该处理器将成为当下的主流产品。
       由于手头上有个媒体显示器的项目需要用到视频解码器,而项目成本和产品性能上又得严格控制在最佳状态,显然这非常适合用三星的S3C6410处理器来设计,那样成本和性能将不言而喻了。于是就从淘宝上购置了一块6410的开发板,至此拉开了项目的设计序幕。
       板子一拿到手我便忙着开始翻阅相关资料手册,并狂搜百度谷歌,忙活了一个星期下来,我的结果终于问世了。其一,开发板附带的
光盘上并没有关于视频解码的详细资料。其二,百度谷歌上关于硬件解码的资料也几乎为零。至此我才明白,S3C6410处理器的性能再好功能再强目前的发展还只是初期阶段,加之转战S3C6410处理器的程序开发者并不是很多或者才刚入门不久,总之,它还是一片荒芜之地,就等着像你我这样的人来开垦。在接下来几天里又我又想尽各种办法和途径查找相关资料仍旧是一无所获,看来要完成本项目只剩下一条出路了,那就是硬碰硬,否则是死路一条,很惨的!
       本次设计主体为视频解码器软件部份,通俗点讲就是一个电影播放器的程序,因为项目要求是播放视频广告文件。思路挺简单的,可是做起来却麻烦得要死。考虑过采用著名的开源播放器Mplayer,可它不支持硬解视频文件,我测试过用Mplayer播放器在S3C6410上软解MPEG4视频文件,在低码率低分辨率的情况下勉强可以播放,但是有个非常严重的问题,那就是音视频不同步,所以该设想只能拉倒了。当然,据说有个牛人用Mplayer加入了S3C6410的硬解程序能用,然而我在百度谷歌上翻来覆去却没见影子,结果又拉倒了。后来几天的摸索中,发现mini6410官方网站上的开发板有支持硬件解码的播放器,于是赶紧购置一块,等板子到手后研究了半天就判了死刑,因为他的硬解播放器好象是基于SM player改的,而且是带QT图形层显示的,不适合套到本次项目中,结果还是拉倒。 折腾了这么多天,眼下我是真的不能再迷信了,要潜心设计出自己的硬解播放器才是正道。可是要在S3C6410上写一个播放器并非易事,它所涉及的知识面非常广,首先得弄明白S3C6410解码器的工作方式,然后是音视频的编解码方式和原理,再然后是音视频的同步原理。当然,这仅仅是三大要点,其中涉及的细枝末叶和BUG会在你写程序期间不断的搔扰你,打击你,每每想到此我都心有余悸,好在最终还是挺了过来,圆满完成任务。
       讲了这么多还是言归正传吧,介绍一下我设计的程序。程序是用纯C语编写,代码量并不大,非常精简,编译后大小为200K左右,支持音视频格式为MPEG4,H264,MP3,支持视频定位和简单播放器的基本功能,分辨率大小从220x172到720x480 30帧以上,码率最高3000以上,大了不保证稳定,当然,以上参数只是理论值,呆会有实测值供大家参考。该程序是一个播放器核心,
原本是专为项目设计的,后来考虑到兼容性又做了诸多改进,以至于它可以运行在S3C6410芯片的所有板子上。设计的时候我还保留了所有接口,为得就是等以后我有时间了就给它加上一个图形化界面层,那可真就是一款播放器软件了。哈哈! 
       下面两张图是测试用的设备。
斯道的开发板和15.4寸的VGA显示屏                                                    
 





测试平台:
CPU  S3C6410
DDR  128M
NAND 256M
VGA  15.4
内核 2.26.28
 
       为了简化测试流程,我已经把视频文件分别转换成MPEG4和H264格式,区分出不同码率的视频文件,以720X480 24fps 500kbps 为基准,依次往上调高码率进行播放测试,直至音视频失调为止。需注意的是,我的开发板工作在667主频上,主频高低会直接影响解码器的播放效果。 测试媒体为2012电影高清版,源文件有6个多G,码率有6800kbps以上。下面分别是转换后的播放效果。
 由于相机拍摄出来的图片分辨不出画面质量,所以后面的图片都采用后台软件截图。



不要被图片上的日期所迷惑,那是因为我懒得调相机时间造成的,呵呵!!
测试一:H264 720X480 24fps 500kbps h264编码的图像没有仔细观察基本






还真看不出画质的粗糙,除非你眼力很好。
MPEG4 720X480 24fps 500kbps
此为MPEG4画面,女配角在传统的MPEG4编码和高速运动的画面上已经面目全非了。





测试二:H264 720X480 24fps 2000kbps 
 码率上升到2000kbps,画质相比第一张已经明显清楚许多。





MPEG4 720X480 24fps 2000kbps
MPEG4在高码率上似乎也有明显的改善。





测试三:H264 720X480 24fps 4000kbps
 在超高码率和超高运动画面上,H264编码技术和三星6410处理器仍旧表现得非常出色。在该码率上音视频仍然同步运行,各项参数也都是正常值。影片段播放了10分钟,程序也没跑飞,程序设计初衷只为稳定3000kbps码率,但是现在还真出乎我的预料。我想这大概已经是三星S3C6410 硬解视频的极限了,再高点程序肯定会出问题的。





MPEG4 720X480 24fps 4000kbps
H264编码已经跑到4000kbps了,那么MPEG4也是不干落后的,看下图画面运动量就知道,画质没有失真,同步器仍然正常运转。两种解码器上这么高的码率,偶尔会有跳帧和隔音现像,不过属正常范围。



 


       需要注意的是,S3C6410并没有硬解MP3的组件,因而MP3音频流我这里用的是软解播放,不管什么CPU,只要是用模拟的都很占系统资源,所以上面视频在的转换时候我都把MP3流设置得比较低,否则的话硬解视频4000kbps的码率是绝对上不去的。当然,实际应用中是不会上这么高码率的,一般情况下是1000-2000kbps的画质已经相当好了,再说项目系统上不仅仅是放电影,我们也得给其它应用程序留点运行空间吧,呵呵!还有,在进行影视转换的时候要选AVI格式的容器,编码为DIVX,音频为MP3即可。
      由于百度不支持附件下载的功能,所以需要测试的朋友可以来件索要,我的邮箱是453722265@qq.com。
在终端下打 ./play xx.avi 执行。
测试版程序仅供大家参考,目前只开放MPEG4编码格式的播放程序,分辨率限制为480X272。注意,请不要用NFS加载视频文件,因为通过网络传输视频数据是有延迟的,特别是在大的媒体文件上更明显,最好是上传到FLASH或U盘SD卡上播放。在测试过程中若发现有不足之处,欢迎你来件指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐