朋友问我为什么这个阅读心得没有继续写,实在是想要完成升华不很容易。第(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.261或H.263,一个音频信道可以是G.711、G.723.1或G.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,以下0、1、 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.711,H.261, H.263可以对比为终端所能讲的语言有:中文、英文、德文等等,能力交换就是终端之间互相询问一下都每人会说哪国语言,找到一个两个人都会说的语言,然后用这个语言进行交流。由于一个H323终端可以只具备音频能力,也可以同时具备音频和视频能力,但希望他们之间可以互通;而且能力还可以随技术发展不断扩充,所以就出现了以上复杂的三层能力结构。还可以参看H245 的7.2部分。