0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于数字信号处理器实现MPEG4视频编码器的软硬件设计

电子设计 来源:郭婷 作者:电子设计 2019-07-29 08:14 次阅读

1 引 言

近年来,随着网络和多媒体技术的发展,视频信息通信的重要性和需求急剧增长,而其中的关键就在于视频压缩编码技术的应用。提出了一种基于TMS320DM642 DSP的视频编码方案,实现了H.264算法。同H.264相比,MPEG4具有软硬件开发成本低和更容易实现的优势,是目前视频编码应用的主流。本文提出了一种基于TMS320DM642 DSP的MPEG4视频编码器的实现方法,该方案可用于远程视频监控、视频会议等诸多领域。

MPEG4是由国际运动图像专家组(MPEG)开发制定的国际通用视频压缩编码标准,目前已经发展成为可适应不同传输带宽、可用最少的数据来获得最佳质量图像的高效压缩算法和工具。MPEG采用了DCT、量化、熵编码等算法,通过对形状、运动、纹理等信息的分析,消除图像数据在时间和空间上的相关性,具有高效压缩性及普遍适用性等独特优势,为视频信息高效存储、传输提供了方便。

MPEG4为不同的应用对应的码率、分辨率、质量和服务定义了编码器和码流的不同框架和级别,其中的简单框架提供了对矩形视频对象的编码功能。本文所实现的就是MPEG4视频编码算法的简单框架。

2 MPEG4编码器硬件平台

实现MPEG4编码器的硬件平台以TMS320DM642DSP为核心,并配合以适当的外部存储器SDRAM,FLASH等外围设备。

2.1 TMS320DM642特性

TMS320DM642是TI为多媒体应用而开发的基于C64x内核的高性能定点数字信号处理器时钟频率600 MHz,最高处理能力可达4 800 MIPS。DM642具有C6000系列DSP的公共定点指令集,增加了多媒体扩展指令,可以更加方便快速地执行图像处理中的算法。DM642的这些特点,使其非常适合于视频图像处理,是实现MPEG4视频编码器的理想硬件平台。

2.2 硬件系统结构

DM642作为整个系统的核心,对视频数据进行高速处理,完成MPEG4编码算法;可编程视频格式转换电路将输入的原始视频数据进行预处理,转换成编码器可接受的视频格式的数字信号;E2PROM和FLASH用来固化应用程序和初始化参数,SDRAM作为片外存储器,在编码过程中存储待处理的视频数据,以上三者通过EMIF总线与DM642连接;通过JTAG接口,利用CCS,可方便地实现系统软硬件仿真与调试;实时时钟为数字视频提供实时时间基准信息。

基于数字信号处理器实现MPEG4视频编码器的软硬件设计

3 MPEG4编码器的软件实现和优化

3.1 MPEG4的软件实现

MPEG4是一个开放的框架标准,并没有规定具体的算法和程序,用户可根据需要自行开发代码,我们采用了XVID 1.1.0开放源码来实现MPEG4编码器。XVID代码实现了MPEG4的简单框架算法,不需要形状编码,只对I-VOP和P-VOP进行编码。但XVID是针对PC机应用而设计开发的,要将他移植到DSP中,必须对代码进行分析,结合DSP的指令结构和特点进行修改。

XVID代码实现的MPEG4编码器,以原始视频数据中的每一帧作为一个视频对象,首先判断是I帧还是P帧,I帧需要对整帧图像数据进行编码存储,P帧则进行运动估计和补偿,只编码当前帧与参考帧之间的图像残差和运动矢量。每帧数据都被分为16×16宏块,每个宏块又分为8×8子块,在宏块和子块的基础上进行DCT、量化、VLC编码。基于不高的图像质量需求,我们减化了XVID的某些功能,如GMC(全局运动补偿)、RVLC等,减少了代码运算量,降低了复杂度。

3.2 代码优化

为提高代码执行效率,必须结合DSP的特点对代码进行优化,优化主要分为3个层次:

3.2.1 项目级优化

TI提供了功能强大的集成开发环境CCS,包含了各种高效的编译工具,在代码编译过程中,通过使用编译器提供的编译选项(如-o3和-pm等),编译器可自动改善代码结构,减少代码中指令的相关性,通过软件流水等方法,提高指令并行性,改善循环性能,并可以优化代码的尺寸。

基于数字信号处理器实现MPEG4视频编码器的软硬件设计

3.2.2 C语言程序级优化

通过使用CCS中的profile工具,对C代码进行评估,找出运算量最大的程序段,如DCT、量化、运动估计等,这部分代码的优化对提高编码器性能有显著影响,我们采用了以下C程序级优化方法:

(1) 使用C6000 DSP特有的关键字和内联函数来改写C代码,如使用关键字restrict可消除数据间的相关性以提高代码并行执行能力,而使用内联函数(如_add2(),nassert())可快速优化C代码,作为直接映射为内联C6000指令的特殊函数,可提高代码在DSP中的执行效率。

(2) 使用整型访问短型数据,使用32位整型一次访问2个16位短型数据,分别存放在32位寄存器的高、低16位字段,可减少对内存的访问次数,将程序读取数据的效率提高一倍,再使用能同时对2个寄存器对应高低16位进行操作的内联函数,如add2();mpy2()等,可大大提高代码执行效率。

(3) 采用循环展开的方法,将多循环变为少循环甚至单循环,减少循环嵌套,消除冗余循环,可以提高指令并行执行的程度。

(4) DSP没有专门的硬件除法运算单元,除法都用连续减法实现,运算量比较大,所以要尽量减少除法运算,不能减少的除法用移位运算来实现,可减少运算耗时。

(5)使用TI图像库函数。TI提供了功能强大的IM-AGE库支持,包括了很多图像处理常用函数,如8×8子块的DCT变换(IMG_fdct_8×8)、SAD计算(IMG_sad_8×8),这些函数都是优化过的,代码效率很高,可直接应用到程序中。

3.2.3 汇编程序级优化

线性汇编语言是C6000系列DSP所特有的一种编程语言,类似汇编,但不需要给出指令使用的功能单元、寄存器、并行性等细节信息,汇编优化器可根据代码情况自动确定。我们将代码中运算量大、调用频率高的关键部分用线性汇编进行了改写,如量化、DCT、SAD等模块,进一步优化了循环迭代、提高了指令的并行性效果。表2给出了改写前后几个函数模块程序对3帧foreman.qcif测试序列编码时消耗的时钟周期数对比。

3.3 存储空间的配置

DSP的片上存储空间有限,编码器要处理的大量视频数据(包括当前帧和参考帧等图像)必须放在片外,而CPU访问片外的速度要比访问片内慢很多。利用DM642的EDMA功能,CPU对前一帧数据编码的同时,通过ED-MA通道提前将片外的数据搬移到片上内存,二者并行工作,提高了数据由片外传输至片内的效率,可减少CPU等待时间。

3.4 实验结果

使用编码器对标准qcif格式(176×144)测试序列进行编码来测试编码器性能,其中news序列300帧,suzie序列150帧,foreman序列400帧,通过TI的集成开发环境CCS 2.0进行硬件仿真实验,在设定码率为100 b/s的条件下。

通过分析测试序列编码结果,编码器的编码速率达到25 fps以上,可以满足实时编码的要求。在传输码率降低的情况下,编码速率还可以进一步提高。从编码结果可以发现,不同测试序列编码前后的压缩比不同,这是由于测试序列图像的运动情况、背景变换造成的,如suzie序列背景单一,运动缓和,压缩比较高,而news序列由于背景不断变换,压缩比就相对较低。通过对比编码前和编码后解码得到的图像,画面无失真现象,图像质量并没有明显下降。

基于数字信号处理器实现MPEG4视频编码器的软硬件设计

4 结 语

本文探讨了MPEG4编码器在DM642上的实现方案和优化的方法,实现了MPEG4编码的简单框架算法。实验结果表明,本文所提出的方案具有较高的易实现性和实用性,增加和改进的代码优化方法是有效的,性能测试获得了满意的效果。在此基础上,我们还可进一步对实现MPEG4高级框架和代码优化方法的改进,进行更深入地研究,以满足更高的应用要求。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18024

    浏览量

    221537
  • 编码器
    +关注

    关注

    41

    文章

    3338

    浏览量

    131251
  • 数字信号处理器

    关注

    5

    文章

    304

    浏览量

    27186
收藏 人收藏

    评论

    相关推荐

    MPEG-2系列编码器

    `MPEG-2系列信源压缩编码器,能将音频、视频信号编码成标准的MPEG-2/DVB传输流,广泛应用于各种
    发表于 03-07 23:31

    数字信号处理器和 ARM 微处理器平台——DaVinci 数字视频处理

    的音视频算法。H.264,WMV9, H.263, MPEG4, MPEG2, JPEG, AAC,MP3,G.729, G.711,支持SXGA,720P,D1 编解码与以往的数字视频处理器
    发表于 09-14 10:06

    基于DSP的MPEG2的视频编码器设计与实现

    要做课程设计,题目就是:基于DSP的MPEG2的视频编码器设计与实现,不知道该怎么下手,望高手给个思路,指导一下,学校有ICETEK-DM642-P
    发表于 07-02 20:34

    编码器转换为数字信号的电路

    请问一下哪位有编码器转换为数字信号的资料?本人最近做测量深度,需要用旋转编码器实现,各位大神给点这方面的资料吧!旋转编码器过来的是脉冲
    发表于 09-28 15:11

    BSP-15宽带数字信号处理器及其应用

    给出了一个通用的接口模式,是从模式的情况,可以满足大部分系统的需要。用BSP-15宽带数字信号处理器设计一个视频信号处理卡,原理框图如图4
    发表于 11-27 11:49

    基于最新DaVinci平台的视频监控服务的设计与实现

    了整个网络视频监控系统的框架,包括视频服务、网络传输链路及客户监控端。本设计采用 MPEG4视频编码
    发表于 07-19 06:19

    数字信号处理器的特点

    ,在处理起来更是高效,所以,非常的使用在便捷设备当中的使用,像是手机等。DSP经常使用能够同时获取多个数据或指令的特殊内存架构。  数字信号处理器的特点  (1) 软件可实现  纯粹的
    发表于 12-09 14:01

    怎么实现基于C6000系列DSP的MPEG-4视频编码卡的软硬件设计?

    本文介绍了基于C6000系列DSP的MPEG-4视频编码卡的软硬件实现。利用DSP的VLIW和流水线结构设计程序可以使
    发表于 06-02 07:03

    怎么实现MPEG-4 ASP视频编码器的软件优化设计?

    怎么实现MPEG-4 ASP视频编码器的软件优化设计?
    发表于 06-04 07:04

    基于MPEG4硬件编码视频监控系统的实现

    本文介绍了基于 Faraday 公司FA526 处理器硬件编解码器FMTCP100 的网络视频监控系统的设计与实现。文章详述了实时网络视频
    发表于 01-07 14:11 50次下载

    MPEG4视频编码卡的设计与实现

    摘 要:本文介绍了一块基于PCI总线的单路MPEG4视频编码卡的设计与实现。该卡实现了音视频
    发表于 03-11 13:18 1672次阅读
    <b class='flag-5'>MPEG4</b>音<b class='flag-5'>视频</b><b class='flag-5'>编码</b>卡的设计与<b class='flag-5'>实现</b>

    视频处理器软硬件协同设计

    为了提高 视频图像处理 速度与硬件资源利用,针对一种基于精简指令集处理器数字信号处理器(RIS
    发表于 08-04 17:54 38次下载
    <b class='flag-5'>视频处理器</b><b class='flag-5'>软硬件</b>协同设计

    基于MPEG-4的视频DCT编码器实现

    提出并实现了一个基于MPEG4的快速高效存储的DCT视频编码器,用它把H.261视频数据流转换为低比特率、低空间分辨率的
    发表于 09-02 16:26 59次下载
    基于<b class='flag-5'>MPEG</b>-4的<b class='flag-5'>视频</b>DCT<b class='flag-5'>编码器</b>的<b class='flag-5'>实现</b>

    详解数字信号处理软硬件实现

    详解数字信号处理的量化效应、软件实现硬件实现
    发表于 07-07 14:57 0次下载
    详解<b class='flag-5'>数字信号</b><b class='flag-5'>处理</b>的<b class='flag-5'>软硬件</b><b class='flag-5'>实现</b>

    采用数字信号处理器实现MPEG-4视频编码卡的设计

    存储空间分配、数据传输还是运算速度对DSP来说都是挑战。本文介绍了基于C6000系列DSP的MPEG-4视频编码卡的软硬件实现。利用DSP的
    的头像 发表于 03-17 14:31 1572次阅读
    采用<b class='flag-5'>数字信号</b><b class='flag-5'>处理器</b><b class='flag-5'>实现</b><b class='flag-5'>MPEG</b>-4<b class='flag-5'>视频</b><b class='flag-5'>编码</b>卡的设计