专利名称:一种控制网络语音通讯音频设备的方法及装置的制作方法
技术领域:
本发明涉及音频设备的使用方法,尤其涉及添加外部音频设备后多个网络语音通讯模块共用外部音频设备的方法。
背景技术:
目前网络通讯终端之间可以通过网络语音通讯模块进行网络语音通讯,实现语音通讯功能的音频设备包括终端上的系统默认声卡、麦克风以及耳机或音箱。由于用户对麦克风和耳机的体验与传统手持电话的体验不同,为了达到与传统语音通讯相似的用户体验,通常为网络通讯终端添加与传统语音通讯类似的外部音频设备作为处理该网络通信业务的专用音频设备,例如在网络语音通讯业务中使用USB Phone即USB接口的电话进行语音通讯。该USB Phone通过USB接口与终端连接。USB Phone设备具有集成录放功能的音频设备和键盘输入的人体学输入设备的HID(Human Interface Device,人机对话接口设备)。网络语音通讯模块与USB Phone设备连接后,网络语音通讯业务通过接收HID传送的按键消息,进行拨号、呼叫以及结束等操作。通过网络语音通讯业务和USB Phone设备的配合使用,可使网络电话在用户体验上达到与传统电话同等的效果。
在一个终端上,通常允许同时运行多个网络语音通讯模块,由于多个网络语音通讯模块同时运行时,只允许有一个网络语音通讯模块使用并控制USBPhone设备,即同时只允许一个网络语音通讯模块获得USB Phone设备的控制权,因此需要解决如何控制多个网络语音通讯模块使用一个USB Phone设备的问题。
目前网络语音通讯模块通过一个拨号软件Dialer控制USB Phone设备,并接受从USB Phone上报的消息。现有技术中的拨号软件为可执行程序,被网络语音通讯模块调用,实现连接和控制网络语音通讯模块和USB Phone设备。控制网络语音通讯音频设备的方法,通过可执行程序为用户提供一个交互界面,当某个网络语音通讯模块需要建立与USB Phone的连接时,通过该交互界面选择需要建立连接的网络语音通讯模块。
但是,由于目前的拨号软件需要在用户安装完网络语音通讯模块后,另外安装一个可执行程序,并且在运行时需要用户人工切换对USB Phone的控制权,同时系统启动两个进程才可以使用USB Phone设备,因此给用户操作过程复杂,程序不便于维护,并且使操作系统增加一个进程的资源开销。
发明内容
本发明要解决的技术问题在于提供一种控制网络语音通讯音频设备的方法及装置,能够减少用户的人为操作过程,提高用户体验,同时减少系统的开销。
为解决上述技术问题,本发明提供了一种控制网络语音通讯音频设备的方法,网络语音通讯软件调用动态链接库控制音频设备,所述控制过程包括步骤1)判断是否存在处于激活状态的动态链接库,若有则进入步骤2),若无则获取音频设备的控制权2)判断是否存在处于通话状态的动态链接库,若有则结束本流程,若无则获取音频设备的控制权。
步骤1)之前还包括设置共享数据单元,用于记录处于激活状态的动态链接库标识;以及处于激活状态的动态链接库是否处于通话状态。
步骤1)中所述获取音频设备的控制权包括11)将共享数据单元中的处于激活状态的动态链接库标识修改为当前欲获取控制权的动态链接库标识;12)将当前处于激活状态的动态链接库标识设为处于通话状态。
步骤2)中所述获取音频设备的控制权包括21)将共享数据单元中的处于激活状态的动态链接库标识修改为欲获取控制权的动态链接库标识;22)将当前处于激活状态的动态链接库标识设为处于通话状态。
所述控制过程还包括动态链接库定期访问共享数据单元,包括以下步骤31)判断共享数据单元中处于激活状态的动态链接库标识是否为0,若是则将其修改为访问的动态链接库标识,若否进入步骤32);32)判断判断共享数据单元中处于激活状态的动态链接库标识是否与访问的动态链接库相同,若相同则结束本流程,若不同则进入步骤33);33)将当前访问的动态链接库标识设为处于通话状态。
本发明还提供了一种控制网络语音通讯音频设备的装置,包括至少一个动态链接库,供相应的网络语音通讯模块调用;共享数据单元,用于各个动态链接库之间的通讯,实现对音频设备的控制。
所述共享数据单元记录当前获得音频设备控制权的动态链接库标识;以及当前所述音频设备的通话状态;所述动态链接库获取所述共享数据单元记录的信息,并根据该信息获取对所述音频设备的控制权所述共享数据单元包括计数器,用于网络语音通讯模块启动时为相应的动态链接库分配动态链接库标识;第一存储单元,用于记录当前获得音频设备控制权的动态链接库标识;第二存储单元,用于记录音频设备当前的通讯状态。
与现有技术相比,本发明的有益效果是本发明所述的控制网络语音通讯音频设备的方法及装置通过使用动态链接库来代替现有技术中的可执行程序,减少了系统资源开销,同时通过与共享数据单元的配合使用,实现对外部音频设备控制权的自动切换,从而减轻用户负担,便于程序维护。
另外,本发明在访问所述共享数据单元时,进行加锁处理,从而保证数据的一致性。
本发明通过设置访问所述共享数据单元的周期,对所述共享数据单元记录的信息进行更新,保证了共享数据单元记录信息的正确性。
图1是本发明所述的控制网络语音通讯音频设备的方法的原理图;图2是第二实施例中共享数据单元的结构示意图;图3是第二实施例中启动网络语音通讯模块时获取音频设备控制权的流程图;图4是第二实施例中网络语音通讯模块运行时切换音频设备控制权的流程图;图5是第二实施例中更新共享数据单元记录的信息的流程图;图6是第二实施例中释放音频设备控制权的流程图。
具体实施例方式
本发明提供的控制网络语音通讯音频设备的方法,通过网络语音通讯模块调用动态链接库实现对所述音频设备进行控制。由于每个动态链接库都是执行一样的程序,彼此都不知道其它动态链接库的状态,进而无法获悉当前获得音频设备控制权的动态链接库,以便在某个网络语音通讯模块需要与音频设备建立连接时能够使该网络语音通讯模块对应的动态链接库及时获取音频设备的控制权,本发明在网络语音通讯模块中预先设置共享数据单元,并在该共享数据单元记录当前获得音频设备控制权的动态链接库标识;以及当前所述音频设备的通讯状态;当某个动态链接库获取音频设备的控制权时,根据所述共享数据单元记录的信息获取对所述音频设备的控制权,由于当前音频设备的控制权发生变更,因此为了保证共享数据单元记录的数据的正确性需要修改所述共享数据单元记录的信息。
本发明还可以在每个动态链接库中保存动态链接库的激活状态信息,所述激活状态是指获得音频设备的控制权。当某个动态链接库获取音频设备的控制权时,根据所述共享数据单元记录的信息以及动态链接库的激活状态信息获取对所述音频设备的控制权。
另外,由于共享数据单元是由多个动态链接库共同访问的,因此,在访问共享数据单元之前,必须先对共享数据单元进行加锁处理,完成修改后作去锁处理。以保证同时只有一个共享数据单元在访问共享数据单元,从而保证了数据的一致性。
若某个网络语音通讯模块需要通过音频设备通信,则通知其对应的动态链接库访问共享数据单元,该动态链接库首先查看当前获得音频设备控制权的动态链接库,本发明所述的根据所述共享数据单元记录的信息获取对所述音频设备的控制权,分为以下几种情况。
当某个网络语音通讯模块启动时,如果当前没有动态链接库占有所述音频设备的控制权,则直接获取所述音频设备的控制权,并在共享数据单元记录当前动态链接库为获得音频设备控制权的动态链接库;如果某个网络语音通讯模块启动时已经有其他的网络语音通讯模块对应的动态链接库获取所述音频设备的控制权,则退出该共享访问区。
当某个网络语音通讯模块运行时,当前存在获得音频设备控制权的动态链接库,但是该动态链接库对应的网络语音通讯模块未处于通信状态时,当其他网络语音通讯模块接收到呼入请求时,则处于非激活状态的动态链接库需要获取音频设备的控制权,并在共享数据单元记录当前动态链接库为获得音频设备控制权的动态链接库。相反,如果当前获得音频设备控制权的动态链接库对应的网络语音通讯模块处于通信状态,则向该访问共享数据单元的动态链接库对应的网络语音通讯模块报告,然后退出该共享数据单元。
另外,由于动态链接库只能单向地访问共享数据单元,共享数据单元不能主动向动态链接库传递信息,而必须存在一个获得音频设备控制权的动态链接库,因此,本发明设置访问共享数据单元的周期,使动态链接库定期访问共享数据单元的内容,以便及时更新状态。当到达所述预先设置的访问周期时,如果当前音频设备无人占用,例如占用该音频设备的动态链接库对应的网络语音通讯模块退出了。则访问共享数据单元的动态链接库获取当前对音频设备的控制权,并修改共享数据单元的相应信息。如果存在获得当前音频设备控制权的动态链接库,则需要进一步判断该动态链接库是否是正在访问共享数据单元的动态链接库,如果是,则说明状态相符,不作处理,退出;如果否,并且该动态链接库处于激活状态,则说明说明控制权已经被其它动态链接库获取,状态不一致,那么,需要改该动态链接库的状态。如果处于非激活状态,则状态一致,不作处理,退出。
当动态链接库对应的网络语音通讯模块退出时,需要对共享数据单元记录信息进行更新,即如果该动态链接库为当前获得音频设备控制权的动态链接库,则释放对音频设备的控制权。当然,如果当前音频设备的控制权已经被其它动态链接库获取,或者该动态链接库没有获得音频设备的控制权,则不修改共享数据单元记录的信息,直接退出。
与上述控制网络语音通讯音频设备的方法相配合,本发明还提供一种控制网络语音通讯音频设备的装置,包括至少一个动态链接库,供相应的网络语音通讯模块调用;以及共享数据单元,用于记录当前获得音频设备控制权的动态链接库标识;以及当前所述音频设备的通讯状态;所述动态链接库获取所述共享数据单元记录的信息,并根据该信息获取对所述音频设备的控制权。所述共享数据单元包括计数器,用于为初次访问所述共享数据单元的动态链接库分配动态链接库标识;第一存储单元,用于记录当前获得音频设备控制权的动态链接库标识;第二存储单元,用于记录当前所述音频设备的通讯状态。同样,为了保证数据的一致性所述动态链接库还用于对所述共享数据单元加锁和去锁。同样,为了对共享数据单元的记录的信息即使更新,所述动态链接库还包括定时单元,用于设置访问所述共享数据单元的周期,当到达所述共享数据单元的周期时,对该共享数据单元进行访问。同样,当某个网络语音通讯模块退出时,如果其对应的动态链接库为当前获得音频设备的控制权的动态链接库,则需要将所述控制权进行释放。
以下详细阐述本发明的实现过程。
网络语音通讯模块通常另外添加音频设备进行网络通信。在网络语音通讯业务中使用USB Phone即USB接口的电话进行语音通讯。该USB Phone通过USB接口与终端连接。USB Phone设备具有集成录放功能的音频设备和键盘输入的人体学输入设备的HID(Human Interface Device,人机对话接口设备)。网络语音通讯模块与USB Phone设备连接后,网络语音通讯业务通过接收HID传送的按键消息,进行拨号、呼叫以及结束等操作。通过网络语音通讯业务和USB Phone设备的配合使用,可使网络电话在用户体验上达到与传统电话同等的效果。
网络语音通讯模块通过拨号软件Dialer来控制UsbPhone设备,并接受从UsbPhone上报的消息。拨号软件可以是一个可执行程序,独立存在;或者是一个动态链接库,供网络语音通讯模块调用。在本实施例中,控制音频设备的装置包括至少一个拨号软件Dialer,通过该拨号软件控制USB Phone设备,并接受从USB Phone上报的消息。为了避免使用额外的可执行程序控制不同网络语音通讯模块间的音频设备切换,本实施例中的拨号软件Dialer采用动态链接库方式,网络语音通讯模块通过调用动态链接库,建立与音频设备的连接。如图1所示,每个网络语音通讯模块对应一个动态链接库,将该动态链接库命名为Dialer.dll。每个动态链接库Dialer.dll必须知道当前是自己是否具有USB Phone设备的控制权,并且,当其他网络语音通讯模块进行通信时,还需要有相应的自动控制权切换方法。以下通过五个方面进行阐述共享数据单元的规划、Dialer的启动设置、控制权抢夺方案、心跳处理、Dialer退出处理。以下就其实现过程列举两个具体实施例进行详细阐述。
第一实施例在本实施例中,对于每个Dialer.dll,记录Dialer ID变量,作为Dialer.dll的唯一标识,即本发明所述的动态链接库标识。Dialer ID从l开始计数。
由于每个Dialer.dll都是执行一样的程序,彼此都不知道其它Dialer的状态,因此,在本实施例中设定一共享数据单元,用于不同动态链接库之间的通讯。所述共享数据单元包括三个信息,分别由所述共享数据单元的计数器、第一存储单元和第二存储单元完成;“Dialer.dll计数器”用于给每个刚启动的Dialer.dll分配Dialer ID,初始值为1;第一存储单元在本实施例中存储“当前激活的DialerID”信息,记录目前唯一一个激活的Dialer ID,每个Dialer可以通过访问共享数据单元的这个域来了解当前哪个Dialer处于激活状态,例如,“当前激活的Dialer ID”的初始值为0,表示USB Phone未被任何Dialer占用;“当前激活的Dialer ID”值非0时,则表示USB Phone已被某个Dialer占用;第二存储单元存储“当前激活的DialerID是否处于通话状态”信息,即本发明所述的当前音频设备的通讯状态信息,记录激活的Dialer的通话状态,例如,以“true”表示处于通话状态;“false”表示处于非通话状态。
因为共享数据单元是多个Dialer共同访问的,所以,在修改共享数据单元之前,必须先对共享数据单元进行加锁处理,完成修改后作去锁处理。以保证同时只有一个Dialer在访问共享数据单元,从而保证了数据的一致性。每个Dialer的Dialer ID值通过共享数据单元的“计数器”获取,同样也保证了DialerID的唯一性。接下来,判断USB Phone设备是否被其它Dialer占用。如果“当前激活Dialer ID”值为0,表示无人占用,这时,该Dialer占用USB Phone设备,将自己的Dialer ID填入“当前激活的Dialer ID”;相反,如果“当前激活的DialerID”值非0,则表示USB Phone已经被某个Dialer占用,则对共享数据单元内容不作修改。
根据上述处理,多个Dialer启动时,只有第一个Dialer能获取USB Phone的控制权。
当处于获得USB Phone的Dialer没有通话时,用户呼叫其它Dialer,则没有USB Phone控制权的Dialer可以抢夺USB Phone的控制权,具体流程如下当有用户呼入时,读取共享数据单元“当前激活的Dialer ID”值,该值如果为0,则表示当前没有任何Dialer占用USB Phone,进而占用USB Phone的控制权,修改共享数据单元相应数据段,之后退出。如果取出的“当前激活DialerID”值不是0,则说明其它Dialer占用了USB Phone,这时,进一步读取“是否通话”值,如果占用的Dialer正在处于通话过程,则不能抢夺控制权,这时,应该向上层的网络语音通讯模块报告,USB Phone被其它Dialer所占用;如果占用的Dialer不处于通话过程,则进行控制权抢夺操作,占用USB Phone的控制权,修改共享数据单元相应数据段。
由于Dialer只能单向地访问共享数据单元,共享数据单元不能主动向Dialer传递信息,因此在本实施例中设置访问共享数据单元的周期,使Dialer定期访问共享数据单元内容,以便及时更新状态。具体为,设置一个定时器,例如Dialer间隔5秒执行一次心跳处理,首先,取出共享数据单元中的“当前激活Dialer ID”值,如果为0,表示当前USB Phone设备无人占用,可能的原因是,占用的Dialer所在的网络语音通讯模块程序退出了。这时,按照上文所述方法占用USB Phone的控制权,修改共享数据单元相应数据段。
当Dialer所在的网络语音通讯模块退出时,必须对共享数据单元内容进行更新,当Dialer所在的网络语音通讯模块退出时,首先判断自己是否处于为当前获得音频设备的动态链接库,如果不是,则不必修改共享数据单元,直接退出;如果是,则进一步和共享数据单元的“当前激活Dialer ID”值进行比较,如果值不同,说明其它Dialer已经抢夺了控制权,这时,同样不修改共享数据单元内容,直接退出,如果比较结果两者值相同,说明状态一致,当前Dialer正占用着USB Phone的控制权,这时,应该释放控制权,以便让其它未退出的Dialer能使用USB Phone。所以,将共享数据单元中的“当前激活Dialer ID”值改为初始值0,表示当前没有任何Dialer占用USB Phone设备。
第二实施例本实施例与第一实施例的差别在于,对于每个Dialer.dll,记录了两个状态变量,一为Dialer ID变量,记录Dialer.dll的唯一标识,即本发明所述的动态链接库标识,Dialer ID从1开始计数;二为Active变量,即本发明所述的动态链接库的激活状态,记录本Dialer.dll是否处于激活状态。所谓激活状态,即获得USB Phone的控制权,同时只能有一个动态链接库处于激活状态。
由于每个Dialer.dll都是执行一样的程序,彼此都不知道其它动态链接库的状态,因此,在本实施例中设定一共享数据单元,用于不同动态链接库之间的通讯。如图2所示所述共享数据单元包括三个信息,分别由所述共享数据单元的计数器、第一存储单元和第二存储单元完成;“Dialer.dll计数器”用于给每个刚启动的Dialer.dll分配Dialer ID,初始值为1;第一存储单元在本实施例中存储“Dialer.dll计数器”用于给每个刚启动的Dialer.dll分配Dialer ID,初始值为1;“当前激活的Dialer ID”记录目前唯一一个激活的Dialer ID,每个动态链接库可以通过访问共享数据单元的这个域来了解当前哪个动态链接库处于激活状态,例如,“当前激活的Dialer ID”的初始值为0,表示USB Phone未被任何动态链接库占用;“当前激活的Dialer ID”的值非0,则表示USB Phone已被某个动态链接库占用;第二存储单元存储“当前激活的Dialer ID是否处于通话状态”信息,记录激活的动态链接库的通话状态,即本发明所述的音频设备当前的通讯状态,例如,以“true”表示处于通话状态;“false”表示处于非通话状态。
如图3所示,因为共享数据单元是多个动态链接库共同访问的,所以,每个网络语音通讯模块对应的动态链接库在修改共享数据单元之前,必须先对共享数据单元进行加锁处理(S0),完成修改后作去锁处理(S8)。以保证同时只有一个动态链接库在访问共享数据单元,从而保证了数据的一致性。每个动态链接库的Dialer ID值通过共享数据单元的“计数器”获取(S1),同样也保证了Dialer ID的唯一性。然后共享数据单元中的计数器值加一(S2)。接下来,判断USB Phone设备是否被其它动态链接库占用(S3)。如果“当前激活DialerID”值为0,表示无人占用,这时,该动态链接库占用USB Phone设备,将自己的Dialer ID填入“当前激活Dialer ID”(S4),进一步修改是否通话为未通话状态(S5),并修改Active变量为激活状态(S6);相反,如果“当前激活Dialer ID”值非0,则表示USB Phone已经被某个Dialer占用,这时,直接修改Active变量为非激活状态(S7),对共享数据单元内容不作修改。
当处于激活状态的Dialer没有通话时,用户呼叫其它Dialer,则处于非激活状态的Dialer可以抢夺USB Phone的控制权,具体流程如图4所示当有用户呼入时,判断本Dialer是否处于激活状态(S1),如果已经处于激活状态,则退出(S2),不必进行控制权抢夺操作。如果处于非激活状态,在修改共享数据单元之前,先对共享数据单元进行加锁处理(S3),则读取共享数据单元的“当前激活Dialer ID”值,判断是否为0(S4),该值如果为0,则表示当前没有任何Dialer占用USB Phone,进而占用USB Phone的控制权,修改共享数据单元相应数据段,即将“当前激活Dialer ID”值修改为本Dialer的Dialer ID值(S5),将“是否处于通话状态”修改为否(S6),并把Active置为激活状态(S7),之后退出。如果取出的“当前激活Dialer ID”值不是0,则说明其它Dialer占用了USB Phone,这时,进一步读取“是否通话”值(S8),如果占用的Dialer正在处于通话过程,则不能抢夺控制权,这时,应该向上层的网络语音通讯模块报告,USB Phone被其它Dialer所占用(S9);如果占用的Dialer不处于通话过程,则进行控制权抢夺操作,占用USB Phone的控制权,修改共享数据单元相应数据段,即“当前激活的Dialer ID值”和“当前激活的Dialer ID是否处于通话”(S10、S11),并把Active置为激活状态(S13),修改完毕后,将共享数据单元去锁(S12)。
由于Dialer只能单向地访问共享数据单元,共享数据单元不能主动向Dialer传递信息,因此在本实施例中设置了访问共享数据单元的周期,使Dialer定期访问共享数据单元内容,以便及时更新状态。具体为,设置一个定时器,例如Dialer间隔5秒执行一次心跳处理,具体的理流程如图5所示在修改共享数据单元之前,必须先对共享数据单元进行加锁处理(S0),完成修改后作去锁处理(S9),首先,取出共享数据单元中的“当前激活DialerID”值,判断是否为0(S1),如果为0,表示当前USB Phone设备无人占用,可能的原因是,占用的Dialer所在的网络语音通讯模块程序退出了。这时,按照上文所述方法占用USB Phone的控制权,修改共享数据单元相应数据段,将“当前激活Dialer ID”值修改为本Dialer的Dialer ID值(S2),将“是否处于通话状态”修改为否(S3)并把Active置为激活状态(S4)。如果“当前激活Dialer ID”值不为0,则和本Dialer ID值相比较(S5),判断是否相同(S6),如果相同,说明状态相符,不作处理,退出(Sl0);如果不同,说明当前激活的Dialer不是自己,进一步再判断自己是否处于激活状态(S7),如果是,说明控制权已经被其它Dialer抢夺,状态不一致,那么,就要修改Active变量为非激活状态(S8)。如果处于非激活状态,则状态一致,不作处理,退出(S10)。
当Dialer所在的网络语音通讯模块退出时,必须对共享数据单元内容进行更新,具体操作如图6所示当Dialer所在的网络语音通讯模块退出时,首先判断自己是否处于激活状态(S1),如果不是,则不必修改共享数据单元,直接退出(S8);如果处于激活状态,在修改共享数据单元之前,必须先对共享数据单元进行加锁处理(S2),取出共享数据单元中的“当前激活的Dialer ID值”(S3),则进一步和共享数据单元的“当前激活Dialer ID”值进行比较(S4),判断是否相同(S5),如果值不同,说明其它Dialer已经抢夺了控制权,这时,同样不修改共享数据单元内容,直接退出,如果比较结果两者值相同,说明状态一致,当前Dialer正占用着USB Phone的控制权,这时,应该释放控制权,以便让其它未退出的Dialer能使用USB Phone。所以,将共享数据单元中的“当前激活Dialer ID”值改为初始值0(S6),表示当前没有任何Dialer占用USB Phone设备,完成修改后作去锁处理(S7)。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种控制网络语音通讯音频设备的方法,网络语音通讯软件调用动态链接库控制音频设备,其特征在于所述控制过程包括步骤1)判断是否存在处于激活状态的动态链接库,若有则进入步骤2),若无则获取音频设备的控制权2)判断是否存在处于通话状态的动态链接库,若有则结束本流程,若无则获取音频设备的控制权。
2.根据权利要求1所述的控制网络语音通讯音频设备的方法,其特征在于,步骤1)之前还包括设置共享数据单元,用于记录处于激活状态的动态链接库标识;以及处于激活状态的动态链接库是否处于通话状态。
3.根据权利要求2所述的控制网络语音通讯音频设备的方法,其特征在于,步骤1)中所述获取音频设备的控制权包括11)将共享数据单元中的处于激活状态的动态链接库标识修改为当前欲获取控制权的动态链接库标识;12)将当前处于激活状态的动态链接库标识设为处于通话状态。
4.根据权利要求2或3所述的控制网络语音通讯音频设备的方法,其特征在于,步骤2)中所述获取音频设备的控制权包括21)将共享数据单元中的处于激活状态的动态链接库标识修改为欲获取控制权的动态链接库标识;22)将当前处于激活状态的动态链接库标识设为处于通话状态。
5.根据权利要求2所述的控制网络语音通讯音频设备的方法,其特征在于所述控制过程还包括动态链接库定期访问共享数据单元,包括以下步骤31)判断共享数据单元中处于激活状态的动态链接库标识是否为0,若是则将其修改为访问的动态链接库标识,若否进入步骤32);32)判断判断共享数据单元中处于激活状态的动态链接库标识是否与访问的动态链接库相同,若相同则结束本流程,若不同则进入步骤33);33)将当前访问的动态链接库标识设为处于通话状态。
6.根据权利要求2、3、5中任一项所述的控制网络语音通讯音频设备的方法,其特征在于,还包括在访问所述共享数据单元时,对所述共享数据单元加锁,以及退出所述共享数据单元时,对所述共享数据单元去锁。
7.一种控制网络语音通讯音频设备的装置,其特征在于,包括至少一个动态链接库,供相应的网络语音通讯模块调用;共享数据单元,用于各个动态链接库之间的通讯,实现对音频设备的控制。
8.根据权利要求7所述的控制网络语音通讯音频设备的装置,其特征在于,所述共享数据单元记录当前获得音频设备控制权的动态链接库标识;以及当前所述音频设备的通话状态;所述动态链接库获取所述共享数据单元记录的信息,并根据该信息获取对所述音频设备的控制权。
9.根据权利要求8所述的控制网络语音通讯音频设备的装置,其特征在于,所述共享数据单元包括计数器,用于网络语音通讯模块启动时为相应的动态链接库分配动态链接库标识;第一存储单元,用于记录当前获得音频设备控制权的动态链接库标识;第二存储单元,用于记录音频设备当前的通讯状态。
10.根据权利要求9所述的控制网络语音通讯音频设备的装置,其特征在于,还包括定时单元,用于设置访问所述共享数据单元的周期。
全文摘要
一种控制网络语音通讯音频设备的方法,网络语音通讯软件调用动态链接库控制音频设备,所述控制过程包括步骤1)判断是否存在处于激活状态的动态链接库,若有则进入步骤2),若无则获取音频设备的控制权;2)判断是否存在处于通话状态的动态链接库,若有则结束本流程,若无则获取音频设备的控制权。本发明还提供了一种控制网络语音通讯音频设备的装置,包括至少一个动态链接库,供相应的网络语音通讯模块调用;共享数据单元,用于各个动态链接库之间的通讯,实现对音频设备的控制。
文档编号H04M7/00GK1909570SQ20051008835
公开日2007年2月7日 申请日期2005年8月2日 优先权日2005年8月2日
发明者王麒 申请人:腾讯科技(深圳)有限公司