CROSS REFERENCE TO RELATED APPLICATIONSThis application claims priority and the benefits of the earlier filed Provisional U.S. Application No. 61/859,358, filed Jul. 29, 2013, which is incorporated by reference for all purposes into this specification.
TECHNICAL FIELDThis disclosure relates to unified communication systems. More specifically, this disclosure invention relates to a system for a virtual multipoint control unit for unified communications.
BACKGROUND ARTSeveral Unified Communications (UC) software applications have proliferated into the enterprise communications market. These applications allow end-users to communicate using voice, video, application and data sharing, instant messaging, etc. A few examples of these applications include Microsoft Lync, Skype, IBM Sametime, Cisco IP Communicator, etc.
Most of these applications use different call control protocols and media formats (i.e. video/audio encoding and decoding formats), making them incompatible with each other. For example, Microsoft Lync uses a proprietary implementation of the Session Initiation Protocol (SIP) that is different from that being implemented by Skype for call negotiation. In addition, various UC applications typically operate with different media formats, thereby causing these applications to become incompatible with each other for communicating audio, video, or data streams. As a result, the communication among these applications is facilitated by a multipoint control unit, which may be implemented as standalone hardware or a web-based service via a central host performing call signaling and media transcoding. The standalone hardware is extremely costly whereas the web-based central host does not support ad-hoc communication among the UC applications running on terminals that are not connected to the same central host.
Further, the multipoint control unit typically allows multiple UC applications to access local hardware devices in a mutually exclusive manner. For e.g., video data streams from one UC application are temporarily restricted from being played on a local hardware device such as a display device while the device is in use by another UC application. As a result, the multipoint control unit induces an unwanted delay during execution of simultaneously received data streams from different UC applications
Therefore, there exists a need for a system that allows multiple UC applications to access the local hardware devices simultaneously for ad-hoc unified communications.
SUMMARY OF INVENTIONThis disclosure describes a system for a virtual multipoint control unit for unified communications.
In one embodiment, a virtual multipoint control unit is in communication with a plurality of devices over a network. The virtual multipoint control unit comprises a plurality of unified communication (UC) applications, at least one virtual imaging device, at least one virtual audio device, a virtual video mixer, and a virtual audio mixer. The plurality of unified communication (UC) applications is executed on at least one of the plurality of devices. Each of the plurality of UC applications receives an encoded audio data stream and an encoded video data stream. The plurality of UC applications decodes the received audio data and the video data streams. The at least one virtual imaging device is mapped to each of the plurality of UC applications. The at least one virtual audio device is mapped to each of the plurality of UC applications. The virtual video mixer is in communication with a physical imaging device. The virtual video mixer receives the decoded video data stream from each of the plurality of UC applications via the at least one virtual imaging device. The virtual audio mixer is in communication with a physical audio device. The virtual audio mixer receives the decoded audio data stream from each of the plurality of UC applications via the at least one virtual audio device.
In another embodiment, a system for managing communication among a plurality of devices is disclosed. The system is employed within a communication network. The system comprises a communication device and a virtual multipoint control unit. The communication device receives encoded audio and video data streams via a plurality of unified communication (UC) applications. The plurality of UC applications decodes the received encoded audio data stream and the received encoded video data stream. The virtual multipoint control unit is in communication with the communication device. The virtual multipoint control unit comprises at least one virtual imaging device, at least one virtual audio device, a virtual video mixer, and a virtual audio mixer. The at least one virtual imaging device is mapped to each of the plurality of UC applications. The at least one virtual audio device is mapped to each of the plurality of UC applications. The virtual video mixer is in communication with a physical imaging device. The virtual video mixer receives the decoded video data stream from each of the plurality of UC applications via the at least one virtual imaging device. The virtual audio mixer is in communication with a physical audio device. The virtual audio mixer receives the decoded audio data stream from each of the plurality of UC applications via the at least one virtual audio device.
In yet another embodiment, a non-transitory computer readable medium storing a program of instructions executable by the computing device to perform a method for employing a virtual multipoint control unit for unified communications is disclosed. The method comprises receiving, from a plurality of terminals, an encoded audio data stream and an encoded video data stream. The method also comprises decoding, using a plurality of unified communication (UC) applications, the received encoded audio data stream and the received encoded video data stream. The method further comprises mapping, using a virtual multipoint control unit, at least one virtual imaging device and at least one virtual audio device to each of the plurality of UC applications. The method also comprises communicating, using a virtual video mixer, the decoded video data stream to a physical imaging device via the at least one virtual imaging device. Furthermore, the method comprises communicating, using a virtual audio mixer, the decoded audio data stream to a physical audio device via the at least one virtual audio device.
In still another embodiment, a method for managing communication among a plurality of devices is disclosed. The method comprises receiving, from a plurality of terminals, an encoded audio data stream and an encoded video data stream. The method also comprises decoding, using a plurality of unified communication (UC) applications, the received encoded audio data stream and the received encoded video data stream. The method further comprises mapping, using a virtual multipoint control unit, at least one virtual imaging device and at least one virtual audio device to each of the plurality of UC applications. The method also comprises communicating, using a virtual video mixer, the decoded video data stream to a physical imaging device via the at least one virtual imaging device. Furthermore, the method comprises communicating, using a virtual audio mixer, the decoded audio data stream to a physical audio device via the at least one virtual audio device.
Other and further aspects and features of the disclosure will be evident from reading the following detailed description of the embodiments, which are intended to illustrate, and not limit, the present disclosure.
BRIEF DESCRIPTION OF DRAWINGSTo further aid in understanding the disclosure, the attached drawings help illustrate specific features of the disclosure and the following is a brief description of the attached drawings:
FIG. 1A is a schematic that illustrates a first environment for implementing an exemplary virtual multipoint control unit, according to an embodiment of the present disclosure.
FIG. 1B is a schematic that illustrates a second environment for implementing the exemplary virtual multipoint control unit ofFIG. 1A, according to an embodiment of the present disclosure.
FIG. 2A is a schematic that illustrates the exemplary virtual multipoint control unit ofFIG. 1A, according to an embodiment of the present disclosure.
FIG. 2B is a schematic that illustrates an exemplary unified communication application included in the virtual multipoint control unit ofFIG. 1A, according to an embodiment of the present disclosure.
FIG. 3 is a schematic that illustrates a virtualmultipoint control unit300 managing a multipoint video conference, according to an embodiment of the present disclosure.
FIG. 4 is a schematic illustrating implementation of a device driver module of the virtual multipoint control unit for communicating with hardware devices for conducting a video conference, according to an embodiment of the present disclosure.
DISCLOSURE OF EMBODIMENTSThis disclosure describes a system for a virtual multipoint control unit for unified communications. This disclosure describes numerous specific details in order to provide a thorough understanding of the present invention. One skilled in the art will appreciate that one may practice the present invention without these specific details. Additionally, this disclosure does not describe some well known items in detail in order not to obscure the present invention.
In various embodiments of the present disclosure, definitions of one or more terms that will be used in the document are provided below.
An endpoint refers to one or more computing devices capable of establishing a communication channel for exchange of audio, video, textual, or symbolic data in a communication session. Examples of the computing devices may include, but are not limited to, a desktop PC, a personal digital assistant (PDA), a server, a mainframe computer, a mobile computing device (for e.g., mobile phones, laptops, tablets, etc.), an internet appliance, calling devices (for e.g., a telephone, an internet phone, video telephone, etc.).
The numerous references in the disclosure to a system for a virtual multipoint control unit are intended to cover any and/or all devices capable of performing respective operations on endpoints in a unified communication application-based conferencing environment relevant to the applicable context, regardless of whether or not the same are specifically provided.
FIG. 1A is a schematic that illustrates a first environment for implementing an exemplary virtual multipoint control unit, according to an embodiment of the present disclosure. Embodiments are disclosed in the context of environments that represent a multipoint video conference among multiple users via respective endpoints capable of executing one or more computer applications for unified communications in the same communication session. However, other embodiments may be applied in the context of other scenarios (e.g., an audio conference, a webinar, a multiplayer online game, etc.) involving at least one of audio, video, textual, or symbolic (e.g., emoticons, images, etc.) data being communicated among various endpoints in the same communication session. In some embodiments, at least one of the endpoints may execute a unified communication application (UC application) during the session.
Thefirst network environment100 may comprise multiple endpoints including acommunication device102 configured to communicate with terminals104-1,104-2,104-3,104-4, and104-5 (collectively, terminals104) via anetwork106. Thenetwork106 may comprise, for example, one or more of the Internet, Wide Area Networks (WANs), Local Area Networks (LANs), analog or digital wired and wireless telephone networks (e.g., a PSTN, Integrated Services Digital Network (ISDN), a cellular network, and Digital Subscriber Line (xDSL)), radio, television, cable, satellite, and/or any other delivery or tunneling mechanism for carrying data.
Thenetwork106 may comprise multiple networks or sub-networks, each of which may comprise, for example, a wired or wireless data pathway. Thenetwork106 may comprise a circuit-switched voice network, a packet-switched data network, or any other network that is able to carry electronic communications. For example, thenetwork106 may comprise networks based on the Internet protocol (IP) or asynchronous transfer mode (ATM), and may support voice using, for example, VoIP, Voice-over-ATM, or other comparable protocols used for voice data communications. In some embodiments, thenetwork106 may comprise a cellular telephone network configured to enable exchange of textual data, audio data, video data, or any combination thereof between thecommunication device102 and at least one of the terminals104.
Thecommunication device102 may comprise or be coupled with one or more hardware devices either wirelessly or in a wired fashion for enabling a user to dynamically interact with other users via the endpoints connected to thenetwork106. For example, thecommunication device102 may be coupled with an imaging device108 (including, but not limited to, a video camera, a webcam, a scanner, or any combination thereof) and an audio device110 (including, but not limited to, a speaker, a microphone, or any combination thereof). Thecommunication device102 may be compatible with any other device (not shown) connected to thenetwork106 to exchange audio, video, textual or symbolic data streams with each other or any other compatible devices.
In one embodiment, thecommunication device102 may comprise a virtualmultipoint control unit112 configured to, at least one of: (1) create a logical representation of one or more hardware devices in communication with thecommunication device102; (2) establish a communication bridge or channel between the UC applications executed by thecommunication device102, and the corresponding UC applications being executed by at least one of the terminals104; (3) store, manage, and process the multimodal input data streams received from the endpoints and/or associated devices such as theimaging device108 and theaudio device110 connected to thenetwork106; and (4) request services from or deliver services to, or both, various devices connected to thenetwork106.
In one embodiment, the virtualmultipoint control unit112 may facilitate integration of real-time and non-real-time communication services by bridging communication among various UC applications being simultaneously executed on various endpoints, such as thecommunication device102 and the terminals104. Examples of such real-time services may include, but are not limited to, instant messaging, internet protocol (IP) telephony, video conferencing, desktop sharing, data sharing, call control, and speech recognition. Examples of these non-real-time services may include, but are not limited to, voicemail, E-mail, SMS, and fax. Further, examples of UC applications may include, but are not limited to, Microsoft Lync, Skype, IBM Sametime, and Cisco IP Communicator. Each of the UC applications may operate with same or different communication protocols and media formats.
In another embodiment, the virtualmultipoint control unit112 may be implemented as a standalone and dedicated “black box” including hardware and installed software, where the hardware is closely matched to the requirements and/or functionality of the software. Alternatively, the virtualmultipoint control unit112 may be implemented as a software application or a device driver. The virtualmultipoint control unit112 may enhance or increase the functionality and/or capacity of thenetwork106 to which it is connected. The virtualmultipoint control unit112 may be further configured, for example, to perform e-mail tasks, security tasks, network management tasks including IP address management, and other tasks.
In yet another embodiment, the virtualmultipoint control unit112 may be configured to expose its computing environment or operating code to the user, and may comprise related art I/O devices, such as camera, speaker, scanner, keyboard or display. The virtualmultipoint control unit112 may, however, comprise software, firmware or other resources that support remote administration and/or maintenance of the virtual multipoint control unit.
In a further embodiment, the virtualmultipoint control unit112 may comprise at least one processor (not shown) executing machine readable program instructions for performing various operations, such as those discussed above, on the received multimodal input audio, video, textual, or symbolic data stream. The virtualmultipoint control unit112 may comprise, in whole or in part, a software application working alone or in conjunction with one or more hardware resources. Such software applications may be executed by the processor on different hardware platforms or emulated in a virtual environment, discussed below in greater detail. Aspects of the virtualmultipoint control unit112 may leverage known, related art, or later developed off-the-shelf software.
Now turning toFIG. 1B, asecond network environment150 is provided. In this embodiment, the virtualmultipoint control unit112 may be integrated with, or installed on, anetwork appliance152 that is associated with or used to establish thenetwork106. Thenetwork appliance152 may be capable of operating as an interface device to assist exchange of program instructions and data between thecommunication device102 and the terminals104. In some embodiments, thenetwork appliance152 may be preconfigured or dynamically configured to comprise the virtualmultipoint control unit112 integrated with other devices. For example, the virtualmultipoint control unit112 may be integrated with thecommunication device102 or any other device, such as at least one of the terminals104 connected to thenetwork106. Thecommunication device102 may comprise a module (not shown), which introduces thecommunication device102 to thenetwork appliance152, thereby enabling thenetwork appliance152 to invoke the virtualmultipoint control unit112 as a service. Examples of thenetwork appliance152 may include, but are not limited to, a DSL modem, a wireless access point, a router, a base station, and a gateway having a predetermined computing power sufficient for implementing the virtualmultipoint control unit112.
The virtualmultipoint control unit112 and thecommunication device102 may collectively constitute a unified communication system, which may reside in a single device or may be distributed across multiple devices. The unified communication system may be implemented in hardware or a suitable combination of hardware and software, and may comprise one or more software systems operating on a digital signal processing platform. The “hardware” may comprise a combination of discrete components, an integrated circuit, an application-specific integrated circuit, a field programmable gate array, a digital signal processor, or other suitable hardware. The “software” may comprise one or more objects, agents, threads, lines of code, subroutines, separate software applications, two or more lines of code or other suitable software structures operating in one or more software applications or on one or more processors. Embodiments may comprise the unified communication system operating as or in a mobile switching center, network gateway system, Internet access node, application server, IMS core, service node, or some other communication system, including any combination thereof.
Similar to thecommunication device102, each of the terminals104 may be associated with various devices which may include, but are not limited to, a camera, display device, microphone, speakers, and one or more codecs, or any other type of conferencing hardware, or in any combination thereof. The terminals104 may comprise video, voice and data communications capabilities (for e.g., videoconferencing capabilities) by being coupled to or including, various audio devices (e.g., microphones, audio input devices, speakers, audio output devices, telephones, speaker telephones, etc.), various video devices (e.g., monitors, projectors, displays, televisions, video output devices, video input devices, cameras, etc.), various networks (IP, PSTN, etc.) or any combination thereof. Each of the terminals104 may comprise or implement one or more real time protocols, e.g., session initiation protocol (SIP), H.261, H.263, H.264, H.323, among others.
FIG. 2A illustrates the exemplary virtual multipoint control unit ofFIG. 1A, according to an embodiment of the present disclosure. The virtualmultipoint control unit112 may comprise one or more processor(s)202, one or more interface(s)204, and amemory module206. The processor(s)202 may execute a machine readable program comprising instructions for manipulating the received video signal. The processor(s)202 may comprise, for example, microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuits, and/or any devices that manipulate signals based on operational instructions. The virtualmultipoint control unit112 may further comprise, in whole or in part, a software application working alone or in conjunction with one or more hardware resources. Such software applications may be executed by one or more processors on different hardware platforms or emulated in a virtual environment. Aspects of the virtualmultipoint control unit112 may leverage known, related art, or later developed off-the-shelf software. Among other capabilities, the processor(s)202 may be configured to fetch and execute instructions in computerreadable memory module206.
The interface(s)204 may coordinate interactions of the virtualmultipoint control unit112 with at least one of thecommunication device102 and the terminals104 over thenetwork106. The interface(s)204 may comprise a variety of known, related art, or later developed interfaces, such as (1) software interfaces, for example, an application programming interface, a graphical user interface, etc.; (2) hardware interfaces, for example, cable connectors, keyboards, touchscreen, scanners, display screens, etc.; or both. The interface(s)204 facilitate receiving of the audio, video, or data signals, and reliable broadcast or multicast transmissions of one or more encoded output signals.
Thememory module206 may comprise any computer-readable medium known in the art, comprising, for example, volatile memory (e.g., RAM) and/or non-volatile memory (e.g., flash, etc.). Thememory module206 may comprise UC applications208-1, . . . ,208-N (collectively referred to as UC applications208), avirtual video mixer210, avirtual audio mixer212, virtual imaging devices214-1, . . .214-N (collectively, virtual imaging devices214), virtual audio devices216-1, . . . ,216-N (collectively, virtual audio devices216), and adevice driver module218.
The virtualmultipoint control unit112 may be configured to implement various real-time and non-real time communication protocols for rendering and transmitting various audio, video, textual, or symbolic communication signals from theUC applications208. In some embodiments, the virtualmultipoint control unit112 may be configured to determine various characteristics of the endpoints such as thecommunication device102 and the terminals104 for handling the respective received signals. The characteristics may include, but are not limited to, type of endpoint (for e.g., a mobile phone, a laptop, an IP television, etc.), supported video resolution, supported codecs, network connection speed, and so on.
Thevirtual video mixer210 may be configured to receive a decoded video stream from each of theUC applications208 or a physical local imaging device such as theimaging device108, which is associated with thecommunication device102. Thevirtual video mixer210 may be further configured to switch between various video streams received fromdifferent UC applications208 to either continuously display a received video stream while operating in a continuous presence mode, or tile a video stream received from each of theUC applications208 from which a respective audio stream is actively received while operating in a voice-switched mode.
Thevirtual audio mixer212 may be configured to receive an input audio stream either from a physical local audio device such as the audio device110 (for e.g., a microphone) or a virtual audio device216 (for e.g., a virtual sound card) in communication with each of theUC applications208. The virtual audio mixer may use the received audio streams to create a mixed and re-encoded audio stream for being played or transmitted to one ormore UC applications208 simultaneously. The re-encoded audio stream excludes the input audio stream received from its corresponding virtual source, discussed below in greater detail.
Thevirtual imaging devices214 and thevirtual audio devices216 may be logical representations of an imaging device (for e.g., a camera) and an audio device (for e.g., a speaker, a microphone, etc.) with no physical counterparts. Thevirtual imaging device214 may be an image derived from thevirtual video mixer210. Thevirtual imaging device214 may provide either a tiled image of active participants, or an image of the active speaker, received from the respective UC applications, depending on whether thevirtual video mixer210 is operating in voice-switched or mixer (i.e., continuous presence) mode.
Thevirtual audio devices216 may be virtual representations of an audio device, which may be emulated by each of theUC applications208. Similar to thevirtual imaging device214, thevirtual audio device216 has no physical counterpart and derives its input audio stream from thevirtual audio mixer212 as well as outputs audio streams to thevirtual audio mixer212. Each of thevirtual imaging devices214 and thevirtual audio devices216 may be created for each of theUC applications208 for independently supporting the audio and video data streams being received from or sent to the endpoints or any other unified communication system simultaneously.
Thedevice driver module218 may comprise device drivers, which are software programs that introduce hardware devices such as endpoints (e.g., thecommunication device102 and the terminals104) and associated devices (e.g., theimaging device108 and the audio device110) to the virtualmultipoint control unit112. The device drivers handle software instructions received from theUC applications208 for accessing the hardware devices and associated resources (e.g., attached peripheral devices, hardware memory, etc.) without causing conflicts.
Further, as shown inFIG. 2B, at least one of the UC applications such as the UC application208-1 may comprise an audio encoder/decoder220, a video encoder/decoder222, adisplay window224, and avirtual source226. The audio encoder/decoder220 may be configured to decode and encode audio streams received from or sent to thevirtual audio mixer212 respectively using known, related art, or later developed encoding/decoding protocols and standards. Similarly, the video encoder/decoder222 may be configured to decode and encode the video streams received from or sent to thevirtual video mixer210 respectively using known, related art, or later developed encoding/decoding protocols and standards. Thedisplay window224 refers to an output software interface configured to display the video streams/signals. Thevirtual source226 may be configured to provide decoded video data stream to thevirtual video mixer210 via thedisplay window224.
FIG. 3 is a schematic that illustrates a virtualmultipoint control unit300 managing a multipoint video conference, according to an embodiment of the present disclosure. In one embodiment, the virtualmultipoint control unit300 may comprise avirtual video mixer302, avirtual audio mixer304, and adevice driver module306. Thevirtual video mixer302 may be in communication with one or more physical local imaging devices such as acamera308 and thedevice driver module306 may be in communication with one or more physical local audio devices such as alocal speaker310 and alocal microphone312. Thedevice driver module306 comprises device drivers for operating or managing the respective one or more physical hardware devices such as thecamera308, thelocal speaker310, and themicrophone312.
The virtualmultipoint control unit300 may further comprise various videoconferencing software applications such as UC applications314-1,314-2, and314-3 (collectively, UC applications314) for conducting a video conference among multiple endpoints, for e.g., thecommunication device102 and the terminals104. The first UC application314-1 comprises a first audio encoder/decoder316-1, a first video encoder318-1, a first video decoder320-1, a first display window322-1, and a first virtual source324-1. Similarly, the second UC application314-2 comprises a second audio encoder/decoder316-2, a second video encoder318-2, a second video decoder320-2, a second display window322-2, and a second virtual source324-2. The third UC application314-3 comprises a third audio encoder/decoder316-3, a third video encoder318-3, a third video decoder320-3, a third display window322-3, and a third virtual source324-3.
The display windows322-1,322-2,322-3 (collectively, display windows322) may be configured to receive the decoded video streams from the respective video decoders320-1,320-2,320-3 (collectively, video decoders320) for displaying the video streams on a local display device such as an HDTV display.
The virtual sources324-1,324-2,324-3 (collectively, virtual sources324) may be configured to receive the decoded video data streams via the respective display windows322 for being sent to thevirtual video mixer302, which combines the received video streams and renders a single video stream (e.g., to display images from each of the video streams in a tiled format) to reduce the required network bandwidth for display or recording.
Each of the UC applications314 may communicate with a respective set of UC virtual devices to allow the UC applications314 to access the physical hardware devices, which are in communication with the virtualmultipoint control unit300 simultaneously. For example, the UC application314-1 may communicate with a first set of UC virtual devices including a first UC virtual camera326-1 and a first UC virtual sound card328-1, and the UC application314-2 may communicate with a second set of UC virtual devices including a second UC virtual camera326-2 and a second UC virtual sound card328-2. Similarly, the UC application314-3 may communicate with a third set of UC virtual devices including a third UC virtual camera326-3 and a third UC virtual sound card328-3.
Further, each set of the UC virtual devices may emulate a physical device by defining a software configuration and a related hardware configuration, both being compatible with the respective UC applications. Correspondingly, each of the UC virtual cameras326-1,326-2,326-3 (collectively, UC virtual cameras326) may be a logical representation or an image of an imaging device (e.g., a camera) without being mapped or corresponding to a physical camera. Similarly, each of the UC virtual sound cards328-1,328-2,328-3 (collectively, UC virtual sound cards328) may refer to a logical representation or an image of an audio device (e.g., a speaker or a microphone) without being mapped or corresponding to a physical audio device. The UC virtual cameras326 may be derived from thevirtual video mixer302 and the UC virtual sound cards328 may be derived from thevirtual audio mixer302 by the respective UC applications314.
During a video conference, multiple endpoints such as thecommunication device102 and the terminals104 may execute various videoconferencing software applications similar to the UC applications314 in the virtualmultipoint control unit300. Each of these videoconferencing software applications may interact with the corresponding UC applications314 in the virtualmultipoint control unit300 during a single communication session to conduct the video conference, since the videoconferencing software applications may not be compatible with each other due to different control protocols and media formats being used. The virtualmultipoint control unit300 may operate in four distinct modes, namely, inbound audio mode, inbound video mode, outbound audio mode, and outbound video mode, to handle any audio, video, or data streams to and from these UC applications314, while simultaneously providing one or more local hardware devices to each of the participating UC applications314.
In the inbound audio mode, the endpoints such as thecommunication device102 and the terminals104 may capture local audio data stream and provide encoded audio streams via UC applications314 (for e.g., Microsoft Lync, Skype, Cisco IP communicator, etc.) executing on each of these endpoints. The provided encoded audio streams may be received by the audio encoder/decoders316-1,316-2,316-3 (collectively, audio encoders/decoders316) of the same UC applications314 running in the virtualmultipoint control unit300. The received audio streams may be encoded in any of the known, related art, or later developed real-time audio protocols such as RTP (real-time transport protocol). The audio encoder/decoders316 may be configured to decode the received audio streams and send the decoded audio streams to the respective UC virtual sound cards328, which may route the decoded audio streams to thevirtual audio mixer304 via thevirtual video mixer302. The UC virtual sound cards328 facilitate to provide the decoded audio streams to thevirtual audio mixer304 from multiple UC applications314 simultaneously.
The decoded audio streams may facilitate the operation of thevirtual video mixer302 being configured to operate in the voice-switched mode. The received audio streams may be summed at thevirtual audio mixer304 may be configured to perform a summation of the received audio streams to generate a single audio stream so as to minimize audio interferences or background noise as known in the art. The generated audio stream may be sent to one or more physical audio devices such thelocal speaker310. When the generated audio stream is played by thelocal speaker310, thevirtual audio mixer304 may send a notification to thevirtual video mixer302 to allow synchronization between the audio and the video streams. In some embodiments, thevirtual video mixer302 may add delay to a received video stream to synchronize it with the audio stream.
In the outbound audio mode, thelocal microphone312 may capture audio data stream of the local participants and send the captured audio data stream to thevirtual audio mixer304. Thevirtual audio mixer304 may send the captured audio stream to the audio encoder/decoders, such as the audio encoder/decoder316-1, via the respective UC virtual sound card328-1 of a selected UC application, such as the UC application314-1, among the available UC applications314. Such selection of the UC application may be performed on-the-fly by a user or may be preprogrammed. The audio encoder/decoder316-1 may encode the received audio data stream using a predetermined real-time protocol known in the art, related art or later developed, and transmit the encoded audio data stream to a predetermined endpoint such as thecommunication device102 or the terminals104. The audio streams may be encoded using any of the known, related art, or later developed real-time audio protocols such as RTP (real-time transport protocol). The audio encoder/decoders316-2 and316-3 may also operate in a similar manner.
In the inbound video mode, the endpoints such as thecommunication device102 and the terminals104 may capture video data stream of participants local to the endpoints and provide encoded video streams via the videoconferencing software applications being executed on each of these endpoints. The provided encoded audio streams may be received by the video decoders320-1,320-2,320-3 (collectively, video decoders320) of the respective UC applications314, which were used at the endpoints to send the video streams to the virtualmultipoint control unit300. The received video streams may be encoded in any of the known, related art, or later developed real-time video protocols such as H.264, H.261, Scalable video coding (SVC), of any other protocol known in the art, related art, or developed later. The video decoders320 may be configured to decode the received video streams and send the decoded video streams to the respective UC virtual cameras326-1,326-2,326-3 (collectively, UC virtual cameras326), which may route the decoded video streams to thevirtual video mixer302.
The UC virtual cameras326 facilitate to provide the decoded video streams for use from multiple UC applications314 simultaneously. Thevirtual video mixer302 may perform a summation of the received video streams to generate a single video stream for at least one of (1) minimizing video interferences or background noise; and (2) represent the video images from different decoded video streams as tiles for display. The decoded video streams may be displayed on a display device (not shown) (e.g., an interactive display, HDTV display, etc.) on the basis of thevirtual video mixer302 being preset to operate in continuous presence mode or the voice-switched mode.
In the outbound video mode, thelocal camera308 may capture the video data stream of the local participants and send the captured video data stream to thevirtual video mixer302. Thevirtual video mixer302 sends the captured video stream to a video encoder such as the video encoder318-1 via the UC virtual camera326-1 of a selected UC application, such as the UC application314-1, among the available UC applications314. Such selection of the UC application314-1 may be performed on-the-fly by a user or may be preprogrammed. The video encoders320 may encode the received video data stream using a predetermined real-time protocol known in the art, related art or later developed and transmit the encoded video data stream to a predetermined endpoint such as thecommunication device102 or the terminals104. The video streams may be encoded using any of the known in the art, related art, or later developed real time protocols, e.g., session initiation protocol (SIP), H.261, H.263, H.264, H.323, etc.
FIG. 4 is a schematic implementation of a device driver module of the virtual multipoint control unit for communicating with hardware devices, according to an embodiment of the present disclosure. Illustrated embodiments are disclosed in the context of avideo conference environment400 including (1) a videoconferencing system402 (e.g., CLEARONE Collaborate Room) comprising avideo encoder404 and avideo decoder406; (2) aUC application408 comprising aUC video encoder410 and aUC decoder412, (3) aphysical camera414, (4) adisplay device416, and (5) thedevice driver module306 of the virtualmultipoint control unit300. Thedevice driver module306 comprises a video mixer driver418 and a videodisplay mixer driver420. Thephysical camera414 may be in communication with thevideo conferencing system402 and theUC application408 via the video display mixer driver418. Thedisplay device416 may be in communication with thevideoconferencing system402 and theUC application408 via the videodisplay mixer driver420.
The operation of the virtualmultipoint control unit300 may be described in four different modes. In the first mode, thephysical camera414 may capture a local image of the participants and provide a video stream for transmission. The video mixer driver418 may be configured to transmit the captured video stream to a physical hardware such as thevideo conferencing system402 or to theUC application408 based on a transmission mode selected by a user. When the transmission mode indicates for a hardware to be used for transmission, the video mixer driver418 guides the captured video stream to thevideo encoder404, which may encode the video stream using any of the known in the art, related art, or later developed encoding algorithms for real-time network transmission using a predetermined network protocol such as H.263, SIP, etc.
When the transmission mode indicates for theUC application408 to be used for transmission, the video mixer driver418 guides the captured video stream to theUC video encoder410, which may encode the video stream using any of the known in the art, related art, or later developed encoding algorithms for real-time network transmission using a predetermined network protocol such as H.263, SIP, etc. In some embodiments, the captured video stream may be simultaneously sent to thevideo encoder404 and theUC video encoder410 for encoding and network transmission.
Similarly, the videodisplay mixer driver420 may be configured to manage an encoded video stream received from a network such as thenetwork106 via thevideoconferencing system402. The received video stream may be encoded using any of the known in the art, related art, or later developed algorithms according to predetermined network protocols. Thevideo decoder406 may receive and decode the encoded video stream to generate a decoded video stream, which may be sent to the video mixer driver418. The video mixer driver418 may be configured to guide the decoded video stream to the videodisplay mixer driver420, which may transmit the decoded video stream to thedisplay device416 for display. Alternatively, the encoded video stream may be received by theUC video decoder412, which may be configured to decode the encoded video stream and send a generated decoded video stream to thedisplay device416 via the videodisplay mixer driver420 for display.
In one embodiment, a virtualmultipoint control unit112,300 is in communication with a plurality of devices over anetwork106. The virtualmultipoint control unit112,300 comprises a plurality ofUC applications208,314, at least onevirtual imaging device214, at least onevirtual audio device216, avirtual video mixer210, and avirtual audio mixer212. The plurality ofUC applications208,314 is executed on at least one of the plurality ofdevices102,104. Each of the plurality ofUC applications208,314 receives an encoded audio data stream and an encoded video data stream. The plurality ofUC applications208,314 decodes the received audio data and the video data streams. The at least onevirtual imaging device214 is mapped to each of the plurality ofUC applications208,314. The at least onevirtual audio device216 is mapped to each of the plurality ofUC applications208,314. Thevirtual video mixer210 is in communication with aphysical imaging device108. Thevirtual video mixer210 receives the decoded video data stream from each of the plurality ofUC applications208,314 via the at least onevirtual imaging device214. Thevirtual audio mixer212 is in communication with aphysical audio device110. Thevirtual audio mixer212 receives the decoded audio data stream from each of the plurality ofUC applications208,314 via the at least onevirtual audio device216.
In another embodiment, a system for managing communication among a plurality of devices is disclosed. The system is employed within acommunication network106. The system comprises acommunication device102 and a virtualmultipoint control unit112,300. Thecommunication device102 receives encoded audio and video data streams via a plurality ofUC applications208,314. The plurality ofUC applications208,314 decodes the received encoded audio data stream and the received encoded video data stream. The virtualmultipoint control unit112,300 is in communication with thecommunication device102. The virtualmultipoint control unit112,300 comprises at least onevirtual imaging device214, at least onevirtual audio device216, avirtual video mixer210, and avirtual audio mixer212. The at least onevirtual imaging device214 is mapped to each of the plurality ofUC applications208,314. The at least onevirtual audio device216 is mapped to each of the plurality ofUC applications208,314. Thevirtual video mixer210 is in communication with aphysical imaging device108. Thevirtual video mixer210 receives the decoded video data stream from each of the plurality ofUC applications208,314 via the at least onevirtual imaging device214. Thevirtual audio mixer212 is in communication with aphysical audio device110. Thevirtual audio mixer212 receives the decoded audio data stream from each of the plurality ofUC applications208,314 via the at least onevirtual audio device216.
In yet another embodiment, a non-transitory computer readable medium storing a program of instructions executable by the computing device to perform a method for employing a virtualmultipoint control unit112,300 for unified communications is disclosed. The method comprises receiving, from a plurality of terminals104, an encoded audio data stream and an encoded video data stream. The method also comprises decoding, using a plurality ofUC applications208,314, the received encoded audio data stream and the received encoded video data stream. The method further comprises mapping, using a virtualmultipoint control unit112,300, at least onevirtual imaging device214 and at least onevirtual audio device216 to each of the plurality ofUC applications208,314. The method also comprises communicating, using avirtual video mixer210, the decoded video data stream to aphysical imaging device108 via the at least onevirtual imaging device214. Furthermore, the method comprises communicating, using avirtual audio mixer212, the decoded audio data stream to aphysical audio device110 via the at least onevirtual audio device216.
In still another embodiment, a method for managing communication among a plurality of devices is disclosed. The method comprises receiving, from a plurality of terminals104, an encoded audio data stream and an encoded video data stream. The method also comprises decoding, using a plurality ofUC applications208,314, the received encoded audio data stream and the received encoded video data stream. The method further comprises mapping, using a virtualmultipoint control unit112,300, at least onevirtual imaging device214 and at least onevirtual audio device216 to each of the plurality ofUC applications208,314. The method also comprises communicating, using avirtual video mixer210, the decoded video data stream to aphysical imaging device108 via the at least onevirtual imaging device214. Furthermore, the method comprises communicating, using avirtual audio mixer212, the decoded audio data stream to aphysical audio device110 via the at least onevirtual audio device216.
Other embodiments of the present invention will be apparent to those skilled in the art after considering this disclosure or practicing the disclosed invention. The specification and examples above are exemplary only, with the true scope of the present invention being determined by the following claims.