android 视频电话

本文将简单介绍可视电话子系统的组成及结构,以及所接触过的基于android可视电话做简单介绍。每个厂家的可视电话实现方案略有异同,不能以一概全。

1 Android可视电话

  如上图所示,Android可视电话由以上几个模块组成,即基于无线通信业务,又对多媒体处理要求极高。控制camera,麦克风实时捕捉本端的音视频数据经3G-324协议栈编码复用发送到网络。同时将解复用解压缩收到的对端音视频数据push到LCD及扬声器。由于使用了专有的可视电话协议,因此与http数据业务传输是有本质区别的。

  重点介绍由以下几个模块组成:

VTapp:通常可以在Android的Phone app上增加及修改,此种方法工作量复杂度会减少。

VTengine:通常也被视为VT的适配层。这个模块可以放在framework java,也可以放在library中。具体放在哪一层涉及到音视频数据搬运等问题,故推测这也是MTK的可视电话VTengine放在lib层的一个原因。对3g-324M做一个封装,向上提供接口。调用camera以及audio接口进行本端音视频数据采集。并负责将远端的解码后的音视频数据放出来。

3G-324M:下面章节将会详细介绍,简单来说是实现可视电话必不可少的协议。放在android的external中。

VT port:Android手机通常使用双芯片设计。而modem侧与AP侧之间有两种数据通信的方式,一种就是port口。而另一种是双端口内存ram。如果是采用port口方式,至少有两个port口,分别用于CS域传递AT指令,PS域传送数据业务相关数据。而可视电话需要增加一个VT port。专用于在AP侧与modem侧传递本端与对端的可视电话数据。

[edit]2 可视电话协议栈介绍

  在对可视电话有了整体的认识以后,再来看陌生的可视电话协议栈是什么?它有哪几部分组成,如何分工合作?

  3GPP在ITU H.324M及其他国际标准基础上制订了3G-324M框架性协议它可以在无线电路交换网络上实现实时多媒体服务。使视频、音频、控制信号等在同一个64K的物理链路上传输。   3G-324M是一个标准体系,包含下面几个子协议标准:语音编码标准(3GPP-AMR、G.723.1)、视频编码标准(H.263、MPEG-4、H.261)、数据编码标准 (V.14、LAPM(Link Access Procedure for Modems))、多路复用和分离标准(H.223)和呼叫控制标准(H.245)。

  

  H.223,语音、视频、用户数据和控制数据的多路复用与分离(Multiplexing、De-Multiplexing),制定了多路音频和视频信号在单个移动通讯信道的多路复用应用标准;

  H.245,制定了在各个阶段的消息控制交换标准;

  Audio codec,ARM是强制标准,G.723.1为可选的老的编码标准;

  Video codec,H.263为强制性基准协议,MPEG-4是推荐标准;

[edit]2.2 H.245协议

  3G-324M中使用H.245作为终端控制协议,所支持的H.245最低版本是Version 3,推荐实现更新的版本。

  H.245提供如下功能:

  支持NSRP、CCSRL;

  主从模式确定,在会话开始时确定哪个终端作为主控制终端,发生冲突时由主终端确定通信状态;

  终端能力交换,如多路复用的可选模式、codec、数据共享模式及参数;

  复用表初始化和更新,增删复用表项;

  模式请求(Mode request),用于请求从接收者到发送者的操作模式;

  传输延迟测量,提供精确的质量特性度量;

  回环测试(Loopback testing);

  混杂呼叫控制(Miscellaneous call control)命令和指示。

3 可视电话建立过程

3.1 CS域可视电话呼叫建立

  VT的CS域呼叫建立类似于Android上的语音呼叫,而原生的android代码没有提供可视电话接口,因此需要在framework telephony 中添加API,以及在RIl HAL层中增加可视电话接口以及AT指令。CS域呼叫建立成功后,一条64kbit/s的透明数据传输链路也成功建立,3G-324M比特流将通过这条链路进行传输。

[edit]3.2 3G-324M协商建立

1, 手机电平检测,即选择H.223多路复用层:每部手机发送一个标志位序列来表示他所能支持的最高移动多路复用电平, 采用最高值作为公共电平;手机电平1、2、3分别对应H.223附件A、B、C;

2, MUX-PDUS的传输:传输H.223复用协议数据单元帧;

3, H.245简单响应协议(SRP);

4, 终端交换能力,包括音视频能力、所支持的移动方面的扩展、所支持的复用选项等;

5, 主从模式的决定,H.245消息“Master Slave Determination(MSD) Request”,确定终端的主从模式;

6, 开放逻辑信道,承载话音、视频媒体,定义他们的复用表给远端解复用端;

7, 通话建立后进行媒体交换。

[edit]3.3 可视电话数据传递

  在完成了3G-324M协商建立后,才开始媒体数据的交换。如上图所示,camera采集的原始数据,从麦克风采集的audio数据,传入3G-324M。经过编码,复用。传送到VTport。再由modem经空中接口发送到网络。

  而对端的数据在modem接收到以后,经VTport传送到3G-324,经解复用,解码,再将原始数据push到surfaceflinger显示,audio经扬声器播放出来。

  除了音频数据、视频数据之外的用户数据,在可视电话过程中传送图片或者文字。

  控制数据, H.245不仅在可视电话建立时发挥作用,在可视电话过程中也会发送流量控制、通用命令和指示等。       

[edit]4 Android可视电话实现

Android可视电话不是一个简单的google market中的应用,若希望实现ckt自己的可视电话需要注意以下几方面:

1,得到芯片方案厂商的支持,与芯片方案厂商协商modem侧与AP侧如何通信传递可视电话复用数据。

2,知晓modem侧的可视电话相关AT指令。

3,选取合适的3G-324M可视电话协议栈lib。

你可能感兴趣的:(android 视频电话)