基于SIP的H.264视频电话终端设计
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或固话网实现语音和视频传输的应用需求越来越多,技术应用也将趋于成熟,视频电话机随着费用的降低也将走入千家万户,具有广阔的市场前景。
- 视频监视领域的视频压缩与数据流(06-18)
- 下一代媒体网关系统架构及实现(04-12)
- 引爆阅读革命:友达开发出可挠式电子纸显示技术(09-23)