(注:由于时间关系和学习目的,本系列学习笔记主要关注呼叫管理过程,不关注媒体流的创建、转发等媒体流相关细节。)
OPAL - Open Phone Abstraction Library,是一套开放源码库,主要用于基于包交换网络的、基于H.323和SIP协议的多媒体通讯应用开发。在OPAL库的框架之下,你可以方便的扩展其他媒体通讯协议,使得自己公司的多媒体通讯产品能与主流的产品(如H.323终端、H.323 MCU、SIP终端等)兼容。
OPAL对多媒体通讯系统的通讯协议进行高度抽象,形成了“协议抽象构架层”,主要包括以下类:
- OpalManager
OPAL的核心管理类,库中所有其他组件的大部分事件都会被集中到OpalManager中,应用程序只南要通过其子类对这些接口进行重载来获得OPAL系统的大部分事件通知;另外,OpalManager还提供了呼叫管理、连接管理、媒体流管理等管理接口。
注意:OpalManager在OPAL中被设计为“单件”,由应用程序保证系统中只有一个该类或其子类的实例存在。 - OpalCall
一个call(呼叫)由一个或多个connection(连接)对象组成,OpalCall类负责管理与一个call相关的多个connection以及协调它们之间行为。如:一个OpalCall管理了一个H323Connection对象和一个SIPConnection对象时,那么这个call就是两个协议之间的“网关”;在会议环境下,一个OpalCall可能会管理多个H323Connection或SIPConnection对象。 - OpalConnection
connection表示的是一个到endpoint的连接,Op