Techniques for virtual conferencing servers

Techniques for virtual conferencing servers are described. An apparatus may comprise a conferencing server to manage a conference call with multiple client terminals. The conferencing server may have a virtual conference manager to select a first client terminal to operate as a first virtual conferencing server, and transfer conference call operations for a second client terminal from the conferencing server to the first virtual conferencing server. Other embodiments are described and claimed.

BACKGROUND

Multimedia conference calls typically involve communicating voice, video, and/or data information between multiple endpoints. With the proliferation of data networks, multimedia conferencing is migrating from traditional circuit-switched networks to packet networks. To establish a multimedia conference call over a packet network, a conferencing server typically operates to coordinate and manage the conference call. The conferencing server receives a video stream from a sending participant and multicasts the video stream to other participants in the conference call.

As quality of service for packet networks increases, a conferencing server may manage a conference call with increasingly larger numbers of client terminals. Further, the client terminals may be geographically remote from each other, such as for national or international conference calls. A conferencing server, however, may have limited media processing resources. A packet network used by the conference call may also have limited bandwidth as well. Consequently, there may be a substantial need to improve conference call techniques to make efficient use of available conference call resources such as conferencing servers and/or client terminals.

SUMMARY

Various embodiments may be generally directed to techniques for improving multimedia conference calls. Some embodiments in particular may be directed to improving multimedia conference calls by arranging one or more client terminals to operate as virtual conferencing servers. The virtual conferencing servers may assist a conferencing server in providing conference call services or other media processing operations, such as security operations, routing video information, video or audio encoding/decoding/transcoding operations, adding or removing new participants, load balancing, high-reliability, media mixing, and so forth. The embodiments are not limited in this context.

In one embodiment, for example, a conferencing server may be arranged to manage a conference call with multiple client terminals. The conferencing server may include a virtual conference manager. The virtual conference manager may be arranged to select a client terminal to operate as a virtual conferencing server. In some cases, the virtual conference manager may transform multiple client terminals into multiple virtual conferencing servers, thereby forming virtual conferencing server clusters. The virtual conference manager may then transfer certain conference call operations and/or media processing operations for one or more other client terminals from the conferencing server to the virtual conferencing server or virtual conferencing server cluster. In this manner, conferencing call operations may be distributed or offloaded from the conferencing server to one or more virtual conferencing servers or virtual conferencing server clusters. Furthermore, certain media processing operations for a conference server, client terminal or group of client terminals may be distributed or offloaded to one or more virtual conferencing servers or virtual conferencing server clusters. Other embodiments are described and claimed.

DETAILED DESCRIPTION

Various embodiments may be directed to techniques for implementing virtual conferencing servers for use in a multimedia conference call. In one embodiment, for example, a conferencing server may be arranged to manage a conference call with multiple client terminals. The conferencing server may include a virtual conference manager arranged to select one or more client terminals participating in a conference call to operate as a virtual conferencing server. Selection of the client terminals can be driven by criteria such as performance of the hardware, amount of dynamic memory available on the machine or bandwidth available on the connections to and from the machine hosting the client terminal. Once a client terminal has been selected, virtual conference manager may send control information to a virtual conferencing server module implemented for the selected client terminal. The virtual conferencing server module may receive the control information from virtual conference manager, and begin invoking or instantiating the appropriate conferencing server software with the appropriate conference call settings for a given conference call. In this manner, the selected client terminal may begin operating as a virtual conferencing server to assist or replace conferencing server. Once a client terminal has been transformed or instantiated as a virtual conferencing server, virtual conference manager may transfer or program the virtual conferencing server with certain conference call operations for one or more other client terminals from conferencing server to the virtual conferencing server. In this manner, conferencing call operations may be distributed or offloaded from the conferencing server to other virtual conferencing servers to more efficiently use conference call resources for a multimedia conference call.

Furthermore, virtual conferencing servers may be used to provide additional computing or communication resources for a conference call. In some embodiments, for example, certain media processing operations for a conferencing server, client terminal or group of client terminals may be distributed or offloaded to one or more virtual conferencing servers. For example, one or more virtual conferencing servers may perform security operations (e.g., encryption/decryption), packet processing, video encoding/decoding, video transcoding, trans-rating, audio encoding/decoding, media mixing, and so forth. One or more virtual conferencing servers may then provide the offloaded media processing operations to other client terminals involved in the conference call.

FIG. 1illustrates a block diagram for a multimedia conferencing system100. Multimedia conferencing system100may represent a general system architecture suitable for implementing various embodiments. Multimedia conferencing system100may comprise multiple elements. An element may comprise any physical or logical structure arranged to perform certain operations. Each element may be implemented as hardware, software, or any combination thereof, as desired for a given set of design parameters or performance constraints. Examples of hardware elements may include devices, components, processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), memory units, logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. Examples of software may include any software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, interfaces, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Although multimedia conferencing system100as shown inFIG. 1has a limited number of elements in a certain topology, it may be appreciated that multimedia conferencing system100may include more or less elements in alternate topologies as desired for a given implementation. The embodiments are not limited in this context.

In various embodiments, multimedia conferencing system100may be arranged to communicate, manage or process different types of information, such as media information and control information. Examples of media information may generally include any data representing content meant for a user, such as voice information, video information, audio information, image information, textual information, numerical information, alphanumeric symbols, graphics, and so forth. Control information may refer to any data representing commands, instructions or control words meant for an automated system. For example, control information may be used to route media information through a system, to establish a connection between devices, instruct a device to process the media information in a predetermined manner, and so forth.

In various embodiments, multimedia conferencing system100may include a conferencing server102. Conferencing server102may comprise any logical or physical entity that is arranged to manage or control a multimedia conference call between client terminals106-1-m. In various embodiments, conferencing server102may comprise, or be implemented as, a processing or computing device, such as a computer, a server, a router, a switch, a bridge, and so forth. A specific implementation for conferencing server102may vary depending upon a set of communication protocols or standards to be used for conferencing server102. In one example, conferencing server102may be implemented in accordance with the International Telecommunication Union (ITU) H.323 series of standards and/or variants. The H.323 standard defines a multipoint control unit (MCU) to coordinate conference call operations. In particular, the MCU includes a multipoint controller (MC) that handles H.245 signaling, and one or more multipoint processors (MP) to mix and process the data streams. In another example, conferencing server102may be implemented in accordance with the Internet Engineering Task Force (IETF) Multiparty Multimedia Session Control (MMUSIC) Working Group Session Initiation Protocol (SIP) series of standards and/or variants. SIP is a proposed standard for initiating, modifying, and terminating an interactive user session that involves multimedia elements such as video, voice, instant messaging, online games, and virtual reality. Both the H.323 and SIP standards are essentially signaling protocols for Voice over Internet Protocol (VoIP) or Voice Over Packet (VOP) multimedia conference call operations. It may be appreciated that other signaling protocols may be implemented for conferencing server102, however, and still fall within the scope of the embodiments. The embodiments are not limited in this context.

In various embodiments, multimedia conferencing system100may include one or more client terminals106-1-mto connect to conferencing server102over one or more communications links108-1-n, where m and n represent positive integers that do not necessarily need to match. For example, a client application may host several client terminals each representing a separate conference at the same time. Similarly, a client application may receive multiple media streams. For example, video streams from all or a subset of the participants may be displayed as a mosaic on the participant's display with a top window with video for the current active speaker, and a panoramic view of the other participants in other windows. Client terminals106-1-mmay comprise any logical or physical entity that is arranged to participate or engage in a multimedia conference call managed by conferencing server102. Client terminals106-1-mmay be implemented as any device that includes, in its most basic form, a processing system including a processor and memory (e.g., memory units10-1-p), one or more multimedia input/output (I/O) components, and a wireless and/or wired network connection. Examples of multimedia I/O components may include audio I/O components (e.g., microphones, speakers), video I/O components (e.g., video camera, display), tactile (I/O) components (e.g., vibrators), user data (I/O) components (e.g., keyboard, thumb board, keypad, touch screen), and so forth. Examples of client terminals106-1-mmay include a telephone, a VoIP or VOP telephone, a packet telephone designed to operate on a Packet Switched Telephone Network (PSTN), an Internet telephone, a video telephone, a cellular telephone, a personal digital assistant (PDA), a combination cellular telephone and PDA, a mobile computing device, a smart phone, a one-way pager, a two-way pager, a messaging device, a computer, a personal computer (PC), a desktop computer, a laptop computer, a notebook computer, a handheld computer, a network appliance, and so forth. The embodiments are not limited in this context.

Depending on a mode of operation, client terminals106-1-mmay be referred to as sending client terminals or receiving client terminals. For example, a given client terminal106-1-mmay be referred to as a sending client terminal when operating to send a video stream to conferencing server102. In another example, a given client terminal106-1-mmay be referred to as a receiving client terminal when operating to receive a video stream from conferencing server102, such as a video stream from a sending client terminal, for example. In the various embodiments described below, client terminal106-1is described as a sending client terminal, while client terminals106-2-mare described as receiving client terminals, by way of example only. Any of client terminals106-1-mmay operate as a sending or receiving client terminal throughout the course of conference call, and frequently shift between modes at various points in the conference call. The embodiments are not limited in this respect.

In various embodiments, multimedia conferencing system100may comprise, or form part of, a wired communications system, a wireless communications system, or a combination of both. For example, multimedia conferencing system100may include one or more elements arranged to communicate information over one or more types of wired communications links. Examples of a wired communications link may include, without limitation, a wire, cable, bus, printed circuit board (PCB), Ethernet connection, peer-to-peer (P2P) connection, backplane, switch fabric, semiconductor material, twisted-pair wire, co-axial cable, fiber optic connection, and so forth. Multimedia conferencing system100also may include one or more elements arranged to communicate information over one or more types of wireless communications links. Examples of a wireless communications link may include, without limitation, a radio channel, infrared channel, radio-frequency (RF) channel, Wireless Fidelity (WiFi) channel, a portion of the RF spectrum, and/or one or more licensed or license-free frequency bands.

Multimedia conferencing system100also may be arranged to operate in accordance with various standards and/or protocols for media processing. Examples of media processing standards include, without limitation, the Society of Motion Picture and Television Engineers (SMPTE) 421M (“VC-1”) series of standards and variants, VC-1 implemented as MICROSOFT® WINDOWS® MEDIA VIDEO version 9 (WMV-9) series of standards and variants, Digital Video Broadcasting Terrestrial (DVB-T) broadcasting standard, the ITU/IEC H.263 standard, Video Coding for Low Bit rate Communication, ITU-T Recommendation H.263v3, published November 2000 and/or the ITU/IEC H.264 standard, Video Coding for Very Low Bit rate Communication, ITU-T Recommendation H.264, published May 2003, Motion Picture Experts Group (MPEG) standards (e.g., MPEG-1, MPEG-2, MPEG-4), and/or High performance radio Local Area Network (HiperLAN) standards. Examples of media processing protocols include, without limitation, Session Description Protocol (SDP), Real Time Streaming Protocol (RTSP), Real-time Transport Protocol (RTP), Synchronized Multimedia Integration Language (SMIL) protocol, and/or Internet Streaming Media Alliance (ISMA) protocol. The embodiments are not limited in this context.

In one embodiment, for example, conferencing server102and client terminals106-1-mof multimedia conferencing system100may be implemented as part of an H.323 system operating in accordance with one or more of the H.323 series of standards and/or variants. H.323 is an ITU standard that provides specification for computers, equipment, and services for multimedia communication over networks that do not provide a guaranteed quality of service. H.323 computers and equipment can carry real-time video, audio, and data, or any combination of these elements. This standard is based on the IETF RTP and RTCP protocols, with additional protocols for call signaling, and data and audiovisual communications. H.323 defines how audio and video information is formatted and packaged for transmission over the network. Standard audio and video coders/decoders (codecs) encode and decode input/output from audio and video sources for communication between nodes. A codec converts audio or video signals between analog and digital forms. In addition, H.323 specifies T.120 services for data communications and conferencing within and next to an H.323 session. The T.120 support services means that data handling can occur either in conjunction with H.323 audio and video, or separately, as desired for a given implementation.

In accordance with a typical H.323 system, conferencing server102may be implemented as an MCU coupled to an H.323 gateway, an H.323 gatekeeper, one or more H.323 terminals106-1-m, and a plurality of other devices such as personal computers, servers and other network devices (e.g., over a local area network). The H.323 devices may be implemented in compliance with the H.323 series of standards or variants. H.323 client terminals106-1-mare each considered “endpoints” as may be further discussed below. The H.323 endpoints support H.245 control signaling for negotiation of media channel usage, Q.931 (H.225.0) for call signaling and call setup, H.225.0 Registration, Admission, and Status (RAS), and RTP/RTCP for sequencing audio and video packets. The H.323 endpoints may further implement various audio and video codecs, T.120 data conferencing protocols and certain MCU capabilities. Although some embodiments may be described in the context of an H.323 system by way of example only, it may be appreciated that multimedia conferencing system100may also be implemented in accordance with one or more of the IETF SIP series of standards and/or variants, as well as other multimedia signaling standards, and still fall within the scope of the embodiments. The embodiments are not limited in this context.

In general operation, multimedia conference system100may be used for multimedia conference calls. Multimedia conference calls typically involve communicating voice, video, and/or data information between multiple end points. For example, a public or private packet network may be used for audio conferencing calls, video conferencing calls, audio/video conferencing calls, collaborative document sharing and editing, and so forth. The packet network may also be connected to the PSTN via one or more suitable VoIP gateways arranged to convert between circuit-switched information and packet information. To establish a multimedia conference call over a packet network, each client terminal106-1-mmay connect to conferencing server102using various types of wired or wireless communications links108-1-noperating at varying connection speeds or bandwidths, such as a lower bandwidth PSTN telephone connection, a medium bandwidth DSL modem connection or cable modem connection, and a higher bandwidth intranet connection over a local area network (LAN), for example.

In various embodiments, conferencing server102may establish and manage a conference call between client terminals106-1-m. Conferencing server102operates as a central server that controls and distributes media information in the conference. It handles the mixing and forwarding of the media information. One or more client terminals106-1-mmay join a conference by connecting to conferencing server102.

In some cases, however, conferencing server102may have a limited amount of conference call or media processing resources, such as input bit rate budget, output bit rate budget, processing constraints, memory constraints, number of ports, communication link bandwidth, and so forth. For example, conferencing server102may be servicing a relatively large number of client terminals106-1-mfor a particular conference call that exceeds its media processing resources. In another example, client terminals106-1-mmay be geographically remote or dispersed from each other, which typically happens for national or international conference calls. In yet another example, a packet network used by the conference call may also have limited bandwidth, or traffic loads may vary thereby dynamically changing the amount of instantaneously available bandwidth for a given communication link108-1-n. In yet another embodiment, conferencing server102may exceed a number of available client ports. In still another embodiment, conferencing server102may need high-availability operations and therefore backup operations in case of failure or maintenance. These and other problems may limit the number and scope of services offered by conferencing server102.

Various embodiments may attempt to solve these and other problems by efficiently utilizing all of the computing and/or communication resources available for a device or network involved in providing a given conference call, such as conferencing server102and/or client terminals106-1-m. For example, some embodiments may improve multimedia conference calls by arranging one or more client terminals106-1-mto operate as virtual conferencing servers. The virtual conferencing servers may assist conferencing server102in providing various conference call services and media processing services. Using some client terminals106-1-mas virtual conferencing servers may reduce, or in some cases eliminate, the need for one or more dedicated conferencing servers and their associated costs. In addition, the distribution system between conferencing server102and the virtual conferencing servers is automatically organized since conferencing server102needs to send video streams to client terminals106-1-mat their current network locations already. Furthermore, if the virtual conferencing server is on the same subnet (or otherwise connected via a multicast distribution network) as the other client terminals106-1-m, it can multicast the traffic to the client terminals106-1-mrather than send a copy of the media to each client terminal106-1-mindependently, saving both processing cycles on the virtual conferencing server and network bandwidth. Other advantages of virtual conferencing servers may include, but are not limited to, load balancing operations where the conference client terminals106-1-mcan be shared among the virtual conferencing servers to distribute the load, fail over operations where if more than one conferencing server is part of a conference a client terminal106-1-mcan move itself or be moved if the conferencing server it is attached to suffers operational failure, bandwidth savings where media can be forwarded to the virtual conferencing server closest to a certain number of client terminals106-1-mbefore being forwarded to the client terminals106-1-mthereby saving bandwidth on the communication links108-1-nbetween the virtual conferencing servers, and so forth.

In one embodiment, for example, conferencing server102may be arranged to manage a conference call with multiple client terminals106-1-m. Conferencing server102may include a virtual conference manager104. Virtual conference manager104may be arranged to select a client terminal106-1-mparticipating in a conference call to operate as a virtual conferencing server. Virtual conference manager104may select a particular client terminal106-1-mbased on various types of selection criteria, as described in detail below. One important function of the virtual conference manager104is to record the state of the audio/video processing and the signaling states in the conferencing server102and to communicate these states to the virtual servers so these virtual servers can mirror the tasks performed by the conferencing server102.

Once a client terminal106-1-mhas been selected, virtual conference manager104may send control information to a virtual conferencing server module (VCSM)110-1-pimplemented for the selected client terminal106-1-m. The virtual conferencing server module110-1-pmay receive the control information (e.g., state of the processing) from virtual conference manager104, and begin invoking or instantiating the appropriate conferencing server software with the appropriate conference call settings for a given conference call. In this manner, the selected client terminal106-1-mmay begin operating as a virtual conferencing server to assist or replace conferencing server102. Once a client terminal106-1-mhas been transformed or instantiated as a virtual conferencing server, virtual conference manager104may transfer or program the virtual conferencing server with certain conference call operations for one or more other client terminals106-1-mfrom conferencing server102to the virtual conferencing server. In this manner, conferencing call operations may be distributed or offloaded from conferencing server102to other virtual conferencing servers. It is worthy to note that to offload functions such as rate matching, the conference server102may need to forward partially processed video and/or audio streams to the client terminals acting as virtual conference servers so the completion of the process can be executed in the client terminal. For example, in the case of scalable video, the conference server102may perform partial removal of temporal/spatial layers and the remaining removal or temporal/spatial layers is done in the virtual servers.

In some cases, virtual conference manager104may transform multiple client terminals106-1-minto multiple virtual conferencing servers, thereby forming virtual conferencing server clusters to service particular sets of client terminals106-1-m. The virtual conferencing server clusters may be used to connect together conference call resources for a larger conference or to reduce the amount of traffic between particular destinations. Each client terminal106-1-mconnecting to conference server102is sent a copy of the media information, typically in the form of a video stream or bitstream. So the amount of traffic from conferencing server102or a virtual conferencing server is the sum of all the traffic between client terminals106-1-mand conferencing server102or the virtual conferencing server. If there is a large number of client terminals106-1-mat a particular network location, then having a local virtual conferencing server to obtain a single video stream from conferencing server102(or a remote virtual conferencing server) may reduce network traffic between network locations.

Furthermore, certain media processing operations for a client terminal106-1-mor group of client terminals106-1-mmay be distributed or offloaded from conferencing server102and/or one or more client terminals106-1-mto one or more virtual conferencing servers. For example, one or more virtual conferencing servers may perform security operations (e.g., encryption/decryption), packet processing, video encoding/decoding, video transcoding, trans-rating, audio encoding/decoding, media mixing, and so forth. One or more virtual conferencing servers may then provide the offloaded media processing operations to other client terminals106-1-minvolved in the conference call. Multimedia conferencing system100in general, and virtual conference manager104and virtual conferencing server module110in particular, may be described in more detail with reference toFIGS. 2 and 3.

FIG. 2illustrates a block diagram of computing environment200. Computing environment200may be implemented as a device, or part of a device, such as conferencing server102and/or client terminals106-1-m. In some embodiments, computing environment200may be implemented to execute software210. Examples of software210may include virtual conference manager104and/or virtual conferencing server modules110-1-p. For example, when computing environment200is implemented as part of conferencing server102, software programs210may include virtual conference manager104and accompanying data. In another example, when computing environment200is implemented as part of a client terminal106-1-m, software programs210may include virtual conferencing server modules110-1-pand accompanying data. In yet another example, when computing environment200is implemented as part of conferencing server102and/or client terminal106-1-m, software programs210may include an operating system or other system software typically implemented for an electrical, electronic, and/or electro-mechanical device, such as a graphical user interface. Although some embodiments may be described with operations for virtual conference manager104and/or virtual conferencing server modules110-1-pimplemented as software stored and executed by computing environment200, it may be appreciated that the operations for software modules104,110may be implemented using dedicated hardware, software or any combination thereof. The embodiments are not limited in this context.

In its most basic configuration, computing environment200typically includes a processing system208that comprises at least one processing unit202and memory204. Processing unit202may be any type of processor capable of executing software, such as a general-purpose processor, a dedicated processor, a media processor, a controller, a microcontroller, an embedded processor, a digital signal processor (DSP), and so forth. Memory204may be implemented using any machine-readable or computer-readable media capable of storing data, including both volatile and non-volatile memory. For example, memory204may include read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), flash memory, polymer memory such as ferroelectric polymer memory, ovonic memory, phase change or ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, magnetic or optical cards, or any other type of media suitable for storing information.

As shown inFIG. 2, memory204may store various software programs210, such as virtual conference manager104, virtual conferencing server module110, and accompanying data. In some cases, such as for virtual conference manager104, software programs210may have to be duplicated in the memory if it is designed to handle one media stream at a time. Likewise, processor202and virtual conference manager104may be duplicated several times if the host system is a multi-core microprocessor-based computing platform. Memory204may also store other software programs to implement different aspects of conferencing server102, such as various types of conference call software, operating system software, application programs, video codecs, audio codecs, security software, call control software, gatekeeper software, multipoint controllers, multipoint processors, and so forth. Alternatively such operations may be implemented in the form of dedicated hardware (e.g., DSP, ASIC, FPGA, and so forth) or a combination of hardware, firmware and/or software as desired for a given implementation. The embodiments are not limited in this context.

Computing environment200may also have additional features and/or functionality beyond configuration208. For example, computing environment200may include storage212, which may comprise various types of removable or non-removable storage units. Storage212may be implemented using any of the various types of machine-readable or computer-readable media as previously described. Computing environment200may also have one or more input devices214such as a keyboard, mouse, pen, voice input device, touch input device, and so forth. One or more output devices216such as a display device, speakers, printer, and so forth may also be included in computing environment200as well.

Computing environment200may further include one or more communications connections218that allow computing environment200to communicate with other devices via communication links108-1-n. Communications connections218may include various types of standard communication elements, such as one or more communications interfaces, network interfaces, network interface cards (NIC), radios, wireless transmitters/receivers (transceivers), wired and/or wireless communication media, physical connectors, and so forth. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes both wired communications media and wireless communications media, as previously described. The terms machine-readable media and computer-readable media as used herein are meant to include both storage media and communications media.

In various embodiments, computing environment200may be implemented as part of conferencing server102. In particular, computing environment200may be implemented with software programs210to include virtual conference manager104. Virtual conference manager104may be arranged to select a first client terminal to operate as a first virtual conferencing server, and transfer conference call operations for a second client terminal from conferencing server102to the first virtual conferencing server.

In various embodiments, computing environment200may be implemented as some or all of client terminals106-1-m. In particular, computing environment200may be implemented with software programs210to include one or more virtual conferencing server modules110-1-p. Once virtual conference manager104selects one or more client terminals106-1-mto operate as virtual conferencing servers, virtual conference manager104may send control information to a virtual conferencing server module110-1-pimplemented for the selected client terminal106-1-m. Virtual conferencing server module110-1-pmay receive the control information from virtual conference manager104, and begin invoking or instantiating the appropriate conferencing server software with the appropriate conference call settings for a given conference call. In this manner, the selected client terminal106-1-mmay begin operating as a virtual conferencing server. Once a client terminal106-1-mhas been transformed or instantiated as a virtual conferencing server, virtual conference manager104may transfer or program the virtual conferencing server with certain conference call operations for one or more other client terminals106-1-mfrom conferencing server102to the virtual conferencing server. In this manner, conferencing call operations may be distributed or offloaded from conferencing server102to other virtual conferencing servers.

If conferencing server102can learn or be made aware of the network locations for some or all of client terminals106-1-m, virtual conference manager104can generate a distribution plan for the conference call and signal some client terminals106-1-mto become virtual conferencing servers, and then signal other client terminals106-1-mto transfer to one of the virtual conferencing servers.

In one embodiment, for example, virtual conference manager104may determine a location for multiple client terminals106-1-min a conference call. When setting up a conference call, multiple client terminals106-1-mmay request to join a conference call via conferencing server102. During join operations, each client terminal106-1-mmay send location information to indicate a geographic location for the client terminal106-1-m. In some cases the location information may be explicit location information, such as global positioning satellite (GPS) coordinates, map information (e.g., longitude, latitude, altitude and other map coordinates), and so forth. In some cases, the location information may be implicit location information suitable for deriving location information for a client terminal106-1-m, such as a network address, device address, a minimum number of hops to reach the client terminal on the network, device identifier, telephone number, electronic mail address, or other unique identifier. Virtual conference manager104may convert the different types of location information into a common format used by all client terminals106-1-mto perform consistent mapping.

Once virtual conference manager104receives location information for all or some of client terminals106-1-m, virtual conference manager104may generate a distribution plan based on the location information. The distribution plan may comprise a plan to distribute data among multiple locations and/or client terminals106-1-m. The distribution plan may use various data distribution algorithms to determine efficient distribution of media information across all the client terminals106-1-minvolved in a given conference call.

As part of the distribution plan, or in lieu of a distribution plan, virtual conference manager104may use various other criteria or factors when selecting a given client terminal106-1-mto become a virtual conferencing server. Virtual conference manager104can, for example, use information derived from bandwidth estimates of communication links108-1-ncommunicating the media information to each client terminal106-1-mto estimate the bandwidth available to each client terminal106-1-m, and which client terminals106-1-mcan handle the additional bandwidth requirements needed to operate as a virtual conferencing server.

In one embodiment, for example, virtual conference manager104may use bandwidth estimates for communication links108-1-nbetween conferencing server102and client terminals106-1-m. Virtual conference manager104may receive bandwidth estimates from client terminals106-1-m. The bandwidth estimates may be for corresponding communication links108-1-n. Virtual conference manager104may take a bandwidth estimate for a first client terminal, and a bandwidth for a second client terminal, and compare the first bandwidth estimate with the second bandwidth estimate. If the first bandwidth estimate is sufficient to include or absorb the bandwidth requirements for both the first client terminal and the second client terminal, virtual conference manager104may select the first client terminal as a virtual conferencing server. Virtual conference manager104may then redirect the video stream intended for the second client terminal from the communication link used for the second client terminal to the communication link used for the first client terminal. The first client terminal operating as a virtual conferencing server may then forward the video stream to the second client terminal using a communication link between the first and second client terminals.

Referring again toFIG. 1, by way of example, assume the first client terminal is client terminal106-2and the second client terminal is client terminal106-3. In normal operation, conferencing server102may communicate media in the form of a video stream to client terminals106-2,106-3via communication links108-2,108-3, respectively. Virtual conference manager104may receive bandwidth estimates from client terminals106-2,106-3for communication links108-2,108-3, respectively. Alternatively, conferencing server102may obtain the bandwidth estimates by direct measurement of traffic for communication links108-2,108-3, or from some other source. Virtual conference manager104may compare the bandwidth estimates for communication links108-2,108-3. If the first bandwidth estimate for communication link108-2is sufficient to include bandwidth requirements for both communication links108-2and108-3, virtual conference manager104may select client terminal106-2as a virtual conferencing server, and redirect video stream114intended for client terminal106-3from communication link108-3used for client terminal106-3to communication link108-2used for client terminal106-2. Virtual conference manager104may also send a redirect signal112to client terminal106-3, thereby informing client terminal106-3to begin communicating with conferencing server102via client terminal106-2. Client terminal106-2operating as a virtual conferencing server may receive video stream114for client terminal106-3over communication link108-2, and then forward video stream114received via communication link108-2to client terminal106-3using a communication link116between client terminals106-2,106-3. The operations of the virtual server in client terminal106-2may include traffic shaping to account for bandwidth on link116. Operations may also include adjustment in the contents of the audio and video streams to adjust the bitstream to the reduced computational performance in client terminal106-3.

Virtual conference manager104may also receive capabilities information for client terminals106-1-m, and select one or more client terminals106-1-mas a virtual conferencing server based on the capabilities information. Capabilities information may include information on computing or communication resources available to a given client terminal106-1-m, such as an input bit rate budget, output bit rate budget, processor speed, memory capacity, speed for communication connections218, and so forth. In one embodiment, for example, virtual conference manager104may receive capabilities information in the form of bit rate budgets for client terminals106-1-m. For example, virtual conference manager104may receive an input bit rate budget estimate and an output bit rate budget estimate for client terminal106-2, and a bandwidth estimate for communication link108-3used by client terminal106-3. Virtual conference manager104may compare the input bit rate budget estimate and the output bit rate budget estimate with the bandwidth estimate. If the input bit rate budget estimate and/or output bit rate budget estimate are sufficient to accommodate the bit rate of video stream114as inferred from the bandwidth estimate for communication link108-3, virtual conference manager104may select client terminal106-2as a virtual conferencing server, and perform redirect operations as previously described. Alternatively, virtual conference manager104may directly receive a bit rate estimate for video stream114via direct measurements or some other source, such as a receiver or video encoder/decoder/transcoder for conferencing server102, thereby reducing or obviating the need for the bandwidth estimate108-3.

In some embodiments, multiple client terminals106-1-mthat are located geographically close together may be requested to become multiple virtual conferencing servers and share the load of the other client terminals106-1-mbetween themselves. This may facilitate, for example, other client terminals106-1-mto be moved between the virtual conferencing servers if one of the client terminals106-1-mjoins or leaves the conference call.

In various embodiments, virtual conference manager104may select multiple client terminals106-1-mto become multiple virtual conferencing servers, thereby forming one or more virtual conferencing server clusters. Based on the location information and distribution plan, virtual conference manager104may select clusters of client terminals106-1-mto operate as clusters of virtual conferencing servers. A virtual conferencing server cluster may service a particular group of client terminals106-1-min a conference call, such as all the client terminals within a given geographic proximity (e.g., building, intrastate locale, interstate locale, region, country, and so forth). This may be desirable for high-availability operations in the event of failure for a virtual conferencing server in a virtual conferencing server cluster, where operations for the failed virtual conferencing server may be taken over by another virtual conferencing server in the same virtual conferencing server cluster. Having virtual conferencing server clusters may also facilitate adding or dropping client terminals106-1-mduring the course of a conference call as participants join or exit the conference call.

Referring again toFIG. 1, by way of example, assume virtual conference manager104selects client terminals106-4,106-5as virtual conferencing servers for a virtual conferencing server cluster118. Virtual conferencing server cluster118may provide conference call services similar to conferencing server102to a number of different client terminals, such as client terminals106-6-m, via communication links120,126. Assume first virtual conferencing server106-4provides conference call services to client terminal106-6as indicated by arrow122. If a failure condition is detected for client terminal106-4operating as a first virtual conferencing server, client terminal106-6may be transferred from the first virtual conferencing server106-4to the second virtual conferencing server106-5as indicated by arrow124. Client terminal106-6may then begin receiving video stream114via virtual conferencing server106-5and communication link126. Alternatively, client terminal106-6may be transferred to a different client terminal operating as a virtual conferencing server, or directly back to conferencing server102.

Virtual conference manager104may also factor in current traffic loads for communication links108-1-nfor client terminals106-1-mwhen selecting a given client terminal106-1-mto become a virtual conferencing server. Referring again to our example with virtual conferencing server cluster118, virtual conferencing server cluster118may provide conference call services similar to conferencing server102to a number of different client terminals, such as client terminal106-6-m, via communication links120,126. Assume first virtual conferencing server106-4provides conference call services to client terminal106-6as indicated by arrow122. If traffic load conditions between virtual conferencing server106-4and client terminal106-6via communication link120exceed a defined threshold, client terminal106-6may be transferred from the first virtual conferencing server106-4to the second virtual conferencing server106-5via communication link126as indicated by arrow124. Client terminal106-6may then begin receiving video stream114via virtual conferencing server106-5and communication link126. Alternatively, client terminal106-6may be transferred to a different client terminal operating as a virtual conferencing server, or directly back to conferencing server102.

In addition to sharing or distributing conference call operations between conferencing server102and one or more virtual conferencing servers, a virtual conferencing server may also share or perform certain media processing operations on behalf of conferencing server102and/or one or more client terminals106-1-m. Furthermore, certain media processing operations for conferencing server102, a virtual conferencing server, or client terminal106-1-m, may be partitioned and distributed among multiple virtual conferencing servers.

In various embodiments, certain media processing operations for a client terminal106-1-mor group of client terminals106-1-mmay be distributed or offloaded from one or more client terminals106-1-mto one or more virtual conferencing servers. Examples of media processing operations may include, but are not limited to, security operations (e.g., encryption, decryption, integrity checks, and so forth), packet processing, video encoding/decoding, video transcoding, trans-rating, audio encoding/decoding, media mixing, and so forth. One or more virtual conferencing servers may then provide the offloaded media processing operations to other client terminals106-1-minvolved in the conference call.

In one embodiment, for example, a number of virtual conferencing servers close to a group of client terminals106-1-mcan be responsible for packet input/output (I/O) and security. The decrypted traffic can be merged into a single stream and forwarded to another virtual conferencing server that is arranged to decode the media, perform media mixing, and re-encodes the media. The virtual conferencing server may then send a small number of streams back to the other virtual conferencing servers that encrypt and sends the encrypted media information to all the client terminals106-1-m. In this manner, two particular processor intensive operations may be offloaded from the main virtual conferencing server to other secondary virtual conferencing servers.

In addition, the bandwidth used between virtual conferencing servers is reduced by deploying the slave virtual conferencing servers at remote sites. If all the virtual conferencing servers are capable of doing transcoding as well as being a slave virtual conferencing server for encryption and forwarding, and if the master virtual conferencing server fails for any reason, one of the slave virtual conferencing servers can become the master virtual conferencing server for the conference.

Another example of this media processing operational split or distribution may be implemented using a virtual conferencing server cluster. One of the client terminals106-1-min the cluster may be designated as the master virtual conferencing server, while other client terminals106-1-mmay be designated as slave virtual conferencing servers for a conference. This allows all the client terminals106-1-min a cluster to be used in a conference call.

Another example of this media processing operational split or distribution may be implemented using a single multiprocessor machine. For example, a multiprocessor machine or device may be selected as a virtual conferencing server. The multiprocessor machine may be partitioned into multiple threads each capable of running on a different processor. While it may be more efficient for a single thread to do the processing for a single conference, a master conference thread may own the conference and do the transcoding and media mixing, but hand off the packets to one or more slave threads to do such operations as encryption, decryption and sending. This would allow a single conference to use all of the processors in a multiprocessor machine rather than scale only to the size of a single processor.

Operations for the above embodiments may be further described with reference to the following figures and accompanying examples. Some of the figures may include a logic flow. Although such figures presented herein may include a particular logic flow, it can be appreciated that the logic flow merely provides an example of how the general functionality as described herein can be implemented. Further, the given logic flow does not necessarily have to be executed in the order presented unless otherwise indicated. In addition, the given logic flow may be implemented by a hardware element, a software element executed by a processor, or any combination thereof. The embodiments are not limited in this context.

FIG. 3illustrates one embodiment of a logic flow300. Logic flow300may be representative of the operations executed by one or more embodiments described herein, such as multimedia conferencing system100, conferencing server102, virtual conference manager104, client terminal106, and/or virtual conferencing server module110. As shown inFIG. 3, a location may be determined for multiple client terminals in a conference call at block302. A distribution plan may be generated based on the locations at block304. A first client terminal may be selected to operate as a first virtual conferencing server based on the distribution plan at block306. A second client terminal may be transferred from a conferencing server to the first virtual conferencing server at block308. Once transferred, video information in a video stream for the second client terminal may be sent from the conferencing server to the first virtual conferencing server. The embodiments are not limited in this context.

In one embodiment, for example, a first bandwidth estimate from the first client terminal and a second bandwidth estimate from the second client terminal may be received. The first bandwidth estimate may be compared with the second bandwidth estimate. The first client terminal may be selected to operate as the first virtual conferencing server based on the comparison. The embodiments are not limited in this context.

In one embodiment, for example, an input bit rate budget estimate and an output bit rate budget estimate may be received for the first client terminal. A bandwidth estimate may also be received for the second client terminal. The input bit rate budget estimate and the output bit rate budget estimate may be compared with the bandwidth estimate. The first client terminal may be selected to operate as the first virtual conferencing server based on the comparison. The embodiments are not limited in this context.

In one embodiment, for example, various media processing operations may be performed by the first virtual conferencing server for the second client terminal, such as security operations (e.g., encryption, decryption), video encoding/decoding operations, video transcoding operations, trans-rating, audio encoding/decoding operations, media mixing, and so forth. The embodiments are not limited in this context.

In one embodiment, for example, a third client terminal may be selected to operate as a second virtual conferencing server based on the distribution plan, with the first virtual conferencing server and the second virtual conferencing server forming a virtual conferencing server cluster. The virtual conferencing server cluster may have various use cases. For example, a failure condition may be detected for the first virtual conferencing server, and the second client terminal may be transferred from the first virtual conferencing server to the conferencing server or second virtual conferencing server. The embodiments are not limited in this context.

In one embodiment, for example, a third client terminal may be selected to operate as a second virtual conferencing server based on the distribution plan, with the first virtual conferencing server and the second virtual conferencing server forming a virtual conferencing server cluster. The virtual conferencing server cluster may have various use cases. For example, a current traffic load may be detected for the first virtual conferencing server, and the second client terminal may be transferred from the first virtual conferencing server to the conferencing server or second virtual conferencing server to reduce the current traffic load for the first virtual conferencing server. The embodiments are not limited in this context.

Another advantage of the concept of using virtual conference servers leads to the possibility to lay out efficient topologies in the case of scalable video. For example, the first conference server may forward the current video source (106-1) to all participants that can receive and process the video stream “as is” where no traffic shaping is needed in the server. One of the client terminals may become a virtual server and has the responsibility to do a first pass at traffic shaping such as removing an initial set of temporal/spatial scales in order to adjust the video rate sent to the participants who can receive and process the video stream at slightly less rate/complexity than the original video. A client terminal may be selected as a second virtual server and is responsible for removing additional temporal/spatial scales to adjust to a set of clients with even bandwidth or performance capability, and so forth. This is a special case illustrating that the distribution map of the virtual servers can be driven by considering an aggregation of client terminals connected at similar bandwidth and/or sharing similar performance/capability.

Some embodiments may be implemented, for example, using a machine-readable medium or article which may store an instruction or a set of instructions that, if executed by a machine, may cause the machine to perform a method and/or operations in accordance with the embodiments. Such a machine may include, for example, any suitable processing platform, computing platform, computing device, computing device, computing system, processing system, computer, processor, or the like, and may be implemented using any suitable combination of hardware and/or software. The machine-readable medium or article may include, for example, any suitable type of memory unit, memory device, memory article, memory medium, storage device, storage article, storage medium and/or storage unit, for example, memory, removable or non-removable media, erasable or non-erasable media, writeable or re-writeable media, digital or analog media, hard disk, floppy disk, CD-ROM, CD-R, CD-RW, optical disk, magnetic media, magneto-optical media, removable memory cards or disks, various types of DVD, a tape, a cassette, or the like.