1.14版本之前,每添加一个新的语音编解码,需要修改和重新编译OpenH323原码。这需要一份完整的OpenH323原码拷贝和一个兼容的开发环境,也需要掌握C++和OpenH323能力集(capabilities)的细节。
1.14版本以后,OpenH3230加载语音编解码,既能够在运行时加载,也可以从一个dll(for windows)或者library.so(在Unix平台上)文件加载。这就使得编写和修改OpenH323编解码比以前的那种单一设计方法简单多了,即使你不懂c++或者没有完整的OpenH323开发环境,也能编写和开发OpenH323编解码。它允许二进制格式的插件,而且不需要处理H323能力集复杂的细节。
使用插件(Using plugins)
安装编解码插件须把DLL或者library.SO文件拷贝到一个能被OpenH323找得到的地方。默认情况下,OpenH323会搜索C:\PWLIB_PLUGINS" (on Windows) 或r "/usr/local/lib/pwlib" (on Unix)以及它们的子目录。如果在运行configure.exe的时候指定了参数,默认的路径会有所不同。(configure –-help能得到相关帮助)。
运行的时候,通过设置环境变量PWLIBPLUGINDIR能改变默认的插件路径。
所有的编解码插件命名应该以"_pwplugin.dll" (Windows) or "_pwplugin.so" (for Unix)结尾.例如G7231_ pwplugin.dll.这样做的好处就是在搜索插件的时候能够安全找到所需的DLL,而不会试图加载其他的共享库。
媒体格式(Media formats )
媒体格式是一个命名编码各式的字符串,例如"G.711-uLaw-64k" 或 "GSM-06.10",OpenH323预定义了许多的媒体格式名字,但是只有当媒体格式有相应的编码解码数据功能才是有效的编解码。
编解码插件系统自动创建新的编解码(包含任何所需要的媒体格式)---当加载插件的时候,这些自动创建的编解码都是有效的----除了任何静态连接的编解码。默认情况下,静态连接的编解码只有G.711 uLaw 和 ALaw。
因此如果我们只是往里边添加OpenH323已经预定义了的语音编解码,则只需要编译对应的编解码的DLL即可,而不要做任何其他任何额外的工作。(当然我们也可以像以前的那样往里边添加新的编解码。)
视频编解码
大体上和语音的类似,新版本的OpenH323里边静态连接了H261编解码。
使用遵守RFC2190的H263视频编解码,例如FFMPEG,需要重新编译OpenH323,在应用程序中使用的时候需要对程序进行修改
1. Add '#include "rfc2190avcodec.h" '
2. Add the required capability called "H323_RFC2190_H263Capability"
--------------------------------------------------------------------------