基于SIP的H.264视频电话终端设计

发布者:平凡的梦想最新更新时间:2014-11-27 来源: 21ic关键字:H.264  视频电话终端  S3C2410 手机看文章 扫描二维码
随时随地手机看文章

        1 引 言 

        视频电话终端系统的实现是个很复杂的过程,涉及多方面知识。其目的是利用互联网或固定电话网等为彼此通讯的双方不但能提供实时的语音交流而且可以实现视频信息的即时传输。由于丰富的视频数据和网络可用带宽的矛盾,视频电话的发展经历了漫长的发展过程,早在上世纪20年代就有人对他进行探索和研究。 

        SIP(Session initiation Protocol)[1]协议是IETF于1999年提出的一种新的网络多媒体通信的交互信令,他相对于市场主体的H.323协议具有简单、扩展性好、便于实现等优点,但当构建电信级的大网时也相当复杂,此协议也在不断的补充和完善中[2]。目前市场上出现越来越多支持SIP的智能多媒体终端及相关软件和软交换设备,SIP将成为IP视频电话业务的主流协议之一。 

        H.264视频编码标准[3]与其他视频编码标准如H.263,MPEG-4等相比,其更高的压缩效率和网络亲和性的优点正是视频电话及其各种应用所需要的。 

        本文基于SIP协议、以H.264为视频编码标准、采用TI的高速数字信号处理芯片TMS320DM643和三星的ARM9芯片S3C2410为主体设计并实现了一款视频电话终端。 

        2视频电话终端的硬件系统设计 

        视频电话终端依据其使用方式的不同,大体上可分为"PC到PC"型和"电话到电话"型2大类。"PC到PC"型产品适合计算机用户,如MSN,QQ视频等,主要依赖用户双方的计算机加上合适的软件实现。"电话到电话"型产品两端都不需要计算机,电话终端本身包含音视频处理器及相应的软件完成音视频即时通讯功能。由于此类产品使用简单、安装方便、便于控制、性价比合珲等优点,市场前景广阔,是目前国内外研究的热点。他实现的方案有多种,如采用DSP,ARM芯片,专用的会议电视芯片等。考虑到生产成本、实现的难易程度、货源、市场推广、产品的升级更新等因素,本文确定的视频电话终端系统的硬件方案为:使用TI公司的通用DSP芯片TMS320DM643利用纯软件实现音视频编解码、用三星的ARM9芯片S3C2410实现各种接口、嵌入式操作系统和传输控制协议等。这样既不存在芯片多成本高的问题,又能保持很高的性能,可通过简单的程序下载实现软件升级或增加新的编解码标准。系统的硬件结构框图如图l所示。 

        系统硬件主要由TI公司的TMS320DM643和三星公司的S3C2410组成。其中TMS320DM643完成音频压缩编解码G.711/G.729/G.723.1和视频压缩编解码H.264;S3C2410完成SIP协议和嵌入式OS及各种接口如RS232、复合视频输入/输出、数字CCD摄像头、LCD、RJ45、以太网、键盘等。音频信号的输入/输出通过TI公司的TLV320AIC23送入TMS320DM643进行压缩编码。

        3视频电话终端系统的软件设计 

        3.1 系统软件结构 

        在系统硬件完成后,剩下的需要大量丁作来编写代码实现各个功能模块,最终实现整个系统。系统的软件结构如图2所示。嵌入式OS是采用ARM-Linux内核,硬件驱动模块主要是基于ARM 9的介于硬件和Linux内核之间的软件接口,为特定的硬件响应定义好编程接口从而操作硬件,这2大模块的技术目前已相当成熟,相关的文献非常多;音频编码采用G.711/729/723.1,是为了让终端能适应音频编解码的非对称操作,有良好的兼容性,他可直接选用TI公司第三方提供的语音开发软件包。本文根据视频电话终端的特点和当前实现的技术难点主要讨论视频编码H.264和SIP协议栈2大核心技术的硬件实现。 

        3.2 H.264的实现 

        H.264视频编码标准虽然在设计时考虑到各种不同的应用和传输环境,其高的压缩效率和网络亲和性是以大的运算量为代价的,而在视频电话应用中虽然带宽有限却实时性要求高,所以考虑到实现的难易程度和技术本身必须对H.264编码方案进行精心选择(这里理所当然选用基本级),在利用DSP芯片实现时对程序要进行优化[4]。这里用C语音编程,利用TI公司的集成开发环境CCS2.2进行开发和调试,为了降低H.264编码算法的复杂性,适合视频电话的实时应用,主要从一下几个方面对其进行优化: 


        (1)运动估计算法的简化 

        在视频编码中,运动估计算法起着非常关键的作用,通常约占一个压缩方案总计算量的60%以上,所以这里采用一种快速的运动估计算法来降低运算复杂度[5]。在H.264编码标准中根据宏块(MB)的不同划分方式其对应的预测误差不同的特点,将编码模式简化为4组,先根据预测误差判断当前MB属于哪一组,然后在用拉格朗日率失真算法选取该组中最佳的编码模式,根据文献[5]的实验结果,这样做编码时间会缩短3倍左右而解码后图像的PSNR只有略微下降(最坏的情况不会超过0.5 dB)。对于帧内预测,如从预测块P的9种可选预测模式选取使P块和当前编码块I之间最小的预测模式也太费时间。对I帧中每个4×4编码模式的概率进行计算,只选取其中出现概率最高的4种模式用于帧内预测[6]。 

        (2)对程序结构进行优化 

        首先对程序中的条件判断语句、循环语句和函数调用等进行优化调整减少这类耗费较多时钟周期的指令。对视频数据的变换和逆变换、SAD的计算、运动预测的计算等尽量使用软件流水线。其次利用CCS2.2中C编译器提供的优化选项对程序进行优化,并对程序中浪费时间较多的代码用汇编优化器来优化这些代码。 

        (3)优化存储器 由于视频数据量较大,对数据的存取浪费的时间较多。这里使用DMA方式进行数据的存取以减少存储器延时,即在CPU对数据处理前用DMA方式将所需数据传送到内部缓存中,这样不但节约处理时间还便于使用软件流水线。

        3.3 SIP协议的实现 

        基于SIP的通信协议有多个开源版本,本文采用OS-IP2(V2.2.2)[7]。OSIP2使按照RFC3261(SIP)和RFC2327(SDP)标准并使用标准C编写的一个公开源码的免费协议栈。其结构简单小巧,专注于底层解析,效率较高。Osip2协议栈大致可以分为3部分:SIP协议的语法分析、SIP协议的过程分析和协议栈框架。 

        (1)SIP协议的语法分析 

        支持RFC.3261和RFC3265定义的SIP协议消息,包括INVITE,ACK,OPTIONS,CANCEL,BYE,SUB-SCRIBE,NOTIFY,MESSAGE,REFER和INFO等。不支持RFC3262定义的PRACK。遵循RFC3264关于SDP的offer/answer模式。带有SDP的语法分析。支持MD5加解密算法,Authorization,www_authenticate和proxy-authenticate等。 

        (2)SIP协议的过程分析 

        基于RFC3261,RFC3264和RFC3265的SIP协议描述过程,围绕transaction这一层来实现SIP的解析。Transaction是指一个发送方和接收方的交互过程,由请求和应答组成。请求分为Invite类型和Non-Invite类型。应答分为响应型的应答和确认型的应答。响应型的直答是指这个应答仅代表对方收到请求。请求经过处理后都必须返回确认型的应答。响应型的应答有1xx,确认型的应答包括2xx,3xx,4xx,5xx和6xx。一个transaction由一个请求和一个或多个响应型应答、一个确认型应答组成。Transaction根据请求的不同和发送/接收的不同可以分为4类:ict(会话邀请的发起方)、nict(非邀请会话的发起方)、ist(会话邀请的接收方)和nist(非邀请会话的接收方)。 

        (3)协议栈框架 

        主要有3部分:底层套接字接收/发送,模块问通信管道,上层调用api接口。OSIP2并不实现底层套接字的接收俊送,其由eXOSIP实现,现在只支持UDP的链路连接。 

        本文利用下载的用C语言编写()SIP2源码在LINUX环境下编译后下载到ARM9 芯片S3C2410中。 

        4结语 

        根据以上的设计,研制了一套视频电话终端样机,完成的功能有:具有以太网,RJ45,JTAG,数字CCD摄像头、键盘和复合视频输入/输出、以语音输入/输出接口,支持音视频双向同步传送,在固话网和Internet网上测试,CIF格式视频传送率25帧/s,支持G.711/G.729/G.723.1语音编码。 

        本文设计的视频电话终端就目前来说市场化每台成本能控制在1500元以下,因采用通用的DSP芯片和ARM芯片,对产品的进一步神经非常方便,只需更改相关软件即可。 

        通过Internet或固话网实现语音和视频传输的应用需求越来越多,技术应用也将趋于成熟,视频电话机随着费用的降低也将走入千家万户,具有广阔的市场前景。

关键字:H.264  视频电话终端  S3C2410 引用地址:基于SIP的H.264视频电话终端设计

上一篇:IAR Systems支持Atmel|Smart MCU和MPU
下一篇:基于MEMS和MR传感器的嵌入式系统姿态测量

推荐阅读最新更新时间:2024-03-16 13:47

s3c2410_gpio_cfgpin函数解析
函数原型:s3c2410_gpio_cfgpin(unsigned int pin,unsigned int function) 位置:/linux-2.6.32.2/arch/arm/plat-s3c24xx/gpio.c 函数内容: void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function) { void __iomem *base = S3C24XX_GPIO_BASE(pin); unsigned long mask; unsigned long con; unsigned long flags; if (pin S3C2410_GPI
[单片机]
<font color='red'>s3c2410</font>_gpio_cfgpin函数解析
基于S3C2410嵌入式设备的U-Boot移植流程教程
S3C2410是三星公司针对嵌入式系统推出的高性价比微处理器,它是基于ARM9TDMI内核的16/32位RISC处理器,工作主频为200MHz。由于现有的Linux系统引入了设备文件的概念,读写串口可以像读写普通文件一样进行操作,非常方便。 一、Linux系统的安装 安装过程首先出现欢迎对话框,如上图所示。Red Hat先后会询问用户使用何种语言、用户使用的键盘类型(默认选项为美式键盘)以及安装软件的位置(选择本地CD -ROM)等许多需用户选择的问题。 使用Disk Druid建立Linux文件系统然后通过PC机对开发板进行设置,并执行以下命令,从而对开发板进行内核及文件系统的烧写工作: 此时,关闭开发板电源,接
[单片机]
基于<font color='red'>S3C2410</font>嵌入式设备的U-Boot移植流程教程
linux-2.6.24.4中s3c2410和dma有关的函数的分析
首先介绍s3c2410与DMA相关的寄存器。 s3c2410共有4通道的dma,每通道9个寄存器,共36个。 1、DISRCn 该寄存器保存待传送数据的源地址。 2、DISRCCn 源控制寄存器。位1表示数据源的总线类型,位0表示地址是否自动增减。 3、DIDSTn 该寄存器保存待传送数据的目的地址。 4、DIDSTCn 目的控制寄存器。位1表示目的地址的总线类型,位0表示地址是否自动增减。 5、DCON DMA控制寄存器。 6、DSTATn DMA状态寄存器。 7、DCSRCn 当前源地址寄存器。 8、DCDSTn 当前目的地址寄存器。 9、DMASKTRIGn DMA MASK寄存器。
[单片机]
基于S3C2410 的时钟频率小结
其中pll 包含两种: MPLL 主要应用于各种设备时钟的提供,将重点讨论 UPLL 应用于USB时钟频率应用,为48M 其中MPLL的设置主要依靠使用各种锁相环和分频器来改变输入原始的频率,经过锁相环之后可以提升频率,关于频率的选择主要依靠改变CPU寄存器实现,MPLLCON通过改变其中的参数设置即可 Mpll = (m * Fin) / (p * 2s) m = (MDIV + 8), p = (PDIV + 2), s = SDIV MPLL就是要得到的频率,我建议用参考手册给定的频率设置即可,标准之际。 接下来该设置各种设备的频率: 我所认为的MPLL分出三种模式:FCLK、HCLK、PCLK 这三种也应用于不同的场合,F
[单片机]
视频编码压缩新标准H.265为何胜过H.264
    在我们以往的应用中,H.264经常作为当前最为先进的压缩标准出现。比起此前的压缩标准,H.264具有很高的压缩性能。比如,在同等图像质量的条件下,H.264的压缩比率是MPEG2的2倍以上,而对于MPEG4的压缩效果,也达到了1.5倍-2倍的范围。相比较H.264,新出台的H.265能否胜任新的视频编码标准职责?     H.264尚能饭否,H.265已来救场?     其实,究其压缩比为何如此之高,其主要原因在于低码率。与MPEG2和MPEG4相比,H.264压缩技术大大地降低了用户的下载时间和数据流量。此外,H.264还具有高质量的流畅图像,正是因为如此,经过H.264压缩的视频数据,在网络传输过程中所需的带
[安防电子]
基于S3C2410的嵌入式串口通信设计
1S3C2410硬件平台简介 S3C2410是韩国三星公司生产的新一代高性能微处理器,它是基于ARM920T内核的16/32位RISC处理器.主要应用于嵌入式系统中。 S3C2410拥有强大的数据处理能力.又有着低成本.低功耗等优点.在各种手持及移动设备上的应用越来越广泛,基于其平台的程序功能也越来越复杂。于是,在其平台上架构多线程的操作系统已成为越来越多系统设计者的诉求,本文介绍多线程在S3C2410上的具体实现过程。 2 系统结构分析 串行端口的本质功能足作为CPU和串行设备问的编码转换器,一般微机内都配有通信适配器,使计算机能够与其他具有RS232C串口的计算机或设备进行通信。本系统主要目的是实现宿主机与目标
[单片机]
基于<font color='red'>S3C2410</font>的嵌入式串口通信设计
S3C2410 bootloader ----VIVI阅读笔记
首先在移植前应该熟悉了解vivi的架构,启动过程,了解了原理性的东西之后,再去做移植比较好吧,我也新手进来公司的第1件事就是弄VIVI, 不过我是剪裁,移植主要部分是改bootload分区和kernel MTD分区,保证一致,其他的记不得了,GOOGLE里有非常丰富的关于vivi -0.1.4到s3c2410移植或者启动过程分析的资料. S3C2410 bootloader ----VIVI阅读笔记 (转)上 2007-06-14 13:06 建议读一读《嵌入式系统Boot Loader技术内幕》(詹荣开著),google一下就会找到一片。什么是Bootloader就不再这里废话了,看看上面的文章就明了了。 Bootloader
[单片机]
基于S3C2410的TFT-LCD驱动电路设计
引言   随着电子技术的迅猛发展,具有耗电少、亮度高、体积小等特点的液晶显示器被广泛应用于嵌入式系统中。S3C2410是三星公司开发的一款以ARM920T为核心的16/32位嵌入式处理器。它主要面向手持设备以及高性价比、低功耗的应用。LTS350Q1-PE1是三星电子公司生产的一款非晶硅有源矩阵TFT-LCD,它具有功耗低、亮度高和体积小等特点,目前在嵌入式设备中应用非常广泛。   基于S3C2410,采用LTS350Q1-PE1作为显示设备可以构成一个基于嵌入式平台的液晶显示系统,如图1所示,该系统可以满足大多数嵌入式手持设备的功能要求。但是,要想S3C2410的LCD控制器可以正确有效地控制TFT-LCD,需要设计两者之间的
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved