opal 视频制式

html-css023

opal 视频制式,第1张

OPAL是Open Phone Abstraction Library的字母缩写,仍然是Equivalence公司开发的开源VoIP协议栈,从2001年便开始开发了,直到现在还没有正式发布过一个版本,只能从CVS: 下载最新的版本,而且现在的2.05bate版有着非常多的问题,但这些丝毫不能阻止我对OPAL的看好。OPAL仍然采用PWLIB作为开发库,最新的PWLIB实际已经只剩PTLIB,Equivalence公司已经停止了对PWLIB的GUI开发了,GUI全面转向更为强大的wxWindows。OPAL作为Openh323的下一代协议栈最大的特点是加入了对SIP协议的支持,OPAL保留了Openh323大部分代码,并加入了对EndPoint,Connection等抽象描述的基类,使得添加新的协议和设备变得更加简单和方便。

OPAL中最重要的类是新加的:OpalManager,它跟Openh323中的H323EndPoint地位一样,它定义了OPAL系统中最基本的操作,所以每个应用程序必须从OpalManager派生一个类,然后重载虚函数实现自己的操作。

OpalManager::SetUpCall(partyA,partyB,token)呼叫,partyA是会话发起人,partyB是会话接受人

OpalManager::OnIncomingConnection(connection)接听,返回TRUE则接听,返回FLASH则拒绝

OpalManager::AdjustMediaFormats(connection,mediaFormats)调整媒体格式

OpalManager::ClearCall(token,reason,sync) 清除呼叫,sync如果为NULL则不等待快速返回

OpalEndPoint是描述端点的基类,H323,SIP,PSTN,IVR,LID,声卡的端点都是继承于这个类,在这里值得注意的是连声卡设备也看做一种端点。

OpalPCSSEndPoint则是EndPoing中比较重要的一个类,毕竟打电话还是声卡用的多,OpalPCSSEndPoint的构造函数必须引用派生的OpalManager类的实例。

下面具体例子SimpleOPAL来讲解:

opal = new MyManager//新建一个MyManager的实例

if (opal->Initialise(args)) //调用MyManager::Initialise()函数初始化

opal->Main(args)//等待用户输入命令

cout <<Exiting <<GetName() <<endl

delete opal//擦pp

部分Initialise()函数代码:

SetVideoInputDevice(video)//设置输入视频设备

...

SetVideoOutputDevice(video)//输出视频设备

...

SetAudioJitterDelay(minJitter, maxJitter)//声音抖动缓存的最小和最大值

...

SetMediaFormatMask(args.GetOptionString(D).Lines())//屏蔽的媒体格式

SetMediaFormatOrder(args.GetOptionString(P).Lines())//媒体格式的使用顺序

...

SetTranslationAddress(args.GetOptionString(translate))//设置外部IP地址

...

Set***Ports(rgs.GetOptionString(tcp-base).AsUnsigned(),

args.GetOptionString(tcp-max).AsUnsigned())//设置相关的端口

SetSTUNServer(args.GetOptionString(stun))//使用STUN服务器

...

pcssEP = new MyPCSSEndPoint(*this)//新建一个MyPCSSEndPoint实例

pcssEP->SetSoundDevice(args, sound, PSoundChannel::Recorder)//设置相关的播放声音设备

...

h323EP = new H323EndPoint(*this)//h323EP的初始化

h323EP->DisableFastStart(args.HasOption(f))//关闭快速拨号模式

h323EP->DisableH245Tunneling(args.HasOption(T))//关闭H245通道模式

h323EP->AddAliasName(aliases[i])//添加昵称

h323EP->SetInitialBandwidth(initialBandwidth)//限制带宽

h323EP->StartListeners(listeners) //现在才开始监听,默认是TCP:1720

h323EP->SetGatekeeperPassword(args.GetOptionString(p))//注册网守所需的密码

h323EP->UseGatekeeper(gkHost, gkIdentifer, gkInterface) //注册网守

...

sipEP = new SIPEndPoint(*this)//SIP也来了

sipEP->SetUserAgent(args.GetOptionString(sip-user-agent))//设置用户代理,UserAgent就相当于最初openh323的endpoint

sipEP->SetProxy(args.GetOptionString(sip-proxy))//设置SIP代理,此处proxy相当于h323里的Gatekeeper

sipEP->SetMIMEForm(args.HasOption(use-long-mime))//MIME头的格式

sipEP->StartListeners(listeners) //监听开始,默认是TCP:5060和UDP:5060

Main()函数部分代码:

if (pcssEP != NULL && !pcssEP->incomingConnectionToken) { //小心,有电话来了

if (cmd == n)

pcssEP->ClearCall(pcssEP->incomingConnectionToken, //打死我都不接

OpalConnection::EndedByRefusal)

else if (cmd == y)

pcssEP->AcceptIncomingConnection(pcssEP->//喂,小莉吗?

incomingConnectionToken)

}

...

OpalCall * call = FindCallWithLock(currentCallToken)//让我看看是那一个通话

if (call != NULL) {

cout <<Clearing call <<*call <<endl

call->Clear()//废话那么多,打IP电话也要钱的,挂拉

call->Unlock()

...

if (potsEP != NULL) //是打电脑还是打座机呢?

SetUpCall(pots:*, params[1], currentCallToken)//打座机吧(PSTN)

else

SetUpCall(pc:*, params[1], currentCallToken)//打电脑不要钱,嘿嘿

OPAL中的例子MFC根本无法使用,Openphone的GUI使用了wxWindows,所以必须安装了wxWindows才能正常编译,opalgw这玩意我试过好多次根本无法让别人注册,看来OPAL要走的路还很长,不过Equivalence公司开发已经渐渐的从Openh323转向了OPAL,相信不久一个稳定的OPAL将会被发布.

这个得用js来实现,楼上一些人可能没看清楼主说的,

楼主是说判断,如果p的子元素是a,那么设置red,而不是只设置p

css不能又判断,但是css中可以加入js, 但是这样影响加载,

结果只能是js来运行

近日发现论坛上有篇关于ie下不能复制粘贴的求助,当时看并没太在意,只当成一般的右键无法使用的情况。昨天,本人在处理一台病毒机器后,意外的发现自己也碰到了这种情况,系统不能复制粘贴、拖动、ie窗口下的下级链接不能打开、无法使用搜索功能等等现象。这是怎么回事?

本人开始检查系统,在进行sreng扫描时程序提示系统rpc服务出错,现进行自动修复。难道是rpc服务造成的吗?通过检查发现系统rpc服务被病毒修改成:c:windowssystem32svchost.exe

rpcss

c:windowssystem32srpcss.dll,srpcss.dll文件为病毒文件,正常文件应为c:windowssystem32

pcss.dll。病毒文件被杀软删除后该服务被停用,此时就是重新开启服务也是不可能达到的。后通过修改注册表数值来修复该服务,重启后一切恢复正常。

简单分析下,病毒修改svchost.exe的参数用于启动病毒文件进行破坏。删除病毒文件就造成rpc服务被停用,于是就发现了上述的各种现象。它用于本地计算机的远程程序调用服务,是本地网络的公用服务。这个服务对你系统的正常运行是非常重要的。

处理方法,先找到rpcss.dll文件进行检查,看文件是否正常。然后打开注册表编辑器,搜索srpcss.dll文件,将所有搜索到的有关srpcss...近日发现论坛上有篇关于ie下不能复制粘贴的求助,当时看并没太在意,只当成一般的右键无法使用的情况。昨天,本人在处理一台病毒机器后,意外的发现自己也碰到了这种情况,系统不能复制粘贴、拖动、ie窗口下的下级链接不能打开、无法使用搜索功能等等现象。这是怎么回事?

本人开始检查系统,在进行sreng扫描时程序提示系统rpc服务出错,现进行自动修复。难道是rpc服务造成的吗?通过检查发现系统rpc服务被病毒修改成:c:windowssystem32svchost.exe

rpcss

c:windowssystem32srpcss.dll,srpcss.dll文件为病毒文件,正常文件应为c:windowssystem32

pcss.dll。病毒文件被杀软删除后该服务被停用,此时就是重新开启服务也是不可能达到的。后通过修改注册表数值来修复该服务,重启后一切恢复正常。

简单分析下,病毒修改svchost.exe的参数用于启动病毒文件进行破坏。删除病毒文件就造成rpc服务被停用,于是就发现了上述的各种现象。它用于本地计算机的远程程序调用服务,是本地网络的公用服务。这个服务对你系统的正常运行是非常重要的。

处理方法,先找到rpcss.dll文件进行检查,看文件是否正常。然后打开注册表编辑器,搜索srpcss.dll文件,将所有搜索到的有关srpcss.dll的位置改成rpcss.dll。接下来在运行中打入services.msc,找到remote

procedure

call

(rpc),右键点启动。重启后将一切恢复正常。