利用OpenMCU加深对H.323协议的理解——H.323协议阅读心得(2)

       朋友问我为什么这个阅读心得没有继续写,实在是想要完成升华不很容易。第(1)篇是个引子,心得需要实践的积累和理论的研究,马虎不得。

       只是为了读协议而读,不一定真正读得进去。发现一个很好理解协议的方法:利用开源协议栈。把协议栈的应用、调试,和协议的阅读结合起来,可以收到事半功倍的效果。这个方法是在进行能力集的研究中发现的。现将能力集的心得记录于下: 

       先看一个OpenH323应用程序OpenMCU

OpenMCU执行时,首先会显示OpenMCU所具有的能力集,如下: 

Codecs (in preference order):

 Table:

   G.711-ALaw-64k <1>

   G.711-uLaw-64k <2>

   H.261-CIF <3>

   H.261-QCIF <4>

   UserInput/basicString <5>

 Set:

   0:

     0:

       G.711-ALaw-64k <1>

       G.711-uLaw-64k <2>

     1:

       H.261-CIF <3>

       H.261-QCIF <4>

     2:

       UserInput/basicString <5> 

这些分层显示都是什么意思呢?他们在能力交换时有什么用处呢?怎么和协议中的建议对应呢? 

再来看协议。

H.323 V4中有关能力集的描述在 6.2.8.1  Capabilities exchange(能力交换) 这一小节中。协议规定终端的能力描述有四个结构,一起组成此终端的能力描述:

capabilityTable:存放此终端所有具有的能力所对应的号码。如:

G.711             编号:1

G.723.1         编号:2

H.261-CIF     编号:3

H.261-QCIF  编号:4     

alternativeCapabilitySet存放capabilityTable中的编号组合。如:

   一个alternativeCapabilitySet中存放capabilityTable中的两种音频能力:

                     {1,2}      也即{G.711, G.723.1}

另一个alternativeCapabilitySet中存放capabilityTable中两种视频频能力:

       {3,4}      也即{H.261-CIF, H.261-QCIF}

      

simultaneousCapabilities终端能同时使用的一组能力模式,alternativeCapabilitySet的组合。如:

一个simultaneousCapabilities 包含两个alternativeCapabilitySet 结构:

{{G.711, G.723.1}, {H.261-CIF, H.261-QCIF}}

另一个simultaneousCapabilities 包含三个alternativeCapabilitySet 结构:

{{H.261}, {H.261, H.263}, {G.711, G.723.1, G.728}}

这意味着终端能同时操作两个视频信道和一个音频信道:一个视频信道为H.261,另一个视频信道为H.261H.263,一个音频信道可以是G.711G.723.1G.728

capabilityDescriptor描述终端的总能力,其中每一项是一个simultaneousCapabilities结构和一个对应的capabilityDescriptorNumber 

至此,把OpenMCU的显示和协议结合着看就会明白:

Codecs (in preference order):

 Table:                                       capabilityTable

   G.711-ALaw-64k <1>

   G.711-uLaw-64k <2>

   H.261-CIF <3>

   H.261-QCIF <4>

   UserInput/basicString <5>

 Set:                                          capabilityDescriptor

   0:     capabilityDescriptorNumber,以下01 2是一个simultaneousCapabilities

     0:   以下两行指一个alternativeCapabilitySet                                               

       G.711-ALaw-64k <1>

       G.711-uLaw-64k <2>

     1:   以下两行指另一个alternativeCapabilitySet

       H.261-CIF <3>

       H.261-QCIF <4>

     2:   以下一行行指第三个个alternativeCapabilitySet

       UserInput/basicString <5>

      

       其中UserInput/basicString <5>代表什么意思还不明白,有朋友知道可以告知。我的msn:[email protected] 

       综上,能力的概念,是指终端具有的音、视频编解码方式,如G.729, G.711H.261, H.263可以对比为终端所能讲的语言有:中文、英文、德文等等,能力交换就是终端之间互相询问一下都每人会说哪国语言,找到一个两个人都会说的语言,然后用这个语言进行交流。由于一个H323终端可以只具备音频能力,也可以同时具备音频和视频能力,但希望他们之间可以互通;而且能力还可以随技术发展不断扩充,所以就出现了以上复杂的三层能力结构。还可以参看H245 7.2部分。

 

你可能感兴趣的:(table,语言,Exchange,终端)