导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[dzyjc7]264编码器的DSP移植与优化



No.59237
作者:dzyjc7
邮件:dzyjc7@163.com
ID:130961
登陆:2次
文章数:10篇
最后登陆IP:111.222.53.176
最后登陆:2012/5/2 17:47:51
注册:2012/4/12 17:44:00
财富:101
发帖时间:2012/4/12 17:45:13
发贴者IP:183.14.193.84
标题:dzyjc7:264编码器的DSP移植与优化
摘要:No.59237264编码器的DSP移植与优化 目前,H.264编码器的实现版本主要有:JM、T264、X264。其中JM是H.264官方源码,实现H.264所有特征,但其程序结构冗长,只考虑引入各种新特性以提高编码性能,忽略编码复杂度,其复杂度极高,不宜实用;T264编码器编码输出标准的264码流,解码器只能解T264编码器生成的码流;X264是编码器注重实用,在不明显降低编码性能的前提下,努力降低编码的计算复杂度。这里,用X264编码器对DSP平台移植、优化。X264程序在DSP平台上实现及优化主要有:程序简化、代码移植、代码优化。
程序简化
X264编码器除支持H.264的基本档次外,还包含主要档次的某些功能选项以及其他功能模块,代码尺寸较大,因此需要将不必要的功能模块删除,以减小代码尺寸。主要做以下删减:删除X264程序中的解码部分,以及基本档次功能之外的CABAC、Bslice部分;X264程序是基于X86的PC平台,包含了SSE、MMX等。PC平台使用的优化技术,在DSP平台下无效:针对DSP平台特点,调整删减后的代码文件结构。
代码移植
TI公司的DSP开发工具CCS具有自己的ANSI C编译器和优化器,并有自己的语法规则和定义,经过上一步简化后得到纯C版本的X264编码器需要经过修改才能够在CCS下应用于具体的DSP。主要包括:①Visual c++、CCS对于变量和结构体的“重复定义”问题的不同处理,需更改头文件中变量和结构体定义的位置;②用功能相同的库函数代替CCS中没有的库函数,如strncasecmp;③数据格式的不同,用long代替CCS中没有的_int64格式;④按照CCS下C语言的规则定义数组;⑤修改系统配置参数的读取方式;⑥编写针对TMS320DM6446存储结构的CMD文件。如此,X264便可以在CCS下编译通过并运行。
代码优化
纯C版本的X264程序并没有利用DM6446的资源和并行机制,代码运行速度极低。因此必须对代码进行优化,提高处理性能。X264代码优化有以下3个层次:项目级优化、算法级优化和指令级优化:
(1)项目级优化项目级优化主要是对CCS提供的各种编译参数进行选择、搭配、调整,如本文使用的选项-o3、-pm等;利用CCS编译器提供的优化功能,改善循环及多重循环体性能,进行软件流水,提高软件的并行性;改写不适合编译器优化的语句,使CCS能够对程序进行更好的优化。
(2)算法级优化进行算法级优化时。应使VC环境下的纯C版本与CCS下的版本同步更新,VC版本运行正确,既可以保证算法理论上的正确,又可以加快工作速度并减少问题的产生。该算法优化工作主要有以下几点:①运动估算法的选择:X264编码器提供3种可选的整像素运动估算法:X264_ME_ESA(全搜索法)、X264_ME_HEX(六边形搜索法)、X264_ME_DIA(小菱形搜索法)。在VC环境下使用纯C版本代码对同一视频序列使用3种不同的搜索方法进行编码。对比3种搜索方法在编 ......

>>返回讨论的主题


  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:16毫秒 最大:672毫秒 查询6次