WO2000052887A1 - Multiparty conferencing and collaboration system - Google Patents

Multiparty conferencing and collaboration system Download PDF

Info

Publication number
WO2000052887A1
WO2000052887A1 PCT/US2000/001198 US0001198W WO0052887A1 WO 2000052887 A1 WO2000052887 A1 WO 2000052887A1 US 0001198 W US0001198 W US 0001198W WO 0052887 A1 WO0052887 A1 WO 0052887A1
Authority
WO
WIPO (PCT)
Prior art keywords
host
conference
control
application program
share
Prior art date
Application number
PCT/US2000/001198
Other languages
French (fr)
Inventor
Laura J. Butler
Original Assignee
Microsoft Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corporation filed Critical Microsoft Corporation
Priority to EP00913235A priority Critical patent/EP1159803B1/en
Priority to AU34715/00A priority patent/AU3471500A/en
Priority to DK00913235.8T priority patent/DK1159803T3/en
Priority to AT00913235T priority patent/ATE557492T1/en
Publication of WO2000052887A1 publication Critical patent/WO2000052887A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/038Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1813Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
    • H04L12/1827Network arrangements for conference optimisation or adaptation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/104Grouping of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04804Transparency, e.g. transparent or translucent windows
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/02Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the way in which colour is displayed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/062Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality

Definitions

  • the instant invention relates to Internet and intranet multiparty conferencing and collaboration tools, and more particularly to a multiparty conferencing and collaboration tool utilizing a per-host model command, control, and communication structure which also provides pre-meeting establishment and post-meeting maintenance of application sharing by a single user.
  • NetMeetingTM 2.0 In recognition of the changing way businesses need to function to survive and prosper in this distributed environment of the world-wide workplace, the assignee of the instant invention developed and released a network conferencing and collaboration tool called NetMeetingTM 2.0.
  • This tool provides H.323 standards-based voice and video conferencing, T.120 multipoint data conferencing including application sharing, clipboard sharing, file transfer, whiteboard, and chat features.
  • Application sharing is a feature of NetMeetingTM that allows a person in a conference running an application locally with local data (like NotepadTM) to send the graphics of the application to the other people in the conference.
  • the remote people see what the local person does, the title bar, the client area, obscured areas, etc.
  • the remotes can even control the shared application, the remote person in control's keyboard and mouse drive the keyboard and mouse of the person sharing the application. This results in appearance changes, like opening a new file would, and those will be transmitted back from the sharer to the others.
  • Another problem which became apparent as the number of meeting participants grew relates to the network traffic generated between participants under the T.128 application sharing protocol.
  • the number of message packets sent between these participants during operation and when a new person wanted to join the meeting increased to a point where the delay in communication and interruption of the meeting became excessive.
  • the computational algorithms used were complex, adding proportionally to the amount of time needed for anything to happen.
  • the delay in the meeting resulting from a new person joining could extend into the several minutes range. With this type of delay, people hangup, lose their Internet connection, lose interest, etc.
  • the T.128 model utilized in this NetMeetingTM system was a global free-for-all model where all members were peers. Every person in the conference would maintain a global list, ordered from front to back of all of the shared applications of everybody in the conference, merged completely together. Each person had to be in lock-step with the others, so that the positions, order, and appearance of all shared applications were in sync. Any change in order, state, or position had to be transmitted to everyone in the meeting. This would frequently cause a Ping-Pong effect whereby the new global list would be sent, someone in the conference would decide it was out of date because their shared application had moved, and would transmit a new window list, and so forth.
  • a further problem identified relates to the initiation of an application share for a conference.
  • the T.128 protocol utilized in NetMeetingTM 2.0 requires two people to be in a conference before anybody could share an application. This requirement also meant that if the second-to-last person left the conference, sharing would stop if it were ongoing. This requirement existed because starting up application sharing was a call-response process. The person wanting to share an application would broadcast an "is it ok" packet, and then wait for a response saying "sure, go ahead" before beginning the share. This turned out to be a much worse than is may have first appeared.
  • An additional problem relates to the prior T.128 protocol for NetMeetingTM having a limit of 256 colors, 8 bits per pixel (bpp). If a user shared applications on a screen that was running at a greater color depth than 256, information would be lost. The graphics would be constrained and colors would be mapped to the closest equivalent in a 256 color palette. Simple applications did not experience much of a problem, since not many applications make full use of the available colors. The system colors and other common ones are always available. However, a high end bitmap or a web page with photos, for example, would not look good when shared. They would look posterized on the remote users' monitors.
  • the inventive concepts and teachings of the instant invention involve the application sharing protocol otherwise known as T.128, as preferably implemented in NetMeetingTM 3.0.
  • T.128 preferably implemented in NetMeetingTM 3.0.
  • These protocol changes are the result of a shift from a global collaboration model of prior versions of NetMeetingTM to the "per-host model" of NetMeetingTM 3.0 and later versions.
  • the implementation of the per-host model vastly increases the functionality and ease of use of network conferencing tools by reducing network traffic, allowing greater scalability, providing better control and collaboration among users, allowing solitary members to begin a share without the necessity of a second or subsequent party, and supporting true color graphics.
  • the network traffic almost always originates from the host only as opposed to being globally transmitted by each of the members of the conference. While multiple members of the conference may share an application, this per-host model allows each of those members who are sharing to act like a miniature server for the conference, i.e. a host of that shared application. Updates, therefore, instead of being globally transmitted by all members of the conference, simply now stream down from the host. This requires only that the members of the conference need the capabilities of that particular host. A performance improvement is particularly noticeable in the per-host model when a member of the conference is in control of the host. In the per-host model the controlling member transmits its keyboard and mouse move messages privately to the host who then periodically broadcasts the current cursor position to all members of the conference.
  • SWL Shared Window Lists
  • AWC Active Window Coordinator
  • HET Host Entity Tracker
  • SNI Synchronizing New Individuals
  • CA control arbitration
  • CA30 new control
  • IM Input Manager
  • a further embodiment of the instant invention includes a new collaboration/control model for the application sharing protocol T.128 as implemented in the per-host model of NetMeetingTM 3.0.
  • the control/ collaboration model is per-host.
  • the host is in control not only of her shared application, but also of when and to whom control is relinquished. This allows a host to share an application without worrying about inadvertently losing control of her shared application, and also allows a host to take control of another host without requiring that she give up control of her shared applications.
  • This ability to designate a host's controllable status as well as the granting or denying of control to a member is effectuated through a simple process.
  • a host may indicate that her applications are not controllable, in which case she has full control of her shared applications without further interaction or requirement on her part.
  • the host may, at any time during the share, designate an application as being controllable, in which case control of her shared application may be passed to another member of the share.
  • the host may decide to pass control by her own initiation to another member of the share by offering control to that member.
  • the host invites a remote to assume control of the shared application at which point the remote then has the option to accept control or decline the offer. Until the remote has either accepted or declined the invitation to assume control of the shared application, the host has the power to revoke the invitation.
  • a remote may also request permission from the host to take control of her shared application. Under this condition the remote sends a request to assume control to the host who then has the option to either accept or decline the request for assumption of control. As with the invitation to assume control, the remote who has initiated the request has the power to cancel the request at any time prior to the host's acceptance or declination of granting control. Further, to ensure that requests and invitations do not go unanswered, the system also includes a time out function whereby a request or an invitation is only valid for a certain period of time after which the request or invitation is automatically declined. At any point during the remote control of the host's shared application, the host has the power to immediately terminate the remote's control.
  • the host also has the less intrusive option of simply pausing the remote's control temporarily while still maintaining that remote in actual control of the shared application. Once the host unpauses the control the remote then is able to pick up where she left off.
  • the control may also be passed from one remote to another in this preferred embodiment.
  • the per-host model ensures that the host of the shared application agree with the passing of control to a subsequent remote before actual control is passed to that remote. If the passing of control to a subsequent remote is agreeable with the host, control is passed to that subsequent remote. If the host disagrees with the subsequent passing of control to the subsequent remote, control stays with the initial remote user.
  • a similar mechanism is utilized at the remote level for requesting or inviting control.
  • the ultimate decision maker for the shared application control is the host who initiated the share.
  • the memory allocated to each member of the conference is now set dynamically such that each member is given a minimum allocation of memory which may be adjusted once that member begins to share. Further, since the memory allocation is now dynamic, the necessity for placing a maximum limit on the number of users of a conference is no longer required. Therefore, the system of the instant invention allows as many members in a conference as may be supported by the meeting or conference host's memory availability. As new members join a conference or as old members leave a conference, memory is dynamically allocated to or freed from that member without significant disruption to the overall operation of the system.
  • the new T.128 protocol of the instant invention also preferably allows a one person conference by not waiting for a response to the broadcast "is it okay" packet sent to establish a share. Instead, the new T.128 protocol assumes that sharing has succeeded if the person sharing is also the host of the meeting. This mechanism also resolves any conflict resolution problem by always working in favor of the meeting or conference host should two people attempt to share the first thing at about the same time. Further, the conflict resolution works in favor of the more senior conference or meeting member (the one who joined the meeting or conference earlier than the other) should the conflict not involve the meeting or conference host.
  • a preferred embodiment of the instant invention utilizes the new T.128 protocol to support true color application sharing in a 24 bits per pixel, non-palettized, standard interchangeable format that maps directly to the video hardware.
  • 24 bits per pixel true color is supported, it will only be sent if everyone in the conference has the capability to view it and everybody has a 24 bpp or greater display. If not everyone has a 24 bpp or greater display, the information will not be accurately displayed on their machine and, since such true color support generates a lot more data, there is no need to send such high quality video information if it cannot be viewed accurately anyway. This additional data does not affect performance much if applications such as NotePadTM are being shared.
  • FIG. 1 is a simplified block diagram illustrating an exemplary operating environment suitable for application of the instant invention.
  • FIGs. 2a-c graphically illustrate in simplified bar chart form the dynamic memory allocation of an embodiment of the instant invention.
  • FIG. 1 in the following discussion are intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented.
  • the invention will be described in the general context of computer-executable instructions, such as program modules, being executed by a personal computer.
  • program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
  • program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
  • program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
  • the invention may be practiced with other computer system configurations, including handheld devices, microprocessor systems, microprocessor-based or programmable computer electronics, network PCs, minicomputers, mainframe computers, and the like.
  • the invention may also be practiced and distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
  • program modules may be located in both local and remote memory storage devices.
  • an exemplary system for implementing the invention includes a general purposed computing device in the form of a conventional personal computer 20, including a processing unit 21, a system memory 22, and a system bus 23 that couples various system components including the system memory to the processing unit 21.
  • the system bus 23 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
  • the system memory includes read-only memory (ROM) 24 and random access memory (RAM) 25.
  • ROM read-only memory
  • RAM random access memory
  • the personal computer 20 further includes a hard disk drive 27 for reading from and writing to a hard disk, not shown, a magnetic disk drive 28 for reading from or writing to a removable magnetic disk 29, and an optical disk drive 30 for reading from or writing to a removable optical disk 31 such as a CD ROM or other optical media.
  • the hard disk drive 27, magnetic disk drive 28, and optical disk drive 30 are connected to the system bus 23 by a hard disk drive interface 32, a magnetic disk drive interface 33, and an optical drive interface 34, respectively.
  • the drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other date for the personal computer 20.
  • exemplary environment described herein employs a hard disk, a removable magnetic disk 29 and a removable optical disk 31, it should be appreciated by those skilled in the art that other types of computer readable media which can store data that is accessible by the computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read-only memories (ROMs), and the like, may also be used in the exemplary operating environment.
  • RAMs random access memories
  • ROMs read-only memories
  • a number of program modules may be stored on the hard disk, magnetic disk 29, optical disk 31 , ROM 24, or RAM 25, including an operating system 35, one or more application programs 36, other program modules 37, and program data 38.
  • a user may enter commands and information into the personal computer 20 through input devices such as a keyboard 40 and a pointing device 42.
  • Other input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like.
  • These and other input devices are often connected to the processing unit 21 through a serial port interface 46 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB).
  • a monitor 47 or other type of display device is also connected to the system busy 23 via an interface, such as a video adapter 48.
  • personal computers typical include other peripheral output devices (not shown), such as speakers and printers.
  • the personal computer 20 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 49.
  • the remote computer 49 may be another personal computer, a server, a router, a network PC, a peer device, or other common network node, and typically includes many or all of the elements described above relative to the personal computer 20, although only a memory storage device 50 has been illustrated in FIG. 1.
  • the logical connections depicted in FIG. 1 include a local area network (LAN) 51 and a wide area network (WAN) 52.
  • LAN local area network
  • WAN wide area network
  • the personal computer 20 When used in a LAN working environment, the personal computer 20 is connected to the local network 51 through a network interface or adapter 53. When used in a WAN networking environment, the personal computer 20 typically includes a modem 54 or other means for establishing communications over the wide-area network 52, such as the Internet.
  • the modem 54 which may be internal or external, is connected to the system bus 23 via the serial port interface 46.
  • program modules depicted relative to the personal computer 20, or portions thereof may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing the communications link between the computers may be used, e.g. dial-up modems/xDSL/cable modems, etc.
  • a preferred embodiment of the instant invention involves enhancements to the T.128 protocol to allow for the efficient scalability of the conferencing and collaboration tool.
  • An embodiment of the instant invention incorporating the teachings below may be found in a new release of the assignee's tool, NetMeetingTM 3.0.
  • the ITU-T T.120, H.320, H.323, and H.324 standard comprise the core technologies for multimedia teleconferencing.
  • the T.120 standards address Real Time Data Conferencing
  • the H.320 standards address ISDN Videoconferencing
  • the H.323 standard addresses Video (Audiovisual) communication on LANs
  • the H.324 standard addresses video and audio communications over low bit rate connections such as POTS modem connections.
  • H.323 is so widespread because TCP/IP is extremely common and available for LANs, WANs, dial-up, xDSL, and all sorts of Network devices/configurations.
  • the teachings and content of these standards are herein incorporated in their entirety by reference thereto.
  • the T.120 family of standards cover the document conferencing and application sharing (sometimes called data conferencing) portion of a multimedia teleconference.
  • the recommendations specify how to efficiently and reliably distribute files and graphical information in real-time during a multipoint multimedia meeting.
  • the objective of the standards is to assure interoperability between terminals without either participant assuming prior knowledge of the other system; permit data sharing among participants in a multimedia teleconference, including white board image sharing, graphic display information and image exchange, application sharing; and specify infrastructure protocols for audiographic or audiovisual applications.
  • the T.120 series governs the audiographic portion of the H.320, H.323, and H.324 series and operates either within these or by itself.
  • the T.120 suite consists of a series of recommendations, which are summarized as follows:
  • T.120 Data protocols for multimedia conferencing: This provides an overview of the T.120 series.
  • T.121 Generic Application Template This provides a guide for development of T.120 application protocols.
  • MCS Multipoint Communication Service
  • T.123 Protocol Stacks for audiographic and audiovisual teleconference applications This specifies transport protocols for a range of networks.
  • GCC Generic Conference Control
  • MCS Multipoint Communication Service
  • T.126 Multipoint still image and annotation protocol This defines collaborative data sharing, including white board and image sharing, graphic display information, and image exchange in a multipoint conference.
  • T.127 Multipoint Binary File Transfer Protocol This defines a method for applications to transmit files in a multipoint conference.
  • T.128 Multipoint application sharing protocol This defines how participants in a T.120 conference can share local applications such that other conference participants can see the image of the shared application, and use the mouse and keyboard to take control of the shared application as if it were running locally.
  • T.134 Text chat application entity A T.121 APE definition for a text chat protocol.
  • T.135 User-to-reservation system transactions within a T.120 conference: This defines conferencing reservation protocols in a T.120 environment, typically between a client application and a scheduling systems which reserves resources for multipoint control units (MCUs or "bridges").
  • MCUs or "bridges” multipoint control units
  • T.136 How Remote Device Control and configuration may be performed using T.120 as the transport protocol.
  • T.VMR Virtual Meeting Room control Contains some material from previous T.13x drafts, concentrates on audio + dataconferencing.
  • a preferred embodiment of the instant invention provides enhancements specifically to the T.128 Multipoint Application Sharing Protocol to substantially improve scalability.
  • scalability is improved by eliminating a fixed limit on the number of users, by reducing the amount of additional memory needed to hold information for a new member/collaborator/sharer in a conference, by reducing the amount of additional total network traffic amongst the members of a conference required to complete the join/collaboration/share during a conference, and by reducing the computational complexity of the algorithms used, which is proportional to the amount of time required for anything to happen during a conference.
  • T.128 model of the instant mvention is a per-host model.
  • each person hosting (sharing an application) acts like a miniature server for the conference.
  • Network traffic almost always originates from hosts only, and wends its way down to the others viewing in the conference.
  • Members have separate state information for each person who is sharing.
  • the updates (shared application lists, the graphics of the shared applications, the current cursor position and shape) stream down from the host.
  • To interpret packets coming from the host only requires the viewer to know the capabilities of the host.
  • the network traffic from a viewer is not broadcast, but sent privately back to the host, when controlling.
  • T.128 has distinct send side (hosting) and receive side (viewing) parts that compose the logical T.128 applet.
  • a node in a conference is a host when it is sharing applications or its desktop.
  • the act of hosting or sharing is the process of trapping the graphics on the screen and transmitting the updates for the entities that are shared.
  • There is an UI applet for hosting which basically is a dialog that lists all of the top level applications running along with the entire desktop. This UI shows what is shared, and allows a user to share/unshare items and to stop sharing everything. This applet also allows a user to change whether the shared applications/desktop are controllable, and has other options for 24-bit color sharing and automatic handling of control requests.
  • a node in a conference is a viewer when a remote node is hosting and it has AS active (unless application sharing is prevented by system policy).
  • the UI for viewing may be a frame window displaying the shared contents of the remote host.
  • a host in a conference is controllable when it has checked Allow Control in the Conf Tools menu (or if SDK code does it pragmatically). At this point, it is possible for remote viewers to take control of it.
  • a viewer takes control of a controllable host it becomes the controller of the host.
  • the host's own keyboard and mouse are locked, and input comes from the controller instead.
  • the act of controlling is the process of sending input and window activation back to the host to drive its shared entities.
  • T.128 is the least T.120-ized of the standard applet protocols, since it came from a non-T.120 two person only primitive world (R.l 1). As such, there is some redundancy. Some of the rich T.120 primitives, like getting into conferences, exchanging capabilities, and determining the roster, are found in a more primitive form in T.128. So a share gets created, joined, and ended just like a conference does. And members are added and deleted just like in a conference.
  • CMG the T.120 wiring to find out about calls and activate AS sessions
  • S20 the share establishment/ capabilities exchange/member join/leave/share termination part
  • CPC the member capabilities data sent via S20 control packets
  • DATA the AS streaming part, for hosting and controlling, which accounts for the capabilities of the share members so it does not send data or packets that they cannot understand.
  • CMG is utilized to find out when calls start, when calls end, and when members are added/ removed.
  • AS receives a permit to enroll indication notification. It enrolls its application by filling in a GCC session key field with appropriate key types, capability structure, etc. as is standard.
  • the enroll request is filled in and the application enroll method is called to enroll or unenroll in the conference starting/ending.
  • an enroll confirm notification is received, it looks for success or failure. If failure, it cleans up as though the call had ended. If success, it enrolls the new member and watches for the application roster report indication notifications that indicate change.
  • CMG looks for the local node in the member list, the first time it is seen the member is considered finally to be in a T.120 call.
  • AS application sharing
  • S20 begins where CMG leaves off. In this exemplary embodiment there are six control packets, then one for data which is used by the streaming part of sharing. All S20 packets have a header.
  • the exemplary packet types are as follows:
  • the capabilities and user name are a couple hundred bytes of data and are included in these packets.
  • a node When leaving an existing share, a node broadcasts an S20_LEAVE packet on the T.128 channel. The other members of the share will see this message and remove the member leaving from their member lists.
  • something goes wrong letting a new node join into a share e.g. if a share is taking place with members utilizing
  • NetMeetingTM 3.0 embodying the teachings of the instant invention and a member utilizing the old NetMeetingTM 2.x tries to join, the share creator broadcasts an S20_DELETE packet on the T.128 channel with the MCS user
  • the share ends when the share creator leaves the share.
  • the share creator will broadcast an S20_END packet on the T.128 channel, and the other members will clean up and terminate also.
  • S20_END packet If no share exists when a user tries to share an application, that node creates a share first, then continues with sharing the application.
  • the node broadcasts and S20_CREATE packet on the T.128 channel.
  • There are ways of arbitrating conflict e.g. if two participants both try to create a share around the same time. In general, in prior systems the share is not created until at least one remote node sends back an S20_RESPOND packet acknowledging the S20_CREATE request.
  • the member name and the member application sharing capabilities are exchanged via the S20 control packets.
  • the share capabilities are recalculated. Most of these capabilities are used to determine what kind of application sharing data to send when hosting. Prior systems used to do a lot of recalculation whether it was hosting or not. The system of the instant invention, however, only does recalculation when it is hosting, since starting to host will calculate the capabilities based off the people in the share at the time anyway. Moreover, a lot of recalculation is gone completely making it a lot faster and easier to handle a new member of the share.
  • the total capabilities block is basically a list of the area capabilities (PROTCAPS) blocks with IDs for each. Members ignore PROTCAPS blocks with unrecognized IDs.
  • a node when a node starts to host, it creates outgoing caches with exactly the sizes it wants, which it has specified in its capabilities already as described above. When the others find out that somebody has started hosting, they create incoming caches of the sizes specified in the host's capabilities. Further, when someone new joins the share, the existing members do not have to do a thing. The new member will find out that someone is hosting, and will in turn create incoming caches from the capability sizes.
  • a viewer only has to know about the host's capabilities. The viewer creates caches based off only the sizes given in the host's capabilities. After this the process is done, no recalculation is necessary.
  • the outgoing caches for bitmaps/ cursors/ palettes/savebits/order encoding are created on a node when it starts to host and freed when it stops.
  • the corollary incoming caches for bitmaps/ cursors/palettes/savebits/order encoding are created for a remote node on viewers when they find out the node has started to host, and freed when they find out the node has stopped hosting.
  • the data packets transmitted are prefixed with the S20DATAPACKET structures, then a DATAPACKETHEADER.
  • These are the stream types (dictionaries). All of the packet types are grouped into one of the few streams, the groups have much in common as far as contents and sizes, so they compress together well.
  • the types of data packets include drawing/graphics updates sent by the host and the supported font list, which is sent by everyone in the conference to each other. While this is really a capability, it is so large (could be 32K) it is not exchanged via the S20 protocol.
  • the data packets also include control packets, active window notification sent by the host, or activate/restore requests sent to the host, the shared window list sent by the host, the hosting state (hosting applications, hosting desktop, hosting nothing anymore) sent by the host, cursor appearance/position notification sent by the host, keyboard/mouse input sent from controller to the host, and a sync packet from existing member of a share to a new member to let the new member know that the group is aware of him and how to handle data from the group. This is needed because of cache states, order encoding data, and font lists.
  • Further data packet include the changed capability, e.g. when desktop size/color depth changes.
  • the compression types on the packet data include: not compressed; PKZIP compressed, but atomic, no info about previous packets is need to decompress; and persistent-PKZIP compressed, information about previous packets sent on same stream is needed to decompress.
  • the system of the instant invention provides fewer and smaller Shared- Window-List (SWL) broadcast packets.
  • SWL Shared- Window-List
  • These packets provide notification of the list of shard window states, positions, sizes, along with areas that are obscured, if anything has changed since last time.
  • the SWL packets were sent by people hosting, and by non-hosts if they were in control so that everyone else would sync to the placement of shadows on their system. Shadow windows, representing shared information from other people, were always included in the list as well. When joining and leaving, an empty packet was always sent, even if the member was not hosting.
  • the system of the instant invention also provides fewer Active-Window-Coordinator (AWC) broadcast packets. These packets provide notification of the currently active shared window (or NULL if none), if this window has changed. These packets also provide requests to activate/minimize/change state of a shared window. In the prior systems, the current active window was sent out periodically, even when not hosting. When hosting there were many different states, and applying notifications/requests from remotes would often cause another packet to be sent in a Ping-Pong effect. Additionally, there were requests to simulate tray behavior (right clicking on tray button for shadow of shared window would cause system menu to popup on host if in control), to close and minimize windows.
  • AWC Active-Window-Coordinator
  • notifications are only sent by hosts about currently active window. There is no need to distinguish different types of "no shared window” active cases, meaning fewer broadcasts. Only shared window or nothing is sent. Requests are only sent from the controller to the host to activate/unminimize shared window, or to inject Ctrl+Alt+Del in case of NT Remote Desktop Sharing (RDS).
  • RDS is a service process that uses application sharing to share the entire desktop of a machine back to whomever called in.
  • Ctrl+Alt+Del simulation is needed on NT because that is the way a user logs in, shuts down, or locks the workstation.
  • the system of the instant invention also provides fewer cursor broadcast packets, which provide current cursor image and position if either has changed.
  • the current cursor position was sent out periodically by everyone, as was the current cursor image.
  • a node may have sent out a cursor broadcast or an input broadcast.
  • the system of the instant invention only the host sends the cursor shape and position. If a host is controlled and its cursor position is out from the last know controller mouse position, a sync bit is added to the cursor position broadcast. The controller will, upon seeing this set, move his mouse to the cursor position given by the host.
  • the system of the instant invention also provides fewer Hosted-Entity- Tracker (HET) broadcast packets, which provide notification of current hosting application/desktop value.
  • HET Hosted-Entity- Tracker
  • the system of the instant invention also provides a significant reduction in the number of Synchronizing New Individuals (SNI) broadcast packets.
  • SNI Synchronizing New Individuals
  • These packets indicate a member joining, and are sent on each stream by each existing person when a new person joins into the T.128 share. They tell the new person that the sender knows he is present, that any data from that point on takes the new person's capabilities into account, and that the new person can now process packets from the sender. These must be sent and handled before anything can continue in the share.
  • SNI Synchronizing New Individuals
  • the system of the instant invention also provides fewer Control Arbitration (CA) packets, which provide notification of the current collaboration state (detached, collaborating, controlled, in control), and which provide requests to control, grants of control handled by the node currently in control.
  • CA Control Arbitration
  • control was global whereby all nodes collaborating are controlled by mouse and keyboard of the node in control. Nodes could be controlled (locked) even if they were not hosting. They would play back the mouse/keyboard input, only to discard it at the last second since it should only be played back to shared applications. Every state change was broadcast, and all nodes, whether hosting or not, needed to broadcast state changes. If a packet could not be broadcast (low memory or simply too much traffic), state change would not occur.
  • control state is broadcast from hosts only when allowing control state changes or when start/stop controlling. Control operations (taking control, releasing control, bouncing control, etc.) are private between host and another node and are not broadcasted.
  • the system of the instant invention does provide additional new control (CA30) packets, which provide request exchanges to take control, release control, bounce control, invite control, pass control, etc.
  • the new control model is similar to the calling model whereby a node asks to take control of a host like placing a call to a remote. The node gets back a response (no with reason or yes). Until this response, the node can time-out or cancel the request on the viewer side.
  • the host can allow the end user to accept or reject the incoming take control request. Either side can hang up, the controller can cancel or release control and the host can bounce control, this works locally even if packets cannot get out. Even if the system runs out of memory completely, the local node will not be stuck in a state it does not want to be in. Further, hosts can invite viewers to control them, like inviting a remote to join a conference.
  • the system of the instant invention also provides fewer Input Manager (IM) packets.
  • IM Input Manager
  • the person in control if collaborating, or any detached host, broadcasted input packets every mouse move/click/keypress.
  • everyone not collaborating treated these like notifications, and updates the keyboard state table/mouse position of the sender (and all controlled nodes if from person in control).
  • everyone collaborating treated these like requests and injected the input into their machine. This would be horribly slow in a large conference if a controller moved the mouse a lot.
  • NetMeetingTM 2.x collapsed the mouse packets which resulted in jerky and unresponsive cursor movement.
  • input packets are sent privately from a controller to a host, not broadcasted.
  • the controlled host then periodically broadcasts the new cursor position/shape due to the input played back from the controller. This allows multiple hosts to be simultaneously controlled by multiple independent users. The result in very high mouse fidelity and lower bandwidth in a large conference.
  • the host then entirely repaints that which is shared. After this, the host retransmits its state (HET) indicating what he is sharing (desktop, application, not). After this the host sends its font packet, and waits for the viewer's font packet.
  • HET state
  • the viewer's side On the viewer's side, once the S20_CREATE packet is received, a sanity check is performed on the capabilities. If all is well, the viewer replies with an S20_JOLN broadcast. At this point, the viewer and host are in a share. The caches are reset, a sync packet is sent to the creator, and the font list is sent. The viewer then receives the sync from the host, the font packet, and the desktop or application HET. The viewer then creates cursor cache, a palette cache, and a bitmap cache all of size the host said. The viewer then creates the compression saved history and the order decoding structures and memory. Finally, the viewer creates a bitmap for that person's desktop, or window to view what's shared. When the viewer wants to stop viewing, he sends a HET packet indicating that nothing is shared. The viewer then destroys the window, and frees the blocks shared. However, the viewer stays in the list.
  • the host does not send text drawings to the people in the conference at all. If text is put up by a shared application using a font that is not available on all remote viewers, a bitmap of that part of the screen is sent instead. While this is a lot bigger than a simple text drawing description, it is safe and can be handled by everyone in the conference. This is what application does in general when there is no commonality, it falls back to screen data. The viewer also needs the bitmap cache (toolbar images, etc.) and the order encoding cache. The host sends only change of drawing unit of the type. The header for each drawing unit indicates the field types that are being sent. If these are not there, then they are the same as the previous one. When someone joins a share, the host invalidates the entire screen and forces a refresh (repaint from scratch). Then the caches are rebuilt.
  • the host For application sharing, the host needs to represent the window to the viewer, with a list of what is shared, the z-order, the shape and position of each window, and what is currently active.
  • the playback of input first processes fast input such as the mouse clicks, cursor position and shape.
  • the window list for application sharing indicating what and where things are is processed.
  • the graphics are processed, including the list of orders and screen data. If, for any reason, the window list or graphics cannot be sent, they are skipped so that the fast input may again be processed.
  • the new collaboration model of the instant invention preferably implemented in NetMeetingTM 3.0 application sharing, is per-host.
  • collaboration it is meant the process of allowing, inviting, granting, and revoking control to others of shared applications.
  • This new model is developed to go along with per-host application sharing described above.
  • T.128 collaboration was global as described above.
  • Each member of the conference could start/stop collaborating.
  • Exactly one of the members collaborating was considered to be in control.
  • Her mouse/keyboard drove the mice/keyboards of the other members collaborating. Those other members were controlled, and their keyboards/mice were locked.
  • Collaboration means a user's mouse and keyboard are synchronized with those of all other members in the conference who are collaborating. The person in control is in control of all the other people collaborating, and his input is played back on all of those other machines.
  • NetMeetingTM 2.x a user could collaborate and be driven even if he were not sharing anything. This ended up being for no reason, since all of the played back input would eventually be discarded. Pressing the "Collaborate” button would do one of several somewhat unpredictable things depending on the state of the user and other people's states. It would either cause the user to start collaborating, to take control if already collaborating, or to stop collaborating.
  • collaboration is GLOBAL to the conference.
  • Collaboration is a set of states, detached or cooperating, and then in control only if cooperating. When the state changes, several broadcasts from different people occur.
  • the potential controller broadcasts "cooperating" to start collaborating if he isn't already, the potential controller broadcasts "request control” to take control, and the current controller broadcasts "granted control” to the potential controller.
  • the members collaborating one and only one person is in control. That person's mouse and keyboard drive the mice/keyboards of the other members collaborating.
  • Each control change requires some retransmitting of input state information, especially toggle keys, and discarding old accumulated input.
  • the person in control broadcasts his input messages to everybody.
  • the new control/collaboration model of the instant invention is per-host, a nice parallel to the new T.128 protocol.
  • Control rather than being global, is per-host.
  • Each the host can be controlled by one the remote, and several the hosts can be controlled in parallel by several distinct the remotes.
  • a member can be a host and be able to control another without opening up his own shared applications to control. However, one can not be in control of a host and controlled by another the remote at the same time. Control can be initiated, canceled and refused on either side (the host and the controller). It can be handed off to a third party. There is graceful timing out and failure handling. Both the controller and the host can continue in low memory or stress situations.
  • the person in control sends all his input messages, mouse and keyboard, along with other information needed for states, like IME keys and TOGGLE keys, to the person controlled, privately or per-host.
  • the person controlled plays back this input, and attempts to prevent any from going to windows/applications that are not shared. That way a controller can not actually cause a click in a non-shared application.
  • the person controlled's mouse will move in sync with the controller, it must for dragging and other operations, but the actual mouse moves are not passed to the applications.
  • the controller's system does spoiling and other massaging of the input to send. For example, to prevent applications from going into drag-drop mode, application sharing waits a bit after a mouse button down looking for a mouse button up. That way the down/up go in the same packet and are played back quickly, creating a click. If the down/up were split up, the time latency is such that many applications including the explorer itself would assume the mouse was going to be used for dragging something. A corresponding example would be key downs/ups, to avoid simulated repeats, or duplicate keys caused by Windows itself generating other key sequences in the default window handler. And since mouse moves can be discarded, if outgoing packets start to backup, they can be combined. This may somewhat increase jerkiness on the remotes, but this is better than getting stuck because so much outgoing traffic is generated that nothing else can get sent.
  • the host broadcasts a control state packet, with control allowed or not allowed.
  • the remotes can use that as indication about whether to permit users to try to take control of the host via UI.
  • the remote user selects UI like menu command (or code makes function call).
  • the remote sends a take control request to the host.
  • the remote waits to hear back yes/no from The host.
  • the remote can either cancel the take control request or do some other control operation which will also cancel this one.
  • the host displays a take control request UI to the end user (or not if unattended or passes to code to handle). The user can say yes/no.
  • This UI is not modal, it can sit until the end user is ready, although it may time out and act like user said no.
  • the host sends a take control reply to the remote with the yes/no result. The second this happens, if yes, the host is controlled by the remote.
  • the host user selects UI (or code makes function call).
  • the host sends an invite control request to the remote.
  • the host waits to hear back from the remote.
  • the host can either cancel the invite control request or do some other control operation which will also cancel this one.
  • the remote displays the invite control request UI to the end user (or not if unattended or passes to code to handle). This user can say either yes or no.
  • This UI is not modal, it can sit until end user is ready, although it may time out and act like user said no.
  • the remote sends a invite control reply to the host with yes/no result. The second this happens, if yes, the host is controlled by the remote.
  • the operation occurs immediately and then the host sends a bounce control inform message to the remote. If the controller wants to let go of the host, the operation occurs immediately and then the remote sends a release control inform message to the host.
  • the host If the host is controlled but the user needs to handle something temporarily, like a call dialog or a popup from some other application, the host sends a pause control inform message to the remote.
  • the remote stays in control but can tell the user that the mouse/keyboard will not do anything until unpaused.
  • the host sends an unpause control inform message to the remote, and they pick up where they left off.
  • the remote sends a pass control request to the host.
  • the remote is no longer in control, i.e. the remote can not undo or take back the pass control request.
  • This is different than requesting or inviting control.
  • the reason for this is to avoid long stacked-up sequences of people in the conference waiting for each other to take their respective actions. With control, it was decided to only allow dependencies between a host and a viewer, none between different viewers. This avoids deadlocks and jams for long periods of time.
  • the host displays a pass control request UI to end user, who can say yes/no. If the host user says no, the host sends a pass control reply with failure immediately to the second remote.
  • the host forwards a pass control request to the second remote.
  • the host waits to hear back from the second remote.
  • the host can either cancel the pass control request or do some other confrol operation which will also cancel this one.
  • the second remote displays the pass control request UI to the end user, who can say yes/no.
  • the second remote sends the pass control reply to the host with the yes/no result. The second this happens, if yes, the host is controlled by the second remote. Otherwise, the host remains in control.
  • control is made per-host, with cancelable control request, via controller UI and controller SDK code (auto and confirm mode), confirm/deny control request, via host UI and the host SDK code (auto and confirm mode), and undo-ability of control by both controller and controlled the host, via UI and SDK code.
  • the moderation/control/floor model can be managed on a per-host basis.
  • the system of the instant invention provides collaboration/control which is per-host in the conference.
  • the hosts can turn on/off allowing control. Only the hosts which have allowed control can be controlled. Somebody not sharing is not a host, and therefore can not allow control nor be controlled. Taking confrol of a host does not open oneself up to being controlled (control is now unidirectional). Control is a privately negotiated contract between the host and the viewer, which once negotiated, cannot be randomly interrupted by a third member of the conference. Further, the hosts can grab confrol back from a controller without asking, and a controller can release confrol of a host without asking. Any third party who wants to confrol a host can not succeed until either the host or the controller breaks the control bond.
  • State changes are broadcast from the host sometime after changes actually happen. If a viewer is controlling a host, he can not be taken control of, and if a host is controlled, he can not take control of somebody else. Further, a viewer can not control more than one host at a time, and a host can not have more than one controller at a time.
  • a potential controller sends the host a private request with an unique ID (unique to controller) identifying the request. The controller then goes into a "waiting to hear back" state during which the controller can release confrol, since "release” will follow the "take” request.
  • the host responds privately to the controller with "accepted” or “rejected”. If accepted, the host then broadcasts state change some time later after receiving this information from the controller. During this state, the controller or the host can break the control bond at any time. If the controller breaks this bond, he sends the host privately a "released” notification, whereas if the host breaks it, he sends the controller privately a "bounced” notification. In all cases the request ID is remembered and used to identify the "control bond". This allows multiple/queued requests to be generated and responded to, ensuring the proper state on both sides when done. The hosts/controllers ignore out-of-date requests.
  • queued request responses are all turned into “denied-control not allowed” responses. Also, request responses following a queued "accept” must all be “denied” responses. If the user turns off allowing control, current controller is bounced as well. If the user tries to take control of a second host when a take control request is still queued, the first one is superseded. In other words, only one take control request will ever be queued. The user can release control of a host with a take control request queued. If that happens, the release simply cancels the queued take. If the user tries to take control of a host when an earlier take control request has been sent but has not yet been responded to, the first one is canceled by a "release" packet.
  • a preferred embodiment of the instant invention includes a message box with a "cancel” button.
  • the host can do whatever it wants when it receives a "take control" request, provided it follows the rules.
  • a message box with "person x would like to take control, ok/cancel” is displayed, and incoming requests are handled in order of receipt.
  • the system may, via SDK code, decide that the new controller is the one, bounce the current one, and allow the new user to take control. Further, as described above, it could remotely push control by asking a remote to take control of it.
  • Another advantage of the system of the instant invention is the dynamic allocation of system resources. Unlike the prior systems that allocated all of the memory which could ever be needed for each member of a conference, the system of the instant invention allocates system resources dynamically as the members require them, and then frees up those resources when they are no longer needed. Application sharing takes a lot of memory to trap the graphics on the screen, utilizing a big enough buffer to make that a useful amount so that the system can look backwards in the buffer to minimize the amount of data which is actually sent.
  • FIG. 2a illustrates in simplified bar chart form the memory allocations within the host 60, viewer A 62, and viewer B 64. As may be seen, within the host 60 memory has been allocated for itself 66, for viewer A 68, and for viewer B 70. Likewise, within viewer A 62 memory has been allocated for the host 72, itself 74, and viewer B 76; and within viewer B, memory for the host 78, viewer A 80, and itself 82.
  • FIG. 2b If the host now passes control to Viewer A 62, dynamic memory allocation is accomplished as illustrated in FIG. 2b. As may be seen, upon passing control to Viewer A, the host 60 allocates additional memory 84 for itself to process the inputs from Viewer A who is now in control of the shared applications. Likewise, Viewer A 62 also dynamically allocates additional memory 86 for itself to allow it to control the host. Viewer B's memory allocations remain unchanged.
  • FIG. 2c illustrates the dynamic freeing of memory when confrol is passed back to the host 60 from viewer A 62. As may be seen, the memory allocations return to their pre-controlled states once control is passed back to the host 60.
  • the system of the instant invention changes this operation by allowing a single user to initiate and conduct a share, with no other members of the conference being present. This is accomplished by not requiring the system to wait for a response. Instead, the system assumes that the sharing has succeeded, if the person sharing is also the host of the meeting. This operation is operates properly because any collision resolution (two people attempt to share the first thing about the same time) works in favor of the host always.
  • a host can share an application, or several applications, and unshare them too, when he is the only person in a call.
  • a host can share an application, share Notepad, and collaborate, e.g., then people can call the host, hang up, and call back as many times as they like, and the shared applications and collaborate state will persist.
  • a person could host a meeting and share one thing. However, that one thing was not really shared, instead it was queued up to be shared when a second person joined the call, the share button stayed disabled until that happened.
  • true color application sharing is a 24bpp, non-palettized, standard interchangeable format that maps directly to the video hardware.
  • 8bpp data which is a palettized format.
  • capabilities were added, negotiation of color depth to support this new capability and handle people with it properly was fixed, and the bitmap caches were revised to handle the larger memory requirements of bitmaps three times the size of those at 8bpp. Further, information was added to the drawing packets so the graphics of shared applications could be presented accurately.
  • True color data will only be sent if everyone has the capability to view it and everyone has a 24bpp or greater display. The reason for this is that a display of less than 24bpp will not accurately display 24bpp information. Even 16bpp (32,767 colors or 65,535 colors on NT) cannot display 24 bpp data properly because parts of the value get stripped, resulting in subtle green/blue/or red shifting, though not as extreme as today.
  • the purpose of true color is to view accurately high color images. Therefore, is should not be utilized in circumstances where the fidelity of the results is questionable. Further, it generates a lot more data even if a member is not really sharing anything that requires it, hence the restrictions.
  • the system of the instant invention will not compress any packet less than 256 bytes (prior system constant set at 128 bytes). Additionally, the system will persistently PKZIP packets less than or equal to 4k, which is the amount of persistent dictionary data saved. As it turns out, most packets larger than 256 bytes but smaller than 4k contain drawing orders.
  • the system dispenses with the exchange of capabilities and fonts. This allows true multicasting to take place (lurking).
  • the host simply transmits a periodic refresh, at which point he clears his cache and begins to rebuild them and forces a complete repaint of his screen. Since fonts are no longer exchanged, just images are sent to populate the cache and allow proper display on the viewer's screen (cache font glyphs). This elimination of capabilities and font exchange allows streaming of data to thousands of users which would otherwise be nearly impossible to complete.ry

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)

Abstract

A networking conferencing and collaboration tool utilizing an enhanced T.128 application sharing protocol. This enhanced protocol is based on a per-host model command, control, and communication structure. This per-host model reduces network traffic, allows greater scalability through dynamic system resource allocation, allows a single host to establish and maintain a share session with no other members present, and supports true color graphics. The per-host model allows private communication between the host and a remote with periodic broadcasts of updates by the host to the entire share group. This per-host model also allows the host to allow, revoke, pause, and invite control of the shared applications. Subsequent passing of control is provided, also with the hosts acceptance. The model contains no fixed limit on the number of participants, and dynamically allocates resources when needed to share or control a shared application. These resources are then freed when no longer needed. Calculation of minimum capabilities is conducted by the host as the membership of the share changes. The host then transmits these requirements to the share group.

Description

MULTIPARTY CONFERENCING AND COLLABORATION SYSTEM
Field Of The Invention
The instant invention relates to Internet and intranet multiparty conferencing and collaboration tools, and more particularly to a multiparty conferencing and collaboration tool utilizing a per-host model command, control, and communication structure which also provides pre-meeting establishment and post-meeting maintenance of application sharing by a single user.
Background Of The Invention
Real time communication is vital to the success of any business. As businesses continue to grow and develop outside the typical four walls of an office or factory, with multiple divisions located around the country and around the world, with an increasing number of employees telecommuting, and even with employees located in different distant parts of the same building, tools facilitating real time communication are becoming essential, not just for businesses to succeed, but also for businesses to simply survive. While the widespread use of local area networks (LANs), wide area networks (WANs), and e-mail has increased the productivity of many companies and individuals, such structures and tools do not provide, by themselves, the ability for real time group collaboration so essential for the success of work groups and design teams which, in turn, drives the success of businesses.
In recognition of the changing way businesses need to function to survive and prosper in this distributed environment of the world-wide workplace, the assignee of the instant invention developed and released a network conferencing and collaboration tool called NetMeeting™ 2.0. This tool provides H.323 standards-based voice and video conferencing, T.120 multipoint data conferencing including application sharing, clipboard sharing, file transfer, whiteboard, and chat features. Application sharing is a feature of NetMeeting™ that allows a person in a conference running an application locally with local data (like Notepad™) to send the graphics of the application to the other people in the conference. The remote people see what the local person does, the title bar, the client area, obscured areas, etc. The remotes can even control the shared application, the remote person in control's keyboard and mouse drive the keyboard and mouse of the person sharing the application. This results in appearance changes, like opening a new file would, and those will be transmitted back from the sharer to the others.
These features were immediately successful in aiding the real time communication and design activity of many businesses. As companies became more and more familiar with the advantages available through such a tool, their demand for increased usage of and capabilities from such a tool exceeded even the expectations of the assignee. However, at the same time that users were demanding increased usage, they were also demanding increased control, new features, and reduced network resource and time utilization from this tool.
One of the most desired feature enhancements of this tool was to increase the number of simultaneous users who could participate in an on-line conference. However, a 16-bit version of the application sharing code, NetMeeting™ 2.0, was built on the Win 9x platform which is interrupt based for mouse and keyboard inputs. As such, and because it was based off Win3.x technology, this platform required the up-front allocation of system memory for all users. This up-front allocation of system resources required that all resources which might ever be need by the users were allocated. This was quite wasteful since a good portion of the allocated resources needed for application sharing were allocated to many users who would never share or collaborate, and were only in the meeting to view. This could total three megabytes for each user, to represent their desktop and create the required object caches. Because of this memory allocation requirement and based on estimated typical system user resources, a maximum hard limit of 32 users was set in the system. While this was believed to be adequate for most meetings, the demand for more attendees based on the ease of communication flow soon pushed the limit beyond that which the system would allow.
Another problem which became apparent as the number of meeting participants grew relates to the network traffic generated between participants under the T.128 application sharing protocol. With increasing numbers of participants in a meeting, the number of message packets sent between these participants during operation and when a new person wanted to join the meeting increased to a point where the delay in communication and interruption of the meeting became excessive. In addition to the number of messages which were sent, the computational algorithms used were complex, adding proportionally to the amount of time needed for anything to happen. Depending on the particular connections between participants, e.g. the Internet, the delay in the meeting resulting from a new person joining could extend into the several minutes range. With this type of delay, people hangup, lose their Internet connection, lose interest, etc.
The T.128 model utilized in this NetMeeting™ system was a global free-for-all model where all members were peers. Every person in the conference would maintain a global list, ordered from front to back of all of the shared applications of everybody in the conference, merged completely together. Each person had to be in lock-step with the others, so that the positions, order, and appearance of all shared applications were in sync. Any change in order, state, or position had to be transmitted to everyone in the meeting. This would frequently cause a Ping-Pong effect whereby the new global list would be sent, someone in the conference would decide it was out of date because their shared application had moved, and would transmit a new window list, and so forth. This problem was exacerbated by the collaboration model which also required that all members of the conference periodically broadcast his or her mouse position. This additional network traffic was necessitated by the toggle during collaboration whereby only one of the collaborators controlled all of the collaborators1 mice and keyboards. Therefore, the host would periodically need to check where everyone's cursor is positioned.
As a result of this global, chaotic model, the total network traffic could become excessive due to the amount of this circular traffic, even from members not sharing anything. All of the packets of information were broadcast, with one copy for each member of the conference. The delays resulting from this excessive network traffic caused cursor movements, especially when in control of a remote member's application, to be extremely jerky. This made it almost impossible to control a remote's application with any degree of confidence that the remote user's mouse was really where the controlling member thought it was. Further, under this model no one could do anything until all members were up to date, which further slowed the conference response time. In addition to the network traffic described above, to interpret data from a host, e.g. the drawings of an application, all members in the conference had to know about and interpret the capabilities of all other members of the conference. This drove the network traffic volume even higher, and slowed the system response still further.
Another problem which became apparent from the global collaboration model of NetMeeting™ 2.0 as the number of members in a conference grew was the control of applications which were being shared. This control/collaboration model in the T.128 application sharing protocol of NetMeeting™ 2.0 was global. Each member of the conference could start/stop collaborating. Exactly one of the members collaborating was considered to be in control. Her mouse/keyboard drove the mice and keyboards of the other members collaborating. Those other members were controlled, and their mice and keyboards were locked. However, if they were not sharing anything, the mouse and keyboard input from the person in control would go to nowhere, since the remote users were only allowed to control shared applications, and not unshared ones. This appeared to lock their mice and keyboards for no reason, which was very frustrating especially in the multitasking world of Windows™. Additionally, anyone collaborating could become the person in control by a simple action such as a mouse click or key press. If several people took control around the same time, the last person to do so won, until the next person took control. There was no organization or order to the passing of control, it was a chaotic model. The users of the system soon termed this chaotic operation as "mouse wars." With a decent number of people in a conference, the telephone was the only way to keep things from getting out of hand. There was a lot of "OK, I am going to take control now, do not do anything anybody" discussion back and forth. Further, collaboration was a two-way street. A person might only want to control another's applications without exposing his own applications to another's control. Unfortunately, that was not possible in this model. Collaboration was all or nothing. Additionally, there was no way for a person to gracefully decline a control operation or even know that it was about to happen. Control would be yanked away without warning.
This global, chaotic collaboration model also added to the excessive network traffic described above. Each control change required some retransmitting of input state information, especially toggle keys, and discarding old accumulated input. The person in control broadcasted his input messages to everyone. All of the members collaborating played back these input messages, skipping ones that obviously would manipulate non-shared windows, and then if they ended up going to a window not shared, swallowed them at the last minute. That allowed the cursor to move, but the actual movement of the mouse notification to not get sent to the windows under the mouse if they are not shared. Further, there was required a lot of complicated token/sequence number/guessing/time stamp calculations performed to figure out who has control if several people try to take control at once, or if it is taking too long to hear back.
A further problem identified relates to the initiation of an application share for a conference. The T.128 protocol utilized in NetMeeting™ 2.0 requires two people to be in a conference before anybody could share an application. This requirement also meant that if the second-to-last person left the conference, sharing would stop if it were ongoing. This requirement existed because starting up application sharing was a call-response process. The person wanting to share an application would broadcast an "is it ok" packet, and then wait for a response saying "sure, go ahead" before beginning the share. This turned out to be a much worse than is may have first appeared. Users wanted to be able to organize a meeting whereby they could be the only person in the meeting for a while to allow them to set up attributes, applications, and files prior to having others join the meeting. Without this capability, much time is wasted by the other meeting participants while the host completes these activities with them present.
An additional problem relates to the prior T.128 protocol for NetMeeting™ having a limit of 256 colors, 8 bits per pixel (bpp). If a user shared applications on a screen that was running at a greater color depth than 256, information would be lost. The graphics would be constrained and colors would be mapped to the closest equivalent in a 256 color palette. Simple applications did not experience much of a problem, since not many applications make full use of the available colors. The system colors and other common ones are always available. However, a high end bitmap or a web page with photos, for example, would not look good when shared. They would look posterized on the remote users' monitors.
Summary Of The Invention
In view of the above identified and other problems existing in the art, the inventive concepts and teachings of the instant invention involve the application sharing protocol otherwise known as T.128, as preferably implemented in NetMeeting™ 3.0. These protocol changes are the result of a shift from a global collaboration model of prior versions of NetMeeting™ to the "per-host model" of NetMeeting™ 3.0 and later versions. The implementation of the per-host model vastly increases the functionality and ease of use of network conferencing tools by reducing network traffic, allowing greater scalability, providing better control and collaboration among users, allowing solitary members to begin a share without the necessity of a second or subsequent party, and supporting true color graphics.
By implementing a per-host model whereby communication with and control of the host takes place in a private fashion between the host and a remote with periodic broadcast updates by the host to the entire share group, the total number of network messages which are required to be transmitted between the members of the share group are greatly reduced. To contrast this per-host model, the prior versions of NetMeeting utilized a global model where each person in the conference would maintain a global list, ordering front to back, of all the shared applications of everybody in the conference, merged completely together. This resulted not only in a large number of messages being initially required to maintain the members of the conference in lockstep, but also had a ripple effect whereby each adjustment resulting from the reception of such a message would essentially be echoed back in a broadcast global fashion since a change had now occurred on that user's system.
In the per-host model, the network traffic almost always originates from the host only as opposed to being globally transmitted by each of the members of the conference. While multiple members of the conference may share an application, this per-host model allows each of those members who are sharing to act like a miniature server for the conference, i.e. a host of that shared application. Updates, therefore, instead of being globally transmitted by all members of the conference, simply now stream down from the host. This requires only that the members of the conference need the capabilities of that particular host. A performance improvement is particularly noticeable in the per-host model when a member of the conference is in control of the host. In the per-host model the controlling member transmits its keyboard and mouse move messages privately to the host who then periodically broadcasts the current cursor position to all members of the conference.
Industry performance data has indicated that a reduction in network traffic of about 25% in a 5 person conference with one person sharing. This reduction increases as the number of people sharing increases, and as the number of people in the conference increases. The reduction in network traffic when someone is controlling the shared applications of another is approximately 50% or more. This reduction could be increased, however it was decided instead to increase the fidelity of the mouse moves to allow finer movements, etc. for better responsiveness. This means that many more mouse move packets are sent than prior versions to allow for this better performance. The reduction in network traffic to add a new person to the conference is approximately 90% or more when the number of existing people is 20 or greater. This reduction is truly an unexpected result which was originally met with skepticism from industry experts until confirmed with actual measurments.
At a detailed level, the following packet changes are implemented for NetMeeting™ 3.0: fewer and smaller Shared Window Lists (SWL) broadcast packets; fewer Active Window Coordinator (AWC) broadcast packets; fewer cursor broadcast packets; fewer Host Entity Tracker (HET) broadcast packets; fewer Synchronizing New Individuals (SNI) broadcast packets; fewer control arbitration (CA) packets; new control (CA30) packets; and fewer Input Manager (IM) packets. These revised and new packets, and the way that they are shared when a new member joins the conference, result in a significant reduction in traffic during application sharing just to get everyone in synchronism with the sharing application.
A further embodiment of the instant invention includes a new collaboration/control model for the application sharing protocol T.128 as implemented in the per-host model of NetMeeting™ 3.0. In the new T.128 application sharing protocol, the control/ collaboration model is per-host. As such, the host is in control not only of her shared application, but also of when and to whom control is relinquished. This allows a host to share an application without worrying about inadvertently losing control of her shared application, and also allows a host to take control of another host without requiring that she give up control of her shared applications. This ability to designate a host's controllable status as well as the granting or denying of control to a member is effectuated through a simple process. Under this process a host may indicate that her applications are not controllable, in which case she has full control of her shared applications without further interaction or requirement on her part. Alternatively, the host may, at any time during the share, designate an application as being controllable, in which case control of her shared application may be passed to another member of the share. In this state the host may decide to pass control by her own initiation to another member of the share by offering control to that member. In this type of situation, the host invites a remote to assume control of the shared application at which point the remote then has the option to accept control or decline the offer. Until the remote has either accepted or declined the invitation to assume control of the shared application, the host has the power to revoke the invitation.
In addition to the host initiated invitation to assume control of the shared application, a remote may also request permission from the host to take control of her shared application. Under this condition the remote sends a request to assume control to the host who then has the option to either accept or decline the request for assumption of control. As with the invitation to assume control, the remote who has initiated the request has the power to cancel the request at any time prior to the host's acceptance or declination of granting control. Further, to ensure that requests and invitations do not go unanswered, the system also includes a time out function whereby a request or an invitation is only valid for a certain period of time after which the request or invitation is automatically declined. At any point during the remote control of the host's shared application, the host has the power to immediately terminate the remote's control. Further, the host also has the less intrusive option of simply pausing the remote's control temporarily while still maintaining that remote in actual control of the shared application. Once the host unpauses the control the remote then is able to pick up where she left off. The control may also be passed from one remote to another in this preferred embodiment. However the per-host model ensures that the host of the shared application agree with the passing of control to a subsequent remote before actual control is passed to that remote. If the passing of control to a subsequent remote is agreeable with the host, control is passed to that subsequent remote. If the host disagrees with the subsequent passing of control to the subsequent remote, control stays with the initial remote user. As with requesting or inviting control from a host, a similar mechanism is utilized at the remote level for requesting or inviting control. However, the ultimate decision maker for the shared application control is the host who initiated the share.
In a preferred embodiment of the instant invention, the memory allocated to each member of the conference is now set dynamically such that each member is given a minimum allocation of memory which may be adjusted once that member begins to share. Further, since the memory allocation is now dynamic, the necessity for placing a maximum limit on the number of users of a conference is no longer required. Therefore, the system of the instant invention allows as many members in a conference as may be supported by the meeting or conference host's memory availability. As new members join a conference or as old members leave a conference, memory is dynamically allocated to or freed from that member without significant disruption to the overall operation of the system.
The new T.128 protocol of the instant invention also preferably allows a one person conference by not waiting for a response to the broadcast "is it okay" packet sent to establish a share. Instead, the new T.128 protocol assumes that sharing has succeeded if the person sharing is also the host of the meeting. This mechanism also resolves any conflict resolution problem by always working in favor of the meeting or conference host should two people attempt to share the first thing at about the same time. Further, the conflict resolution works in favor of the more senior conference or meeting member (the one who joined the meeting or conference earlier than the other) should the conflict not involve the meeting or conference host.
Additionally, a preferred embodiment of the instant invention utilizes the new T.128 protocol to support true color application sharing in a 24 bits per pixel, non-palettized, standard interchangeable format that maps directly to the video hardware. However, while 24 bits per pixel true color is supported, it will only be sent if everyone in the conference has the capability to view it and everybody has a 24 bpp or greater display. If not everyone has a 24 bpp or greater display, the information will not be accurately displayed on their machine and, since such true color support generates a lot more data, there is no need to send such high quality video information if it cannot be viewed accurately anyway. This additional data does not affect performance much if applications such as NotePad™ are being shared. However, if a graphically intensive application is shared there may be significant performance impact. This is because a fixed amount of memory is devoted to the cached bitmaps, and the 24 bpp bitmaps are three times the size of an 8 bpp bitmap. Therefore, only one-third as many fit in the cache. This results in fewer cache hits which then necessitates the sending of bitmap bits more often. Further, since application sharing has a maximum uncompressed packet size of 32,000 bytes, it holds less true color screen data or true color bitmap cache orders, resulting in the requirement for sending more packets for the same area painted.
These and other features of the invention will become more apparent from the following detailed description when taken in conjunction with the accompanying drawings.
Brief Description Of The Drawings
FIG. 1 is a simplified block diagram illustrating an exemplary operating environment suitable for application of the instant invention; and
FIGs. 2a-c graphically illustrate in simplified bar chart form the dynamic memory allocation of an embodiment of the instant invention.
While the invention is susceptible of various modifications and alternative constructions, certain illustrative embodiments thereof have been shown in the drawings and will be described below in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions and equivalents falling within the spirit and scope of the invention as defined by the appended claims.
Detailed Description Of The Preferred Embodiment
FIG. 1 in the following discussion are intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented. Although not required, the invention will be described in the general context of computer-executable instructions, such as program modules, being executed by a personal computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations, including handheld devices, microprocessor systems, microprocessor-based or programmable computer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention may also be practiced and distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
With reference to FIG. 1, an exemplary system for implementing the invention includes a general purposed computing device in the form of a conventional personal computer 20, including a processing unit 21, a system memory 22, and a system bus 23 that couples various system components including the system memory to the processing unit 21. The system bus 23 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The system memory includes read-only memory (ROM) 24 and random access memory (RAM) 25. A basic input/output system 26 (BIOS), containing the basic routines that help to transfer information between elements within the personal computer 20, such as during startup, is stored in ROM 24. The personal computer 20 further includes a hard disk drive 27 for reading from and writing to a hard disk, not shown, a magnetic disk drive 28 for reading from or writing to a removable magnetic disk 29, and an optical disk drive 30 for reading from or writing to a removable optical disk 31 such as a CD ROM or other optical media. The hard disk drive 27, magnetic disk drive 28, and optical disk drive 30 are connected to the system bus 23 by a hard disk drive interface 32, a magnetic disk drive interface 33, and an optical drive interface 34, respectively. The drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other date for the personal computer 20. Although the exemplary environment described herein employs a hard disk, a removable magnetic disk 29 and a removable optical disk 31, it should be appreciated by those skilled in the art that other types of computer readable media which can store data that is accessible by the computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories (RAMs), read-only memories (ROMs), and the like, may also be used in the exemplary operating environment.
A number of program modules may be stored on the hard disk, magnetic disk 29, optical disk 31 , ROM 24, or RAM 25, including an operating system 35, one or more application programs 36, other program modules 37, and program data 38. A user may enter commands and information into the personal computer 20 through input devices such as a keyboard 40 and a pointing device 42. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 21 through a serial port interface 46 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port, or a universal serial bus (USB). A monitor 47 or other type of display device is also connected to the system busy 23 via an interface, such as a video adapter 48. In addition to the monitor, personal computers typical include other peripheral output devices (not shown), such as speakers and printers.
The personal computer 20 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 49. The remote computer 49 may be another personal computer, a server, a router, a network PC, a peer device, or other common network node, and typically includes many or all of the elements described above relative to the personal computer 20, although only a memory storage device 50 has been illustrated in FIG. 1. The logical connections depicted in FIG. 1 include a local area network (LAN) 51 and a wide area network (WAN) 52. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
When used in a LAN working environment, the personal computer 20 is connected to the local network 51 through a network interface or adapter 53. When used in a WAN networking environment, the personal computer 20 typically includes a modem 54 or other means for establishing communications over the wide-area network 52, such as the Internet. The modem 54, which may be internal or external, is connected to the system bus 23 via the serial port interface 46. In a networked environment, program modules depicted relative to the personal computer 20, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing the communications link between the computers may be used, e.g. dial-up modems/xDSL/cable modems, etc.
Having now described both the problems existing in the art and a suitable environment into which the solution provided by the instant invention is preferably applied, the focus is now turned to a description of a preferred embodiment of the instant invention. As indicated above, one of the first problems identified by users of NetMeeting™ 2.0 was the scalability problems associated with the fixed limit of 32 conference members and the static allocation of system resources driven by the Win 9x platform. A preferred embodiment of the instant invention, therefore, removes the fixed limit of users (now number of members in a conference is limited only by the available memory of the host) and utilizes dynamic system resource allocation. As these problems were resolved as will be described below, an underlying problem of excessive network traffic as the number of conference members grew resulting from the prior T.128 protocol was revealed. Therefore, a preferred embodiment of the instant invention involves enhancements to the T.128 protocol to allow for the efficient scalability of the conferencing and collaboration tool. An embodiment of the instant invention incorporating the teachings below may be found in a new release of the assignee's tool, NetMeeting™ 3.0.
Before discussing the specifics of a preferred embodiment of the instant invention, a brief overview of the multimedia teleconferencing standards is appropriate to form a foundation for the following teachings. The ITU-T T.120, H.320, H.323, and H.324 standard comprise the core technologies for multimedia teleconferencing. The T.120 standards address Real Time Data Conferencing, the H.320 standards address ISDN Videoconferencing, the H.323 standard addresses Video (Audiovisual) communication on LANs, and the H.324 standard addresses video and audio communications over low bit rate connections such as POTS modem connections. H.323 is so widespread because TCP/IP is extremely common and available for LANs, WANs, dial-up, xDSL, and all sorts of Network devices/configurations. The teachings and content of these standards are herein incorporated in their entirety by reference thereto.
The T.120 family of standards cover the document conferencing and application sharing (sometimes called data conferencing) portion of a multimedia teleconference. The recommendations specify how to efficiently and reliably distribute files and graphical information in real-time during a multipoint multimedia meeting. The objective of the standards is to assure interoperability between terminals without either participant assuming prior knowledge of the other system; permit data sharing among participants in a multimedia teleconference, including white board image sharing, graphic display information and image exchange, application sharing; and specify infrastructure protocols for audiographic or audiovisual applications.
The T.120 series governs the audiographic portion of the H.320, H.323, and H.324 series and operates either within these or by itself. The T.120 suite consists of a series of recommendations, which are summarized as follows:
Recommendation Description
T.120 Data protocols for multimedia conferencing: This provides an overview of the T.120 series.
T.121 Generic Application Template: This provides a guide for development of T.120 application protocols.
T.122 Multipoint Communication Service (MCS) Service
Description: This describes the multi-point services available to developers.
T.123 Protocol Stacks for audiographic and audiovisual teleconference applications: This specifies transport protocols for a range of networks.
T.124 Generic Conference Control (GCC): This defines the application protocol supporting reservations and basic conference control services for multipoint teleconferences.
T.125 Multipoint Communication Service (MCS) Protocol specification: This specifies the data transmission protocol for multipoint services.
T.126 Multipoint still image and annotation protocol: This defines collaborative data sharing, including white board and image sharing, graphic display information, and image exchange in a multipoint conference.
T.127 Multipoint Binary File Transfer Protocol: This defines a method for applications to transmit files in a multipoint conference.
T.128 Multipoint application sharing protocol: This defines how participants in a T.120 conference can share local applications such that other conference participants can see the image of the shared application, and use the mouse and keyboard to take control of the shared application as if it were running locally.
T.134 Text chat application entity: A T.121 APE definition for a text chat protocol.
T.135 User-to-reservation system transactions within a T.120 conference: This defines conferencing reservation protocols in a T.120 environment, typically between a client application and a scheduling systems which reserves resources for multipoint control units (MCUs or "bridges").
T.136 How Remote Device Control and configuration may be performed using T.120 as the transport protocol.
T.140 Protocol for multimedia application text conversation.
The protocol for text chat within T.120, goes with T.134.
T.VMR Virtual Meeting Room control. Contains some material from previous T.13x drafts, concentrates on audio + dataconferencing.
Of the above governing standards, a preferred embodiment of the instant invention provides enhancements specifically to the T.128 Multipoint Application Sharing Protocol to substantially improve scalability. As will be described more fully below, scalability is improved by eliminating a fixed limit on the number of users, by reducing the amount of additional memory needed to hold information for a new member/collaborator/sharer in a conference, by reducing the amount of additional total network traffic amongst the members of a conference required to complete the join/collaboration/share during a conference, and by reducing the computational complexity of the algorithms used, which is proportional to the amount of time required for anything to happen during a conference.
These enhancements are embodied in a new T.128 model. Unlike the global, chaotic model of NetMeeting™ 2.0, the T.128 model of the instant mvention is a per-host model. In this model, each person hosting (sharing an application) acts like a miniature server for the conference. Network traffic almost always originates from hosts only, and wends its way down to the others viewing in the conference. Members have separate state information for each person who is sharing. The updates (shared application lists, the graphics of the shared applications, the current cursor position and shape) stream down from the host. To interpret packets coming from the host only requires the viewer to know the capabilities of the host. The network traffic from a viewer is not broadcast, but sent privately back to the host, when controlling. The rest of the members in the conference see the results (changes in appearance, movement of the cursor, etc.) which are broadcast by the host later. Since input, mouse and keyboard messages, are only sent privately from a controller to a host, the latency and responsiveness, especially of the mouse, is much improved. This is especially noticeable in large conferences since there is no performance penalty as more people participate.
Specific changes in the T.128 protocol contemplated herein which allow the realization of the advantages of the instant invention involve not sending ignored user name/capabilities in some control packets; removing/ignoring many capabilities; streamlining cache capabilities negotiation when a node starts to share, stops sharing, and when a new person joins the conference; creating caches; order encoding data each time a note starts to host, and freeing/cleanup when the node stops hosting; eliminating some packet broadcasts to everyone in the conference or replacing them with targeted sends to an individual; and a new control model and new control packets. Like file transfer (T.127), T.128 has distinct send side (hosting) and receive side (viewing) parts that compose the logical T.128 applet. In the instant invention, a node in a conference is a host when it is sharing applications or its desktop. The act of hosting or sharing is the process of trapping the graphics on the screen and transmitting the updates for the entities that are shared. There is an UI applet for hosting which basically is a dialog that lists all of the top level applications running along with the entire desktop. This UI shows what is shared, and allows a user to share/unshare items and to stop sharing everything. This applet also allows a user to change whether the shared applications/desktop are controllable, and has other options for 24-bit color sharing and automatic handling of control requests. A node in a conference is a viewer when a remote node is hosting and it has AS active (unless application sharing is prevented by system policy). The UI for viewing may be a frame window displaying the shared contents of the remote host.
A host in a conference is controllable when it has checked Allow Control in the Conf Tools menu (or if SDK code does it pragmatically). At this point, it is possible for remote viewers to take control of it. When a viewer takes control of a controllable host, it becomes the controller of the host. When a viewer of a host becomes its controller, the host's own keyboard and mouse are locked, and input comes from the controller instead. The act of controlling is the process of sending input and window activation back to the host to drive its shared entities.
When at least one node in a conference is a host, the nodes in the conference are in a share. A share is another name for an active T.128 session. T.128 is the least T.120-ized of the standard applet protocols, since it came from a non-T.120 two person only primitive world (R.l 1). As such, there is some redundancy. Some of the rich T.120 primitives, like getting into conferences, exchanging capabilities, and determining the roster, are found in a more primitive form in T.128. So a share gets created, joined, and ended just like a conference does. And members are added and deleted just like in a conference.
In an exemplary embodiment of the instant invention, there are four parts to the T.128 protocol: CMG, the T.120 wiring to find out about calls and activate AS sessions; S20, the share establishment/ capabilities exchange/member join/leave/share termination part; CPC, the member capabilities data sent via S20 control packets; and DATA, the AS streaming part, for hosting and controlling, which accounts for the capabilities of the share members so it does not send data or packets that they cannot understand. The following description of an exemplary embodiment is included by way of example, and not by way of limitation, to enable one of ordinary skill in the art to practice an embodiment of the instant invention.
CMG is utilized to find out when calls start, when calls end, and when members are added/ removed. When a new call is starting, AS receives a permit to enroll indication notification. It enrolls its application by filling in a GCC session key field with appropriate key types, capability structure, etc. as is standard. The enroll request is filled in and the application enroll method is called to enroll or unenroll in the conference starting/ending. When an enroll confirm notification is received, it looks for success or failure. If failure, it cleans up as though the call had ended. If success, it enrolls the new member and watches for the application roster report indication notifications that indicate change. Finally, CMG looks for the local node in the member list, the first time it is seen the member is considered finally to be in a T.120 call. It processes its own section, looking for new members so it can add them, and for old members now gone so it can remove them. These are GROUPWARE members only, application sharing (AS) member addition/removal comes independently through the S20 protocol. When AS finally believes itself to be in a T.120 call, it attaches to the MCS domain so it can send and receive data. When the domain attachment is confirmed, AS joins two MCS channels: its own MCS user channel; and the MCS AS broadcast channel. When both of the MCS channels are joined, the system is ready.
S20 begins where CMG leaves off. In this exemplary embodiment there are six control packets, then one for data which is used by the streaming part of sharing. All S20 packets have a header. The exemplary packet types are as follows:
S20_CREATE Control packet to create a new share S20_JOIN Control packet to j oin an existing share S20_RESPOND Control packet to respond to and S20JOIN S20_DELETE Control packet to eject a member from the share S20_LEAVE Control packet to yourself leave an existing share S20_END Control packet to end an existing share S20_DATA Data packet, the S20 part is a header When the MCS channels are joined after a new call starts, AS broadcasts an S20_JOLN packet on the T.128 channel to join an existing share.
If there is an existing share, the system will see a response on the T.128 channel, an S20_RESPOND packet with the MCS user ID as the node being responded to, from the node that created the share. Others in the share will see the S20_RESPOND also. Each will add the new member into their member lists, and if successful, each will broadcast another S20_RESPOND out on the T.128 channel. This will be ignored by the existing people in the share, since they already know about these other existing members. The remote people are added one by one this way into the new member's member list. Preferably, these messages acknowledging the new person and informing him about the existing members are only sent privately to the new member to reduce network traffic. The capabilities and user name are a couple hundred bytes of data and are included in these packets. When leaving an existing share, a node broadcasts an S20_LEAVE packet on the T.128 channel. The other members of the share will see this message and remove the member leaving from their member lists. When something goes wrong letting a new node join into a share, e.g. if a share is taking place with members utilizing
NetMeeting™ 3.0 embodying the teachings of the instant invention and a member utilizing the old NetMeeting™ 2.x tries to join, the share creator broadcasts an S20_DELETE packet on the T.128 channel with the MCS user
ID of the node being ejected. The share ends when the share creator leaves the share. The share creator will broadcast an S20_END packet on the T.128 channel, and the other members will clean up and terminate also. If no share exists when a user tries to share an application, that node creates a share first, then continues with sharing the application. The node broadcasts and S20_CREATE packet on the T.128 channel. There are ways of arbitrating conflict, e.g. if two participants both try to create a share around the same time. In general, in prior systems the share is not created until at least one remote node sends back an S20_RESPOND packet acknowledging the S20_CREATE request. This is why application sharing in NetMeeting™ 2.x could only activate when at least two nodes were in a conference and application sharing capable. In the system of the instant invention, however, if the node trying to create the share is also the T.120 top provider, the code assumes success instantly since the collision arbitration algorithm will always resolve in favor of closeness to the top provider. In this way, the system of the instant invention will allow the creation of a single party share, allowing one to host a meeting, share application(s) or desktop, and have it persist. The share will create instantly, and it will not terminate when no one else except the host is left in the conference. Additionally, this method is faster for the end user who wants to share applications or desktops since it completes almost immediately.
For CPC, the member name and the member application sharing capabilities are exchanged via the S20 control packets. When a new member is added into a share list, the share capabilities are recalculated. Most of these capabilities are used to determine what kind of application sharing data to send when hosting. Prior systems used to do a lot of recalculation whether it was hosting or not. The system of the instant invention, however, only does recalculation when it is hosting, since starting to host will calculate the capabilities based off the people in the share at the time anyway. Moreover, a lot of recalculation is gone completely making it a lot faster and easier to handle a new member of the share. The total capabilities block is basically a list of the area capabilities (PROTCAPS) blocks with IDs for each. Members ignore PROTCAPS blocks with unrecognized IDs.
In prior systems when a node started to host, it would calculate the outgoing cache sizes based on the capabilities of everybody in the share. It would take the minimum of its size and those of all the other people in the share. In the case where there are sender and receiver capabilities, it would take the minimum of its send capabilities and everybody else's receiver capabilities. When the other nodes found out that somebody was hosting, they would have to calculate what size to create the incoming caches. They would then take the minimum of the host's and everybody else's capabilities. Then, when somebody new joined the share, everybody would have to recalculate the new cache sizes again. In essence, everyone in the share had to know about each other to be able to interpret and handle the packets coming from a host. Besides being expensive to recalculate all the time, it would be impossible to ever implement lurking/passive/multicast-like application sharing. This prior system could never have implemented a streaming application session, like NetShow™ presentations or multicasted video because of the impracticability of having 10,000 people find out about each other and do calculations based off each other's capabilities.
In the system of the instant invention, when a node starts to host, it creates outgoing caches with exactly the sizes it wants, which it has specified in its capabilities already as described above. When the others find out that somebody has started hosting, they create incoming caches of the sizes specified in the host's capabilities. Further, when someone new joins the share, the existing members do not have to do a thing. The new member will find out that someone is hosting, and will in turn create incoming caches from the capability sizes. In this system of the instant invention, a viewer only has to know about the host's capabilities. The viewer creates caches based off only the sizes given in the host's capabilities. After this the process is done, no recalculation is necessary. Moreover, the outgoing caches for bitmaps/ cursors/ palettes/savebits/order encoding are created on a node when it starts to host and freed when it stops. The corollary incoming caches for bitmaps/ cursors/palettes/savebits/order encoding are created for a remote node on viewers when they find out the node has started to host, and freed when they find out the node has stopped hosting. Prior systems used to keep the caches around for a person as long as the share existed and the person was in the share. These would be reused, in the state they were left in, if the person started hosting again. This was typically megabytes of memory to keep around. However, since new members of the share would not have the saved cache state, the contents of these caches would be wiped out anyway.
The data packets transmitted, as indicated above, are prefixed with the S20DATAPACKET structures, then a DATAPACKETHEADER. These are the stream types (dictionaries). All of the packet types are grouped into one of the few streams, the groups have much in common as far as contents and sizes, so they compress together well. The types of data packets include drawing/graphics updates sent by the host and the supported font list, which is sent by everyone in the conference to each other. While this is really a capability, it is so large (could be 32K) it is not exchanged via the S20 protocol. The data packets also include control packets, active window notification sent by the host, or activate/restore requests sent to the host, the shared window list sent by the host, the hosting state (hosting applications, hosting desktop, hosting nothing anymore) sent by the host, cursor appearance/position notification sent by the host, keyboard/mouse input sent from controller to the host, and a sync packet from existing member of a share to a new member to let the new member know that the group is aware of him and how to handle data from the group. This is needed because of cache states, order encoding data, and font lists. Further data packet include the changed capability, e.g. when desktop size/color depth changes. The compression types on the packet data include: not compressed; PKZIP compressed, but atomic, no info about previous packets is need to decompress; and persistent-PKZIP compressed, information about previous packets sent on same stream is needed to decompress.
As compared with the prior versions of NetMeeting™, the system of the instant invention provides fewer and smaller Shared- Window-List (SWL) broadcast packets. These packets provide notification of the list of shard window states, positions, sizes, along with areas that are obscured, if anything has changed since last time. In the prior systems, the SWL packets were sent by people hosting, and by non-hosts if they were in control so that everyone else would sync to the placement of shadows on their system. Shadow windows, representing shared information from other people, were always included in the list as well. When joining and leaving, an empty packet was always sent, even if the member was not hosting. There were lots of packets dropped due to collisions in z-order when multiple people were hosting, or packets applied and then another z-order packet would be sent out in a Ping- Pong effect. Now, only the host sends the SWL packets, the contents of which are simply windows shared on the host, and things that obscure parts of the shared windows. Therefore, when not hosting and joining/leaving share, no packets are sent. Further, z-order is not changing all the time because a plurality of shadows are not changing independently as before.
In addition to the fewer SWL packets, the system of the instant invention also provides fewer Active-Window-Coordinator (AWC) broadcast packets. These packets provide notification of the currently active shared window (or NULL if none), if this window has changed. These packets also provide requests to activate/minimize/change state of a shared window. In the prior systems, the current active window was sent out periodically, even when not hosting. When hosting there were many different states, and applying notifications/requests from remotes would often cause another packet to be sent in a Ping-Pong effect. Additionally, there were requests to simulate tray behavior (right clicking on tray button for shadow of shared window would cause system menu to popup on host if in control), to close and minimize windows. In the system of the instant invention, notifications are only sent by hosts about currently active window. There is no need to distinguish different types of "no shared window" active cases, meaning fewer broadcasts. Only shared window or nothing is sent. Requests are only sent from the controller to the host to activate/unminimize shared window, or to inject Ctrl+Alt+Del in case of NT Remote Desktop Sharing (RDS). RDS is a service process that uses application sharing to share the entire desktop of a machine back to whomever called in. Ctrl+Alt+Del simulation is needed on NT because that is the way a user logs in, shuts down, or locks the workstation.
The system of the instant invention also provides fewer cursor broadcast packets, which provide current cursor image and position if either has changed. In the prior systems, the current cursor position was sent out periodically by everyone, as was the current cursor image. Depending on the control state, a node may have sent out a cursor broadcast or an input broadcast. With the system of the instant invention, only the host sends the cursor shape and position. If a host is controlled and its cursor position is out from the last know controller mouse position, a sync bit is added to the cursor position broadcast. The controller will, upon seeing this set, move his mouse to the cursor position given by the host.
The system of the instant invention also provides fewer Hosted-Entity- Tracker (HET) broadcast packets, which provide notification of current hosting application/desktop value. Before, when sharing applications the current top level shared window count was sent out. Every time a window came or went, another new count was broadcast. However, remote viewers only cared when the count transitioned to or from zero. Therefore, the system of the instant invention only sends changes from zero to non-zero (hosting applications/desktop), and from non-zero to zero (stopped hosting). The intermediate counts are useless and were ignored by the remotes, so they are no longer sent.
The system of the instant invention also provides a significant reduction in the number of Synchronizing New Individuals (SNI) broadcast packets. These packets indicate a member joining, and are sent on each stream by each existing person when a new person joins into the T.128 share. They tell the new person that the sender knows he is present, that any data from that point on takes the new person's capabilities into account, and that the new person can now process packets from the sender. These must be sent and handled before anything can continue in the share. In prior systems, when a new person joined a share, everybody in the share would loop through everybody else in the share, and for each person broadcast a sync packet per stream. These broadcasts would happen for each stream, and there were five streams, although two of those were not really used. This meant that the prior system was synching streams that data was never sent on. Now, however, the people in the share only broadcast one packet apiece per stream a packet for the new member joining. The new member joining then broadcasts a packet for each person already in the share. In other words, application sharing nodes need to send a sync packet to people who are new to them in the share. Further, the number of streams of concern have been reduced from five to three. A sync is sent only on a stream when data is needed to be sent on it, which reduces the number still further to one for people who are just viewing.
The system of the instant invention also provides fewer Control Arbitration (CA) packets, which provide notification of the current collaboration state (detached, collaborating, controlled, in control), and which provide requests to control, grants of control handled by the node currently in control. In prior systems control was global whereby all nodes collaborating are controlled by mouse and keyboard of the node in control. Nodes could be controlled (locked) even if they were not hosting. They would play back the mouse/keyboard input, only to discard it at the last second since it should only be played back to shared applications. Every state change was broadcast, and all nodes, whether hosting or not, needed to broadcast state changes. If a packet could not be broadcast (low memory or simply too much traffic), state change would not occur. This would result in a controlled node remaining frozen, unable to use his mouse or keyboard, for a long time until it could get a packet out. Now, the control state is broadcast from hosts only when allowing control state changes or when start/stop controlling. Control operations (taking control, releasing control, bouncing control, etc.) are private between host and another node and are not broadcasted.
The system of the instant invention does provide additional new control (CA30) packets, which provide request exchanges to take control, release control, bounce control, invite control, pass control, etc. The new control model is similar to the calling model whereby a node asks to take control of a host like placing a call to a remote. The node gets back a response (no with reason or yes). Until this response, the node can time-out or cancel the request on the viewer side. The host can allow the end user to accept or reject the incoming take control request. Either side can hang up, the controller can cancel or release control and the host can bounce control, this works locally even if packets cannot get out. Even if the system runs out of memory completely, the local node will not be stuck in a state it does not want to be in. Further, hosts can invite viewers to control them, like inviting a remote to join a conference.
In addition to the above, the system of the instant invention also provides fewer Input Manager (IM) packets. In prior systems, the person in control if collaborating, or any detached host, broadcasted input packets every mouse move/click/keypress. Everyone not collaborating treated these like notifications, and updates the keyboard state table/mouse position of the sender (and all controlled nodes if from person in control). Everyone collaborating treated these like requests and injected the input into their machine. This would be horribly slow in a large conference if a controller moved the mouse a lot. NetMeeting™ 2.x collapsed the mouse packets which resulted in jerky and unresponsive cursor movement. In the system of the instant invention, input packets are sent privately from a controller to a host, not broadcasted. The controlled host then periodically broadcasts the new cursor position/shape due to the input played back from the controller. This allows multiple hosts to be simultaneously controlled by multiple independent users. The result in very high mouse fidelity and lower bandwidth in a large conference.
The result of these changes is a substantial reduction in network traffic from existing NetMeeting™ 3.0 nodes when a new person joins a share, especially from these node that are not currently sharing. Each node was sending a lot of packets that were ignored on the remotes or did not benefit anything. Now, when a host starts sharing the process is greatly simplified. With 50 people in a conference, e.g., the traffic to get everyone in sync shrunk from 12,851 broadcasted packets to only 265 broadcasted packets.
As an example illustrating this simplification, assume that six people are in a conference, having already exchanged capabilities and fonts, and a host starts sharing his desktop. The host broadcasts an application sharing S20_CREATE packet (which includes his name and AS capabilities). In response, five other users respond by broadcasting an S20-JOIN packet with their name and AS capabilities. For each person who joins the share, the host will perform a sanity check of the viewer's capabilities, and if there is a problem, will broadcast an S20_DELETE packet for that viewer. Assuming all is well, the host creates a person structure with the minimum amount of system resources necessary to view. The host then resets its caches (palette, graphics), and broadcasts a sync packet. The host then entirely repaints that which is shared. After this, the host retransmits its state (HET) indicating what he is sharing (desktop, application, not). After this the host sends its font packet, and waits for the viewer's font packet.
On the viewer's side, once the S20_CREATE packet is received, a sanity check is performed on the capabilities. If all is well, the viewer replies with an S20_JOLN broadcast. At this point, the viewer and host are in a share. The caches are reset, a sync packet is sent to the creator, and the font list is sent. The viewer then receives the sync from the host, the font packet, and the desktop or application HET. The viewer then creates cursor cache, a palette cache, and a bitmap cache all of size the host said. The viewer then creates the compression saved history and the order decoding structures and memory. Finally, the viewer creates a bitmap for that person's desktop, or window to view what's shared. When the viewer wants to stop viewing, he sends a HET packet indicating that nothing is shared. The viewer then destroys the window, and frees the blocks shared. However, the viewer stays in the list.
During application sharing, it is instructive to note what is needed for a viewer to represent what is on the host's screen, utilizing desktop sharing as an example. First, the viewer needs to be able to recreate the graphics on the host's screen. This includes the cursor (logical position, image, current location, etc.), as well as the palette (were true color cannot be supported as described below). This was needed to allow translation of palette code to actual color in 256 color applications. The alternative would be to take a bitmap of the desktop. However, since this could be approximately one megabyte of data, the transmission of palette codes saves greatly. The viewer would also need to recreate the text (font, language information ,local information, character set information, multi-national information, Unicode, etc.). If a viewer does not have the font, the host does not send text drawings to the people in the conference at all. If text is put up by a shared application using a font that is not available on all remote viewers, a bitmap of that part of the screen is sent instead. While this is a lot bigger than a simple text drawing description, it is safe and can be handled by everyone in the conference. This is what application does in general when there is no commonality, it falls back to screen data. The viewer also needs the bitmap cache (toolbar images, etc.) and the order encoding cache. The host sends only change of drawing unit of the type. The header for each drawing unit indicates the field types that are being sent. If these are not there, then they are the same as the previous one. When someone joins a share, the host invalidates the entire screen and forces a refresh (repaint from scratch). Then the caches are rebuilt.
For application sharing, the host needs to represent the window to the viewer, with a list of what is shared, the z-order, the shape and position of each window, and what is currently active. When the host is being controlled by a remote, he uses a control timer mechanism to ensure that other viewers' screens are kept up to date. Therefore, the playback of input first processes fast input such as the mouse clicks, cursor position and shape. Next, the window list for application sharing indicating what and where things are is processed. Finally, the graphics are processed, including the list of orders and screen data. If, for any reason, the window list or graphics cannot be sent, they are skipped so that the fast input may again be processed. As indicated above, the new collaboration model of the instant invention, preferably implemented in NetMeeting™ 3.0 application sharing, is per-host. By collaboration it is meant the process of allowing, inviting, granting, and revoking control to others of shared applications. This new model is developed to go along with per-host application sharing described above. In the previous versions of the application sharing protocol, T.128, collaboration was global as described above. Each member of the conference could start/stop collaborating. Exactly one of the members collaborating was considered to be in control. Her mouse/keyboard drove the mice/keyboards of the other members collaborating. Those other members were controlled, and their keyboards/mice were locked. However, if they weren't sharing anything, the mouse and keyboard input from the person in control would go to nowhere, since we only let the remotes control shared applications and not unshared ones. So their keyboards/mice were locked for no reason, which was very frustrating especially in the multitasking world of Windows.
Anybody collaborating could become the person in control by a simple action (a mouse click or key press). If several people took control around the same time, the last person to do so won, until the next person took control. There was no organization or order, it was a chaotic model, our users called it "mouse wars". With a decent number of people in a conference, the telephone was the only way to keep things from getting out of hand. There was a lot of "OK, I'm going to take control now, don't do anything anybody" discussion back and forth.
Collaboration was a two-way street. A person might only want to control another's applications without exposing his own. But that wasn't possible in this old model, collaboration was all or nothing. And there was no way for a person to gracefully decline a control operation or even know that it was about to happen—control would be yanked away without warning. This application sharing control model (a.k.a. Collaboration) is unfriendly to shared app the hosts, controllers, other meeting participants, and SDK clients. The model is a global free-for-all, with no reliable way of denying, canceling, or undoing dangerous operations via the user interface or driving code. These problems are parallel to those people used to have with shared app views. Each person in the conference had "shadow windows", representing a top level shared window from a host. People could not move them, size them, get them out of the way, or put them back in the way when desktops were of different sizes, or change the z-order.
In this old control model, "Collaboration", means a user's mouse and keyboard are synchronized with those of all other members in the conference who are collaborating. The person in control is in control of all the other people collaborating, and his input is played back on all of those other machines. In NetMeeting™ 2.x, a user could collaborate and be driven even if he were not sharing anything. This ended up being for no reason, since all of the played back input would eventually be discarded. Pressing the "Collaborate" button would do one of several somewhat unpredictable things depending on the state of the user and other people's states. It would either cause the user to start collaborating, to take control if already collaborating, or to stop collaborating.
In this prior system, as indicated above, collaboration is GLOBAL to the conference. Collaboration is a set of states, detached or cooperating, and then in control only if cooperating. When the state changes, several broadcasts from different people occur. The potential controller broadcasts "cooperating" to start collaborating if he isn't already, the potential controller broadcasts "request control" to take control, and the current controller broadcasts "granted control" to the potential controller. Of the members collaborating, one and only one person is in control. That person's mouse and keyboard drive the mice/keyboards of the other members collaborating. Each control change requires some retransmitting of input state information, especially toggle keys, and discarding old accumulated input. The person in control broadcasts his input messages to everybody. Then all the people collaborating play back these input messages, skipping ones that obviously would manipulate non-shared windows, and then if they ended up going to a window not shared, would swallow them at the last minute. That allows the cursor to move, but the actual movement of the mouse notification to not get sent to the windows under the mouse if they are not shared. Additionally, there was a lot of complicated token sequence number/guessing/time stamp calculations done to figure out who has control if several people try to grab it at once, or it was taking too long to hear back. Further, taking control was a free-for-all as indicated above, anybody could take it away from the controller at any time. This often resulted with somebody in control even if there was nobody else to be controlled.
As may be apparent from the forgoing, the prior system had many areas of improvement available. Since collaboration was global, it only worked when the shared application pool was global, all in same relative place on everybody's screen. Further since collaboration was bi-directional, taking control of another's shared applications also left that user open to being controlled. Collaboration was also quite noisy, requiring several broadcasts from an individual when his state changed. To take control required three broadcasts: cooperating, request control from person taking control, granted control from person handing off control. This collaboration was also end-user chaotic, wherein everybody could take control, the last person to do so wins, which resulted in a big user interface free for-all. This collaboration was also SDK chaotic, wherein there was no way for SDK code to do conference management and get notified in real time or confirm/deny control changes. Additionally, the collaboration was not easily undoable, in that the hosts could not "bounce" the current controller while staying "controllable" for somebody else, and the controllers could not "let go" of a host without going back to the main NetMeeting™ 2.x UI and pressing the Collaborate button some random number of times. Collaboration was also not deniable, in that the hosts could not choose to accept/deny a request to take control. Nor was collaboration cancelable, potential controllers could not cancel a pending take control operation if it was taking a long time, e.g. in a large conference.
As indicated above, the new control/collaboration model of the instant invention is per-host, a nice parallel to the new T.128 protocol. Control, rather than being global, is per-host. Each the host can be controlled by one the remote, and several the hosts can be controlled in parallel by several distinct the remotes. A member can be a host and be able to control another without opening up his own shared applications to control. However, one can not be in control of a host and controlled by another the remote at the same time. Control can be initiated, canceled and refused on either side (the host and the controller). It can be handed off to a third party. There is graceful timing out and failure handling. Both the controller and the host can continue in low memory or stress situations. Although round-trip communication between a host and a the remote is required, either side can move on and do something else without waiting to hear from the other. The user interface is also unintrusive, dialogs are not modal and hang around for a while before timing out so end user can handle them as is convenient.
The person in control sends all his input messages, mouse and keyboard, along with other information needed for states, like IME keys and TOGGLE keys, to the person controlled, privately or per-host. The person controlled plays back this input, and attempts to prevent any from going to windows/applications that are not shared. That way a controller can not actually cause a click in a non-shared application. The person controlled's mouse will move in sync with the controller, it must for dragging and other operations, but the actual mouse moves are not passed to the applications.
The controller's system does spoiling and other massaging of the input to send. For example, to prevent applications from going into drag-drop mode, application sharing waits a bit after a mouse button down looking for a mouse button up. That way the down/up go in the same packet and are played back quickly, creating a click. If the down/up were split up, the time latency is such that many applications including the explorer itself would assume the mouse was going to be used for dragging something. A corresponding example would be key downs/ups, to avoid simulated repeats, or duplicate keys caused by Windows itself generating other key sequences in the default window handler. And since mouse moves can be discarded, if outgoing packets start to backup, they can be combined. This may somewhat increase jerkiness on the remotes, but this is better than getting stuck because so much outgoing traffic is generated that nothing else can get sent.
There is corresponding code on the controlled side to playback the input. Events at several levels have to be discarded, and there are some exceptions for discarding events with screensavers, other desktops, and system dialogs like the fault error message. The input must be played back with roughly the same time differences as it occurred on the controller. These cannot be input into to the OS all at once, since Windows™ will do different things based off the system keyboard state.
Basically, there is a pretty well-defined sequence of network traffic with control. The controller sends input events to the controlled person. The controlled person then broadcasts notifications to everybody in the conference of cursor position/shape changes and window position/appearance updates caused by playing back the input from the controller. Operation of this new control structure may be better understood from the following simple examples of how this new model works. Note that a host is a conference member sharing applications/desktop.
To indicate controllability, the host broadcasts a control state packet, with control allowed or not allowed. The remotes can use that as indication about whether to permit users to try to take control of the host via UI. To take control of a host from a the remote, the remote user selects UI like menu command (or code makes function call). The remote sends a take control request to the host. The remote waits to hear back yes/no from The host. At this point, the remote can either cancel the take control request or do some other control operation which will also cancel this one. The host displays a take control request UI to the end user (or not if unattended or passes to code to handle). The user can say yes/no. This UI is not modal, it can sit until the end user is ready, although it may time out and act like user said no. The host sends a take control reply to the remote with the yes/no result. The second this happens, if yes, the host is controlled by the remote.
To grant control of a host to a the remote, the host user selects UI (or code makes function call). The host sends an invite control request to the remote. The host waits to hear back from the remote. At this point, the host can either cancel the invite control request or do some other control operation which will also cancel this one. The remote displays the invite control request UI to the end user (or not if unattended or passes to code to handle). This user can say either yes or no. This UI is not modal, it can sit until end user is ready, although it may time out and act like user said no. The remote sends a invite control reply to the host with yes/no result. The second this happens, if yes, the host is controlled by the remote.
If the host wants the controller bounced (hitting ESC key on the host is UI for this), the operation occurs immediately and then the host sends a bounce control inform message to the remote. If the controller wants to let go of the host, the operation occurs immediately and then the remote sends a release control inform message to the host.
If the host is controlled but the user needs to handle something temporarily, like a call dialog or a popup from some other application, the host sends a pause control inform message to the remote. The remote stays in control but can tell the user that the mouse/keyboard will not do anything until unpaused. When the user is done, the host sends an unpause control inform message to the remote, and they pick up where they left off.
To pass control of a host, the remote sends a pass control request to the host. At this point the remote is no longer in control, i.e. the remote can not undo or take back the pass control request. This is different than requesting or inviting control. The reason for this is to avoid long stacked-up sequences of people in the conference waiting for each other to take their respective actions. With control, it was decided to only allow dependencies between a host and a viewer, none between different viewers. This avoids deadlocks and jams for long periods of time. The host displays a pass control request UI to end user, who can say yes/no. If the host user says no, the host sends a pass control reply with failure immediately to the second remote. If the host user says yes, the host forwards a pass control request to the second remote. The host waits to hear back from the second remote. At this point, the host can either cancel the pass control request or do some other confrol operation which will also cancel this one. The second remote displays the pass control request UI to the end user, who can say yes/no. The second remote sends the pass control reply to the host with the yes/no result. The second this happens, if yes, the host is controlled by the second remote. Otherwise, the host remains in control.
As may be apparent from the foregoing, control is made per-host, with cancelable control request, via controller UI and controller SDK code (auto and confirm mode), confirm/deny control request, via host UI and the host SDK code (auto and confirm mode), and undo-ability of control by both controller and controlled the host, via UI and SDK code. With this, the moderation/control/floor model can be managed on a per-host basis.
Therefore, the system of the instant invention provides collaboration/control which is per-host in the conference. There is no collaboration anymore; there is "controlled" (the host) and "controlling" (the viewer). The hosts can turn on/off allowing control. Only the hosts which have allowed control can be controlled. Somebody not sharing is not a host, and therefore can not allow control nor be controlled. Taking confrol of a host does not open oneself up to being controlled (control is now unidirectional). Control is a privately negotiated contract between the host and the viewer, which once negotiated, cannot be randomly interrupted by a third member of the conference. Further, the hosts can grab confrol back from a controller without asking, and a controller can release confrol of a host without asking. Any third party who wants to confrol a host can not succeed until either the host or the controller breaks the control bond.
State changes (allow control state and being controlled by x) are broadcast from the host sometime after changes actually happen. If a viewer is controlling a host, he can not be taken control of, and if a host is controlled, he can not take control of somebody else. Further, a viewer can not control more than one host at a time, and a host can not have more than one controller at a time. To take control of a host, a potential controller sends the host a private request with an unique ID (unique to controller) identifying the request. The controller then goes into a "waiting to hear back" state during which the controller can release confrol, since "release" will follow the "take" request. Once the request is received, the host responds privately to the controller with "accepted" or "rejected". If accepted, the host then broadcasts state change some time later after receiving this information from the controller. During this state, the controller or the host can break the control bond at any time. If the controller breaks this bond, he sends the host privately a "released" notification, whereas if the host breaks it, he sends the controller privately a "bounced" notification. In all cases the request ID is remembered and used to identify the "control bond". This allows multiple/queued requests to be generated and responded to, ensuring the proper state on both sides when done. The hosts/controllers ignore out-of-date requests.
During the controlled period of a host, broadcast notifications involving the controller are ignored by the controller, since this controller always has more up-to-date information about his own state. If a host stops the hosting, then control state is automatically cleaned up. Likewise, if a host leaves a conference, then the host stops the hosting, and control state is automatically cleaned up. Otherwise, a controller can rely on always getting a response from the host before continuing. The controller should not send input to the host until an "accept" response has come back because the input packets do not have request IDs in them, and the host can not tell if they are out of date or not.
Everyone must handle UINT wrap-around. Allocating/sending packets can fail. For notification broadcasts, the host periodically checks if the current state (allow control/controller/requestID) is different than the last one sent. If so, the host simply tries to send new packet. For private controller/controllee communication, it's more complicated. Unlike notification broadcasts, these can not be "spoiled". They must be queued if they can not be allocated/sent. As such, controller/host states do not change until these queued packets are sent. The one exception is "waiting for control", which happens as soon as possible as a take control request occurs, flushed or not.
If the user turns off allowing control, queued request responses are all turned into "denied-control not allowed" responses. Also, request responses following a queued "accept" must all be "denied" responses. If the user turns off allowing control, current controller is bounced as well. If the user tries to take control of a second host when a take control request is still queued, the first one is superseded. In other words, only one take control request will ever be queued. The user can release control of a host with a take control request queued. If that happens, the release simply cancels the queued take. If the user tries to take control of a host when an earlier take control request has been sent but has not yet been responded to, the first one is canceled by a "release" packet. In the meantime, the controller can do whatever it wants when waiting to hear back. A preferred embodiment of the instant invention includes a message box with a "cancel" button. Likewise, the host can do whatever it wants when it receives a "take control" request, provided it follows the rules. In a preferred embodiment, a message box with "person x would like to take control, ok/cancel" is displayed, and incoming requests are handled in order of receipt. Further, the system may, via SDK code, decide that the new controller is the one, bounce the current one, and allow the new user to take control. Further, as described above, it could remotely push control by asking a remote to take control of it.
Another advantage of the system of the instant invention is the dynamic allocation of system resources. Unlike the prior systems that allocated all of the memory which could ever be needed for each member of a conference, the system of the instant invention allocates system resources dynamically as the members require them, and then frees up those resources when they are no longer needed. Application sharing takes a lot of memory to trap the graphics on the screen, utilizing a big enough buffer to make that a useful amount so that the system can look backwards in the buffer to minimize the amount of data which is actually sent.
As an example, if a rectangle is painted over, it does not need to be sent since the user cannot see it anyway. Additionally, if a circle is painted blue and then painted green, the system only needs to send the green information since the painting blue is hidden from the viewer. In this way, the amount of memory needed to view may be substantially reduced from that which you need to share. By separating out what one needs to view from what one needs to share yourself, the memory allocation to viewing members may be minimized, until one of those viewers starts to share. At that point, his memory allocation will be increased to accommodate the sharing requirements. When that person stops sharing, the additional memory allocation is then freed for utilization by that user for other purposes.
This dynamic memory allocation may be better understood with reference to FIGs. 2a-c. FIG. 2a illustrates in simplified bar chart form the memory allocations within the host 60, viewer A 62, and viewer B 64. As may be seen, within the host 60 memory has been allocated for itself 66, for viewer A 68, and for viewer B 70. Likewise, within viewer A 62 memory has been allocated for the host 72, itself 74, and viewer B 76; and within viewer B, memory for the host 78, viewer A 80, and itself 82.
If the host now passes control to Viewer A 62, dynamic memory allocation is accomplished as illustrated in FIG. 2b. As may be seen, upon passing control to Viewer A, the host 60 allocates additional memory 84 for itself to process the inputs from Viewer A who is now in control of the shared applications. Likewise, Viewer A 62 also dynamically allocates additional memory 86 for itself to allow it to control the host. Viewer B's memory allocations remain unchanged.
FIG. 2c illustrates the dynamic freeing of memory when confrol is passed back to the host 60 from viewer A 62. As may be seen, the memory allocations return to their pre-controlled states once control is passed back to the host 60.
Another problem with the prior systems lies with their requirement of at least two users existing in a conference before application sharing is allowed as described above. The system of the instant invention changes this operation by allowing a single user to initiate and conduct a share, with no other members of the conference being present. This is accomplished by not requiring the system to wait for a response. Instead, the system assumes that the sharing has succeeded, if the person sharing is also the host of the meeting. This operation is operates properly because any collision resolution (two people attempt to share the first thing about the same time) works in favor of the host always. With this embodiment of the instant invention, a host can share an application, or several applications, and unshare them too, when he is the only person in a call. Therefore, a host can share an application, share Notepad, and collaborate, e.g., then people can call the host, hang up, and call back as many times as they like, and the shared applications and collaborate state will persist. In prior systems, a person could host a meeting and share one thing. However, that one thing was not really shared, instead it was queued up to be shared when a second person joined the call, the share button stayed disabled until that happened.
This operation was due to the application sharing protocol. When creating a share, an S20_CREATE packet was broadcast to the application sharing channel. Until an S20_RESPOND or an S20_JOIN packet was received from some other party, the share was not considered to have been created. This operation is no longer required when the creator is the top provider. Instead, the system assumes that the second the T.120 objects are had all is well. The host does not have to wait for a response from someone else. As indicated above, this works well because if the top provider and someone else ever tried to create a share around the same time, the top provider always won. When a host has shared an application alone in a conference, there is still work being performed. All of the drawings are being accumulated, but they are not going anywhere. Additionally, no periodic calculation are happening. However, once someone else joins the share, the system proceeds as described above.
The system of the instant invention also provides true color 24bpp support through the enhancements provided to the T.128 protocol by the instant invention. As indicated above, true color application sharing is a 24bpp, non-palettized, standard interchangeable format that maps directly to the video hardware. The prior systems utilized 8bpp data which is a palettized format. To accomplish this true color application sharing, capabilities were added, negotiation of color depth to support this new capability and handle people with it properly was fixed, and the bitmap caches were revised to handle the larger memory requirements of bitmaps three times the size of those at 8bpp. Further, information was added to the drawing packets so the graphics of shared applications could be presented accurately.
True color data will only be sent if everyone has the capability to view it and everyone has a 24bpp or greater display. The reason for this is that a display of less than 24bpp will not accurately display 24bpp information. Even 16bpp (32,767 colors or 65,535 colors on NT) cannot display 24 bpp data properly because parts of the value get stripped, resulting in subtle green/blue/or red shifting, though not as extreme as today. The purpose of true color is to view accurately high color images. Therefore, is should not be utilized in circumstances where the fidelity of the results is questionable. Further, it generates a lot more data even if a member is not really sharing anything that requires it, hence the restrictions.
There is not much of a performance impact if a member is sharing an application such as Notepad™, since almost everything goes as orders which are the same size regardless of the bit depth at which it is sent. However, if a member is sharing a graphically intensive application, there may be quite an impact. This impact effects both the amount of data sent and the latency. This is because a fixed amount of memory is devoted to cached bitmaps. In true color, the bits are three times the size as 8bpp. Therefore, only one third as many entries fit in the cache, meaning that we get fewer cache hits and must, therefore, send bitmap bits more often. Additionally, application sharing has a maximum uncompressed packet size of 32,000 bytes. That holds less packets for the same area painted. Further, there is less compression of true color screen data. The specialized algorithm to arrange the bitmap bits so they compress even better than just PKZIP only works for 4bpp and 8bpp data. PKZIP can only look back a fixed amount of bytes in the data, so sequences of the same color block do not shrink as well.
When supporting true color 24bpp, the system does not distribute any palettes/color tables. When the color depth changes because someone leaves the conference, the system forces a repaint of the shared information. Prior systems did not do this even when switching between 4bpp and 8bpp, which resulted in some remotes seeing weird artifacts. Additionally, an unused field in orders packet is used to specify the sending color depth that they were generated for. Screen data has the color depth, so users know what to do with it, but orders did not. Under the prior system, users would not know whether to map a color to the closest palette entry or just use it plain. With the system of the instant invention, the drawing operations may be replayed properly. Further, the system of the instant invention will not compress any packet less than 256 bytes (prior system constant set at 128 bytes). Additionally, the system will persistently PKZIP packets less than or equal to 4k, which is the amount of persistent dictionary data saved. As it turns out, most packets larger than 256 bytes but smaller than 4k contain drawing orders.
In a further embodiment of the instant invention, the system dispenses with the exchange of capabilities and fonts. This allows true multicasting to take place (lurking). In this embodiment of the instant invention, the host simply transmits a periodic refresh, at which point he clears his cache and begins to rebuild them and forces a complete repaint of his screen. Since fonts are no longer exchanged, just images are sent to populate the cache and allow proper display on the viewer's screen (cache font glyphs). This elimination of capabilities and font exchange allows streaming of data to thousands of users which would otherwise be nearly impossible to complete. „ „
44
Numerous modifications and alternative embodiments of the instant invention will be apparent to those skilled in the art in view of the foregoing description. Accordingly, this description is to be construed as illustrative only and is for the purpose of teaching those skilled in the art the best mode for carrying out the invention. Details of the structure and implementation of the various components described above can be varied substantially without departing from the spirit of the invention, and exclusive use of all modifications that come within the scope of the appended claims is reserved.

Claims

What Is Claimed Is:
1. A method of sharing an application program or desktop between a host of a multipoint data conference and a plurality of conference participants, comprising the steps of: calculating within the host minimum capabilities of all conference participants in the share; broadcasting from the host to the conference participants in the share sizes of caches required to view the shared information based on the calculated minimum capabilities; establishing within the conference participants caches as required by the host.
2. The method of claim 1 , wherein a new conference participant joins the share, further comprising the steps of: re-calculating within the host minimum capabilities of all conference participants in the share including the new conference participant; broadcasting from the host to the conference participants in the share sizes of caches required to view the shared information based on the calculated minimum capabilities; establishing within the conference participants caches as required by the host.
3. The method of claim 2, further comprising the steps of: broadcasting a sync packet to the conference participants; repainting the shared information based on the re-calculated minimum capabilities.
4. The method of claim 1 , wherein a conference participant leaves the share, further comprising the steps of: re-calculating within the host minimum capabilities of all conference participants in the share excluding the conference participant who has left the share; broadcasting from the host to the conference participants in the share sizes of caches required to view the shared information based on the calculated minimum capabilities; establishing within the conference participants caches as required by the host.
5. The method of claim 4, further comprising the steps of: broadcasting a sync packet to the conference participants; repainting the shared information based on the re-calculated minimum capabilities.
6. The method of claim 1 , wherein the steps of calculating within the host minimum capabilities of all conference participants in the share and establishing within the conference participants caches as required by the host precludes calculation of minimum capabilities of all conference participant within the conference participants.
7. The method of claim 1, further comprising the step of transmitting privately a request to confrol a shared application between the host and one conference participate.
8. The method of claim 7, further comprising the steps of: passing control of the shared application to a conference participant; transmitting privately control commands for the shared application between the host and the conference participant in control of the shared application; and periodically broadcasting from the host updates to the shared application program to all of the conference participants.
9. The method of claim 8, further comprising the step of ignoring within the conference participant controlling the application program the broadcast update from the host.
10. The method of claim 8, wherein the step of periodically broadcasting updates includes the step of periodically broadcasting updates with a sync, further comprising the step of updating the shared program information within the conference participant controlling the application program.
11. The method of claim 1 , further comprising the steps of: receiving a join request from a new member; broadcasting a respond packet from the host; adding the host to a member list within the new member in response to the respond packet from the host; adding the new member into a member list within each of the conference participants in response to the respond packet from the host; broadcasting a respond packet from each of the conference members; adding each of the conference members to the member list within the new member in response to the respond packet from each of the new members; and ignoring within each of the conference members the respond packets from each of the conference members already included in the member lists.
12. The method of claim 11 , wherein the step of broadcasting a respond packet from each of the conference members is broadcasted only on a single channel.
13. The method of claim 1 , further comprising the steps of: receiving a leave broadcast packet from one of the conference members; and deleting the conference member who broadcast the leave packet from a member list in each of the conference members.
14. The method of claim 1 , further comprising the steps of: receiving a delete broadcast packet from the host identifying a conference member; and deleting the conference member identified in the delete packet from a member list in each of the conference members.
15. The method of claim 1 , further comprising the steps of: receiving an end broadcast packet from the host; and deleting caches required by the host; and deleting a member list of all participants in the share.
16. The method of claim 1, wherein the step of calculating within the host minimum capabilities of all conference participants in the share includes the step of calculating the minimum capabilities of all conference participants and the host.
17. The method of claim 1, further comprising the steps of: receiving a join request from a new member; broadcasting a respond packet from the host; adding the host to a member list within the new member in response to the respond packet from the host; adding the new member into a member list within each of the conference participants in response to the respond packet from the host; transmitting privately a respond packet from each of the conference members to the new member; and adding each of the conference members to the member list within the new member in response to the respond packet from each of the new members.
18. A method of establishing an application program share session in a multipoint data conference, comprising the steps of: generating a create share message; assuming success of share session without waiting for a response to the create share message.
19. The method of claim 18, further comprising the step of hosting a multipoint data conference, and wherein said step of assuming success is accomplished during said step of hosting.
20. The method of claim 19, further comprising the step of admitting a first multipoint data conference participant, and wherein said step of assuming success is accomplished prior to said step of admitting a first multipoint data conference participant.
21. The method of claim 20, further comprising the step of setting up attributes prior to said step of admitting a first multipoint data conference participant.
22. The method of claim 20, further comprising the step of setting up applications prior to said step of admitting a first multipoint data conference participant.
23. The method of claim 20, further comprising the step of setting up files to be shared prior to said step of admitting a first multipoint data conference participant.
24. The method of claim 19, further comprising the steps of: dismissing all other conference participants from the application program share session; and maintaining the application program share session after all other conference participants have been dismissed.
25. The method of claim 18, further comprising the steps of: admitting a conference participant to join the application program share session; receiving a request from the conference participant to assume control of the application program; and denying control of the application program to the conference participant.
26. The method of claim 18, further comprising the steps of: admitting a conference participant to join the application program share session; receiving a request from the conference participant to assume control of the application program; and granting control of the application program to the conference participant.
27. The method of claim 26, further comprising the steps of: receiving application program control inputs from the conference participant controlling the application program; and periodically broadcasting confrol input updates to the application program.
28. The method of claim 27, wherein said step of receiving application program control inputs includes the step of communicating on a per-host basis with the conference participant controlling the application.
29. The method of claim 18, further comprising the steps of: admitting a conference participant to join the application program share session; transmitting a request to the conference participant to assume control of the application program; and receiving a denial to assume control of the application program from the conference participant.
30. The method of claim 18, further comprising the steps of: admitting a conference participant to join the application program share session; transmitting a request to the conference participant to assume control of the application program; receiving a acceptance to assume control of the application program from the conference participant; and allowing the conference participant to control the application program.
31. The method of claim 30, further comprising the steps of: receiving application program control inputs from the conference participant controlling the application program; and periodically broadcasting control input updates to the application program.
32. The method of claim 31 , wherein said step of receiving application program control inputs includes the step of communicating on a per-host basis with the conference participant controlling the application.
33. A method of controlling a shared application in a multipoint data conference having a host and at least one conference participant, comprising the steps of: sharing an application program; and indicating a willingness to have the application program controlled by conference participants.
34. The method of claim 33, further comprising the steps of: receiving a request from a conference participant to assume control of the application program; and denying control of the application program to the conference participant.
35. The method of claim 33, further comprising the steps of: receiving a request from a conference participant to assume control of the application program; and allowing control of the application program to the conference participant.
36. The method of claim 35, further comprising the steps of: receiving application program control inputs from the conference participant controlling the application program; and periodically broadcasting control input updates to the application program.
37. The method of claim 36, wherein said step of receiving application program control inputs includes the step of communicating on a per-host basis with the conference participant controlling the application.
38. The method of claim 35, further comprising the step of bouncing control of the application program from the conference participant.
39. The method of claim 35, further comprising the step of pausing control of the application program by the conference participant.
40. The method of claim 35, further comprising the steps of: receiving a request from the conference participant controlling the application program to pass control to another conference participant; and denying the request to pass control.
41. The method of claim 35, further comprising the steps of: receiving a request from the conference participant controlling the application program to pass control to another conference participant; and approving the request to pass control.
42. The method of claim 33, further comprising the steps of: transmitting a request to a conference participant to assume control of the application program; and receiving a denial to assume control of the application program from the conference participant.
43. The method of claim 33, further comprising the steps of: transmitting a request to the conference participant to assume control of the application program; receiving a acceptance to assume control of the application program from the conference participant; and allowing the conference participant to control the application program.
44. The method of claim 43, further comprising the steps of: receiving application program control inputs from the conference participant controlling the application program; and periodically broadcasting control input updates to the application program. r Λ
54
45. The method of claim 44, wherein said step of receiving application program control inputs includes the step of communicating on a per-host basis with the conference participant controlling the application.
46. The method of claim 33, further comprising the steps of: receiving a request to assume control of the application program; and automatically denying the request after a period of time.
47. The method of claim 33, further comprising the steps of: receiving a request to assume control of the application program; and having the request canceled by the conference participant.
48. The method of claim 33, further comprising the steps of: receiving a first request to assume control of the application program; receiving a second request to assume control of the application program; and automatically denying the second request.
PCT/US2000/001198 1999-03-02 2000-01-18 Multiparty conferencing and collaboration system WO2000052887A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP00913235A EP1159803B1 (en) 1999-03-02 2000-01-18 Multiparty conferencing and collaboration system
AU34715/00A AU3471500A (en) 1999-03-02 2000-01-18 Multiparty conferencing and collaboration system
DK00913235.8T DK1159803T3 (en) 1999-03-02 2000-01-18 CONFERENCE AND COOPERATION SYSTEM FOR MULTIPLE PARTICIPANTS
AT00913235T ATE557492T1 (en) 1999-03-02 2000-01-18 MULTI-PARTY CONFERENCE AND COLLABORATION SYSTEM

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US12242999P 1999-03-02 1999-03-02
US60/122,429 1999-03-02
US09/395,508 1999-09-14
US09/395,508 US6584493B1 (en) 1999-03-02 1999-09-14 Multiparty conferencing and collaboration system utilizing a per-host model command, control and communication structure

Publications (1)

Publication Number Publication Date
WO2000052887A1 true WO2000052887A1 (en) 2000-09-08

Family

ID=26820502

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2000/001198 WO2000052887A1 (en) 1999-03-02 2000-01-18 Multiparty conferencing and collaboration system

Country Status (7)

Country Link
US (1) US6584493B1 (en)
EP (4) EP1159803B1 (en)
AT (1) ATE557492T1 (en)
AU (1) AU3471500A (en)
DK (1) DK1159803T3 (en)
HK (1) HK1165587A1 (en)
WO (1) WO2000052887A1 (en)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1207650A2 (en) * 2000-11-17 2002-05-22 Square Co., Ltd. Method and apparatus for opening electronic conference
EP1303098A2 (en) * 2001-09-21 2003-04-16 Siemens Aktiengesellschaft Method for transmitting data between two data transfer devices
WO2003051003A1 (en) * 2001-12-12 2003-06-19 Intel Corporation Local caching of images for on-line conferencing programs
EP1376430A2 (en) * 2002-06-18 2004-01-02 Microsoft Corporation Visual group interface for group connectivity
AU2006235871B2 (en) * 2006-04-11 2008-08-07 Fuji Xerox Co., Ltd. Electronic conference assistance method, and information terminal device in electronic conference system
EP1460851A3 (en) * 2003-02-24 2012-02-08 Microsoft Corporation A system and method for real-time whiteboard streaming
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
WO2013156092A1 (en) * 2012-04-18 2013-10-24 Barco N.V. Electronic tool and methods for meetings
US8756348B2 (en) 2011-09-14 2014-06-17 Barco N.V. Electronic tool and methods for meetings
US9083769B2 (en) 2011-09-14 2015-07-14 Barco N.V. Electronic tool and methods for meetings
US9519528B2 (en) 2013-04-19 2016-12-13 National Ict Australia Limited Checking undoability of an API-controlled computing system
US10050800B2 (en) 2011-09-14 2018-08-14 Barco N.V. Electronic tool and methods for meetings for providing connection to a communications network
US10074374B2 (en) 2014-04-07 2018-09-11 Barco N.V. Ad hoc one-time pairing of remote devices using online audio fingerprinting
US10348724B2 (en) 2014-04-07 2019-07-09 Barco N.V. Ad hoc one-time pairing of remote devices using online audio fingerprinting
WO2020073267A1 (en) * 2018-10-11 2020-04-16 Entit Software Llc Asymmetric-man-in-the-middle capture based application sharing protocol traffic recordation
US10762002B2 (en) 2011-09-14 2020-09-01 Barco N.V. Electronic tool and methods with audio for meetings
US10965480B2 (en) 2011-09-14 2021-03-30 Barco N.V. Electronic tool and methods for recording a meeting
US11258676B2 (en) 2011-09-14 2022-02-22 Barco N.V. Electronic tool and methods for meetings

Families Citing this family (201)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6911987B1 (en) * 1995-07-05 2005-06-28 Microsoft Corporation Method and system for transmitting data for a shared application
JP3846666B2 (en) * 1998-09-24 2006-11-15 富士通株式会社 Shared screen controller
US6506952B2 (en) * 1999-02-22 2003-01-14 Albemarle Corporation Production of hexabromocyclododecane of enhanced gamma isomer content
US6850985B1 (en) * 1999-03-02 2005-02-01 Microsoft Corporation Security and support for flexible conferencing topologies spanning proxies, firewalls and gateways
US7065500B2 (en) * 1999-05-28 2006-06-20 Overture Services, Inc. Automatic advertiser notification for a system for providing place and price protection in a search result list generated by a computer network search engine
US6269361B1 (en) * 1999-05-28 2001-07-31 Goto.Com System and method for influencing a position on a search result list generated by a computer network search engine
US6675216B1 (en) 1999-07-06 2004-01-06 Cisco Technolgy, Inc. Copy server for collaboration and electronic commerce
US7174365B1 (en) * 2000-11-08 2007-02-06 Polycom Israel Ltd. System and method for controlling one or more multipoint control units as one multipoint control unit
US6748420B1 (en) * 1999-11-23 2004-06-08 Cisco Technology, Inc. Methods and apparatus for providing shared access to an application
US7328239B1 (en) 2000-03-01 2008-02-05 Intercall, Inc. Method and apparatus for automatically data streaming a multiparty conference session
US7225243B1 (en) * 2000-03-14 2007-05-29 Adaptec, Inc. Device discovery methods and systems implementing the same
US7127745B1 (en) * 2000-03-24 2006-10-24 Lucent Technologies Inc. Method of controlling access for software development via a virtual common desktop with plural viewers
US6809749B1 (en) 2000-05-02 2004-10-26 Oridus, Inc. Method and apparatus for conducting an interactive design conference over the internet
JP2001331614A (en) * 2000-05-19 2001-11-30 Sony Corp Network conference system, conference minutes generating method, conference managing server, and conference minutes generating method
US6934737B1 (en) * 2000-05-23 2005-08-23 Sun Microsystems, Inc. Method and apparatus for providing multi-level access control in a shared computer window
US20040027375A1 (en) * 2000-06-12 2004-02-12 Ricus Ellis System for controlling a display of the user interface of a software application
US20010037367A1 (en) * 2000-06-14 2001-11-01 Iyer Sridhar V. System and method for sharing information via a virtual shared area in a communication network
US6950853B2 (en) * 2000-06-27 2005-09-27 The Regents Of The University Of California Multisite coordination in shared multicast trees
US7111163B1 (en) 2000-07-10 2006-09-19 Alterwan, Inc. Wide area network using internet with quality of service
US7299403B1 (en) 2000-10-11 2007-11-20 Cisco Technology, Inc. Methods and apparatus for obtaining a state of a browser
US20030018725A1 (en) * 2000-10-20 2003-01-23 Tod Turner System and method for using an instant messaging environment to establish a hosted application sharing session
JP3852742B2 (en) * 2000-11-02 2006-12-06 インターナショナル・ビジネス・マシーンズ・コーポレーション Information processing system, terminal device, information processing method, and storage medium
US6934766B1 (en) 2000-11-02 2005-08-23 Cisco Technology, Inc. Method and apparatus for exchanging event information between computer systems that reduce perceived lag times by subtracting actual lag times from event playback time
US20020059377A1 (en) * 2000-11-14 2002-05-16 Jagadish Bandhole Collaborative computing systems using dynamic computing environments
US20020073151A1 (en) * 2000-12-01 2002-06-13 Rogers Edwin H. Collaboration system
US20030167418A1 (en) * 2000-12-29 2003-09-04 Min Zhu Fault-tolerant server for collaborative computing
US7069298B2 (en) * 2000-12-29 2006-06-27 Webex Communications, Inc. Fault-tolerant distributed system for collaborative computing
US6901448B2 (en) * 2000-12-29 2005-05-31 Webex Communications, Inc. Secure communications system for collaborative computing
US7203755B2 (en) 2000-12-29 2007-04-10 Webex—Communications, Inc. System and method for application sharing in collaborative setting
US20030164853A1 (en) 2000-12-29 2003-09-04 Min Zhu Distributed document sharing
US20030167304A1 (en) * 2000-12-29 2003-09-04 Min Zhu Distributed meeting management
US7130883B2 (en) * 2000-12-29 2006-10-31 Webex Communications, Inc. Distributed network system architecture for collaborative computing
US6925645B2 (en) * 2000-12-29 2005-08-02 Webex Communications, Inc. Fault tolerant server architecture for collaborative computing
US20030167302A1 (en) * 2000-12-29 2003-09-04 Min Zhu Scalable distributed network system for collaborative computing
US6898637B2 (en) * 2001-01-10 2005-05-24 Agere Systems, Inc. Distributed audio collaboration method and apparatus
US7275102B2 (en) * 2001-01-22 2007-09-25 Sun Microsystems, Inc. Trust mechanisms for a peer-to-peer network computing platform
JP2002236630A (en) * 2001-02-08 2002-08-23 Fujitsu Ltd Processor, administrative device, computer system, recording medium, and program
US6901446B2 (en) 2001-02-28 2005-05-31 Microsoft Corp. System and method for describing and automatically managing resources
US7054933B2 (en) * 2001-03-19 2006-05-30 Polycom, Inc. Self-tuning statistical resource allocation for multipoint network events
US20020156850A1 (en) * 2001-04-24 2002-10-24 Walter Hamscher Negotiating agreements
US7203753B2 (en) * 2001-07-31 2007-04-10 Sun Microsystems, Inc. Propagating and updating trust relationships in distributed peer-to-peer networks
US7308496B2 (en) * 2001-07-31 2007-12-11 Sun Microsystems, Inc. Representing trust in distributed peer-to-peer networks
JP2003044722A (en) * 2001-07-31 2003-02-14 Amada Co Ltd Method and system for processing and editing meeting
US7222187B2 (en) * 2001-07-31 2007-05-22 Sun Microsystems, Inc. Distributed trust mechanism for decentralized networks
US7062533B2 (en) * 2001-09-20 2006-06-13 International Business Machines Corporation Specifying monitored user participation in messaging sessions
US20030063121A1 (en) * 2001-09-28 2003-04-03 Kumhyr David B. Determining availability of participants or techniques for computer-based communication
EP1298524A1 (en) * 2001-09-28 2003-04-02 Ricoh Company, Ltd. Conference support apparatus, information processor, teleconference system and computer product
US7516408B2 (en) * 2001-09-28 2009-04-07 International Business Machines Corporation Method, system and program for switching between various computer-based communication techniques
US20030097410A1 (en) * 2001-10-04 2003-05-22 Atkins R. Travis Methodology for enabling multi-party collaboration across a data network
US20030088875A1 (en) * 2001-11-08 2003-05-08 Gay Lance J Simultaneous viewing of video files on networked computer systems
US7949702B2 (en) * 2002-01-09 2011-05-24 International Business Machines Corporation Method and apparatus for synchronizing cookies across multiple client machines
US7287053B2 (en) * 2002-01-15 2007-10-23 International Business Machines Corporation Ad hoc data sharing in virtual team rooms
US7127613B2 (en) * 2002-02-25 2006-10-24 Sun Microsystems, Inc. Secured peer-to-peer network data exchange
US7509577B2 (en) * 2002-03-08 2009-03-24 Toshiba Corp Oration Method and system for implementing a clipboard
US20030182168A1 (en) * 2002-03-22 2003-09-25 Martha Lyons Systems and methods for virtual, real-time affinity diagramming collaboration by remotely distributed teams
US7418664B2 (en) * 2002-04-03 2008-08-26 Microsoft Corporation Application sharing single document sharing
US7028266B2 (en) * 2002-04-05 2006-04-11 Microsoft Corporation Processing occluded windows during application sharing
US8392502B2 (en) * 2002-04-12 2013-03-05 Alcatel Lucent System and method for effecting conference calling
US8756513B1 (en) 2002-04-23 2014-06-17 Microsoft Corporation Document viewing mechanism for document sharing environment
US7757001B2 (en) * 2002-04-26 2010-07-13 Smart Technologies Ulc System, method and graphical user interface for identifying image from remote site during screen sharing
US7293243B1 (en) * 2002-05-22 2007-11-06 Microsoft Corporation Application sharing viewer presentation
US20030225793A1 (en) * 2002-05-30 2003-12-04 Capital One Financial Corporation System and method for transferring and managing data files using initialization parameter files
US7356563B1 (en) 2002-06-06 2008-04-08 Microsoft Corporation Methods of annotating a collaborative application display
US20040098717A1 (en) * 2002-09-16 2004-05-20 Husain Syed Mohammad Amir System and method for creating complex distributed applications
JP2004110573A (en) * 2002-09-19 2004-04-08 Ricoh Co Ltd Data communication method, data communication device, data communication system and data communication program
US7254608B2 (en) * 2002-10-31 2007-08-07 Sun Microsystems, Inc. Managing distribution of content using mobile agents in peer-topeer networks
US7213047B2 (en) * 2002-10-31 2007-05-01 Sun Microsystems, Inc. Peer trust evaluation using mobile agents in peer-to-peer networks
US7328243B2 (en) * 2002-10-31 2008-02-05 Sun Microsystems, Inc. Collaborative content coherence using mobile agents in peer-to-peer networks
US8108455B2 (en) * 2002-10-31 2012-01-31 Oracle America, Inc. Mobile agents in peer-to-peer networks
US8037202B2 (en) * 2002-10-31 2011-10-11 Oracle America, Inc. Presence detection using mobile agents in peer-to-peer networks
US7707141B1 (en) * 2002-11-27 2010-04-27 Microsoft Corporation Use of a set based approach to constructing complex queries for managing resources built from a set of simple underlying operations
US7945618B2 (en) * 2003-02-10 2011-05-17 Oren Asher Peer-to-peer service designer
US7222305B2 (en) * 2003-03-13 2007-05-22 Oracle International Corp. Method of sharing a desktop with attendees of a real-time collaboration
US7529798B2 (en) * 2003-03-18 2009-05-05 Intercall, Inc. System and method for record and playback of collaborative web browsing session
US7613137B2 (en) * 2003-05-22 2009-11-03 Insors Integrated Communications Data stream communication
US7949116B2 (en) * 2003-05-22 2011-05-24 Insors Integrated Communications Primary data stream communication
US20050004986A1 (en) * 2003-07-03 2005-01-06 Aoki Norihiro Edwin Remote population of computer clipboard via a messaging system
US20050055455A1 (en) * 2003-09-10 2005-03-10 Oren Asher Development platform for peer-to-peer applications
US7353255B2 (en) * 2003-10-30 2008-04-01 International Business Machines Corporation System and apparatus for geographically distributed VoIP conference service with enhanced QoS
US8521830B2 (en) * 2003-12-22 2013-08-27 International Business Machines Corporation Pull-configured distribution of imagery
US7774834B1 (en) * 2004-02-18 2010-08-10 Citrix Systems, Inc. Rule generalization for web application entry point modeling
US7890996B1 (en) 2004-02-18 2011-02-15 Teros, Inc. Using statistical analysis to generate exception rules that allow legitimate messages to pass through application proxies and gateways
US20050218739A1 (en) * 2004-04-01 2005-10-06 Microsoft Corporation System and method for sharing objects between computers over a network
US7680885B2 (en) * 2004-04-15 2010-03-16 Citrix Systems, Inc. Methods and apparatus for synchronization of data set representations in a bandwidth-adaptive manner
US20060002315A1 (en) * 2004-04-15 2006-01-05 Citrix Systems, Inc. Selectively sharing screen data
US7827139B2 (en) * 2004-04-15 2010-11-02 Citrix Systems, Inc. Methods and apparatus for sharing graphical screen data in a bandwidth-adaptive manner
US20060031779A1 (en) * 2004-04-15 2006-02-09 Citrix Systems, Inc. Selectively sharing screen data
US7818679B2 (en) * 2004-04-20 2010-10-19 Microsoft Corporation Method, system, and apparatus for enabling near real time collaboration on an electronic document through a plurality of computer systems
US7634533B2 (en) * 2004-04-30 2009-12-15 Microsoft Corporation Systems and methods for real-time audio-visual communication and data collaboration in a network conference environment
KR20050114047A (en) * 2004-05-31 2005-12-05 삼성전자주식회사 Method and server for servicing remote clients
JP2006092242A (en) * 2004-09-24 2006-04-06 Fuji Xerox Co Ltd Remote conference system, base server, management server, remote conference management method, and program
US7702750B2 (en) 2004-09-29 2010-04-20 Citrix Systems, Inc. System and method for event detection and re-direction over a network using a presentation level protocol
US8069226B2 (en) 2004-09-30 2011-11-29 Citrix Systems, Inc. System and method for data synchronization over a network using a presentation level protocol
US8090844B2 (en) * 2004-10-08 2012-01-03 Truecontext Corporation Content management across shared, mobile file systems
US20060159432A1 (en) 2005-01-14 2006-07-20 Citrix Systems, Inc. System and methods for automatic time-warped playback in rendering a recorded computer session
US8230096B2 (en) 2005-01-14 2012-07-24 Citrix Systems, Inc. Methods and systems for generating playback instructions for playback of a recorded computer session
US8296441B2 (en) 2005-01-14 2012-10-23 Citrix Systems, Inc. Methods and systems for joining a real-time session of presentation layer protocol data
US8200828B2 (en) 2005-01-14 2012-06-12 Citrix Systems, Inc. Systems and methods for single stack shadowing
US8340130B2 (en) 2005-01-14 2012-12-25 Citrix Systems, Inc. Methods and systems for generating playback instructions for rendering of a recorded computer session
US8935316B2 (en) * 2005-01-14 2015-01-13 Citrix Systems, Inc. Methods and systems for in-session playback on a local machine of remotely-stored and real time presentation layer protocol data
US7747685B2 (en) * 2005-01-20 2010-06-29 International Business Machines Corporation Method for automatic detection of display sharing and alert generation in instant messaging
US20060168533A1 (en) * 2005-01-27 2006-07-27 Microsoft Corporation System and method for providing an indication of what part of a screen is being shared
US20060210034A1 (en) * 2005-03-17 2006-09-21 Beadle Bruce A Enabling a user to store a messaging session entry for delivery when an intended recipient is next available
US20060244818A1 (en) * 2005-04-28 2006-11-02 Comotiv Systems, Inc. Web-based conferencing system
US20060271877A1 (en) * 2005-05-25 2006-11-30 Citrix Systems, Inc. A system and methods for selective sharing of an application window
US8443040B2 (en) 2005-05-26 2013-05-14 Citrix Systems Inc. Method and system for synchronizing presentation of a dynamic data set to a plurality of nodes
US8079059B1 (en) * 2005-05-31 2011-12-13 Imera Systems, Inc. Method and system for providing terminal view access of a client device in a secure network
US20070005696A1 (en) * 2005-07-01 2007-01-04 Beers Theodore W Method for host transfer in a virtual collaboration session
US7991916B2 (en) * 2005-09-01 2011-08-02 Microsoft Corporation Per-user application rendering in the presence of application sharing
US8191008B2 (en) * 2005-10-03 2012-05-29 Citrix Systems, Inc. Simulating multi-monitor functionality in a single monitor environment
CN101495990B (en) 2005-12-02 2011-09-14 思杰系统有限公司 Systems and methods for providing authentication credentials across proxy server to virtual computing environments to access remote resource
US20070198637A1 (en) * 2006-01-04 2007-08-23 Scott Deboy Conferencing system with data file management
US20070156829A1 (en) * 2006-01-05 2007-07-05 Scott Deboy Messaging system with secure access
US20070162605A1 (en) * 2006-01-07 2007-07-12 Chalasani Nanchariah R Distributed instant messaging
KR100748700B1 (en) * 2006-01-18 2007-08-13 삼성전자주식회사 Video conference system and method using white board
US20070239827A1 (en) * 2006-02-13 2007-10-11 Scott Deboy Global chat system
US20070201086A1 (en) * 2006-02-28 2007-08-30 Momjunction, Inc. Method for Sharing Documents Between Groups Over a Distributed Network
US7768543B2 (en) * 2006-03-09 2010-08-03 Citrix Online, Llc System and method for dynamically altering videoconference bit rates and layout based on participant activity
US20070286366A1 (en) * 2006-03-17 2007-12-13 Scott Deboy Chat presence system
US20070239839A1 (en) * 2006-04-06 2007-10-11 Buday Michael E Method for multimedia review synchronization
US8214395B2 (en) * 2006-04-21 2012-07-03 Microsoft Corporation Tracking and editing a resource in a real-time collaborative session
US7895639B2 (en) * 2006-05-04 2011-02-22 Citrix Online, Llc Methods and systems for specifying and enforcing access control in a distributed system
US20070276910A1 (en) * 2006-05-23 2007-11-29 Scott Deboy Conferencing system with desktop sharing
US20070282793A1 (en) * 2006-06-01 2007-12-06 Majors Kenneth D Computer desktop sharing
US20070288640A1 (en) * 2006-06-07 2007-12-13 Microsoft Corporation Remote rendering of multiple mouse cursors
US20070288850A1 (en) * 2006-06-09 2007-12-13 Microsoft Corporation Application sharing
US20070294626A1 (en) * 2006-06-15 2007-12-20 Microsoft Corporation Controlling application sharing
US20080005245A1 (en) * 2006-06-30 2008-01-03 Scott Deboy Conferencing system with firewall
US20080043964A1 (en) * 2006-07-14 2008-02-21 Majors Kenneth D Audio conferencing bridge
US20080021968A1 (en) * 2006-07-19 2008-01-24 Majors Kenneth D Low bandwidth chat system
US20080043759A1 (en) * 2006-08-17 2008-02-21 Northrop Grumman Systems Corporation System, Apparatus, Method and Computer Program Product for an Intercom System
US20080065727A1 (en) * 2006-09-13 2008-03-13 Majors Kenneth D Conferencing system with improved access
US20080065999A1 (en) * 2006-09-13 2008-03-13 Majors Kenneth D Conferencing system with document access
US20080066001A1 (en) * 2006-09-13 2008-03-13 Majors Kenneth D Conferencing system with linked chat
US8054241B2 (en) 2006-09-14 2011-11-08 Citrix Systems, Inc. Systems and methods for multiple display support in remote access software
US7791559B2 (en) * 2006-09-14 2010-09-07 Citrix Systems, Inc. System and method for multiple display support in remote access software
US8817668B2 (en) * 2006-09-15 2014-08-26 Microsoft Corporation Distributable, scalable, pluggable conferencing architecture
US8433756B2 (en) * 2006-10-02 2013-04-30 Tp Lab, Inc. Multiple terminal collaboration system
US8375304B2 (en) * 2006-11-01 2013-02-12 Skyfire Labs, Inc. Maintaining state of a web page
US8711929B2 (en) * 2006-11-01 2014-04-29 Skyfire Labs, Inc. Network-based dynamic encoding
US9247260B1 (en) 2006-11-01 2016-01-26 Opera Software Ireland Limited Hybrid bitmap-mode encoding
US8443398B2 (en) * 2006-11-01 2013-05-14 Skyfire Labs, Inc. Architecture for delivery of video content responsive to remote interaction
WO2008092104A2 (en) * 2007-01-25 2008-07-31 Skyfire Labs, Inc. Dynamic client-server video tiling streaming
CN101675626B (en) 2007-03-14 2012-10-10 惠普开发有限公司 Converting data from a first network format to non-network format and from non-network format to a second network format
EP2057793A1 (en) 2007-03-14 2009-05-13 Hewlett-Packard Development Company, L.P. Synthetic bridging
US7765261B2 (en) 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium and signals for supporting a multiple-party communication on a plurality of computer servers
US8702505B2 (en) 2007-03-30 2014-04-22 Uranus International Limited Method, apparatus, system, medium, and signals for supporting game piece movement in a multiple-party communication
US7950046B2 (en) 2007-03-30 2011-05-24 Uranus International Limited Method, apparatus, system, medium, and signals for intercepting a multiple-party communication
US8627211B2 (en) 2007-03-30 2014-01-07 Uranus International Limited Method, apparatus, system, medium, and signals for supporting pointer display in a multiple-party communication
US8060887B2 (en) * 2007-03-30 2011-11-15 Uranus International Limited Method, apparatus, system, and medium for supporting multiple-party communications
US7765266B2 (en) 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium, and signals for publishing content created during a communication
US20090055234A1 (en) * 2007-08-22 2009-02-26 International Business Machines Corporation System and methods for scheduling meetings by matching a meeting profile with virtual resources
JP5042050B2 (en) * 2008-01-25 2012-10-03 シャープ株式会社 Television receiver, server, television receiver operating system, and television receiver operating program
JP4885892B2 (en) * 2008-02-22 2012-02-29 株式会社ソニー・コンピュータエンタテインメント Terminal device, information providing system, file access method, and data structure
US9003059B2 (en) * 2008-03-31 2015-04-07 Microsoft Technology Licensing, Llc Running applications in an online or offline mode based on the availability of the connection to the remote web server
US20090285392A1 (en) * 2008-05-15 2009-11-19 At&T Knowledge Ventures, L.P. Real-Time Help Services for Web Applications
US8887063B2 (en) * 2008-05-21 2014-11-11 Smart Technologies Ulc Desktop sharing method and system
US8208000B1 (en) 2008-09-09 2012-06-26 Insors Integrated Communications Methods, systems and program products for managing video conferences
JP5100595B2 (en) * 2008-09-30 2012-12-19 シャープ株式会社 AV equipment, server, AV equipment operating system, and AV equipment operating program
CN101374233B (en) * 2008-10-23 2011-09-07 杭州华三通信技术有限公司 Method and apparatus for adapting video stream frame rate, and FPGA chip as well as equipment for processing video stream
US20100131868A1 (en) * 2008-11-26 2010-05-27 Cisco Technology, Inc. Limitedly sharing application windows in application sharing sessions
US7966370B1 (en) * 2009-08-26 2011-06-21 Adobe Systems Incorporated Templating and provisioning of collaborative facilities for a data-agnostic collaboration service
US20110239117A1 (en) * 2010-03-25 2011-09-29 Microsoft Corporation Natural User Interaction in Shared Resource Computing Environment
US20110239133A1 (en) * 2010-03-29 2011-09-29 Microsoft Corporation Shared resource computing collaboration sessions management
US8892628B2 (en) 2010-04-01 2014-11-18 Microsoft Corporation Administrative interface for managing shared resources
US20110270936A1 (en) * 2010-04-30 2011-11-03 David Michael Guthrie Systems, methods, and computer programs for monitoring a conference and communicating with participants without joining as a participant
USD642586S1 (en) 2010-04-30 2011-08-02 American Teleconferencing Services, Ltd. Portion of a display screen with a user interface
US9419810B2 (en) 2010-04-30 2016-08-16 American Teleconference Services, Ltd. Location aware conferencing with graphical representations that enable licensing and advertising
USD656504S1 (en) 2010-04-30 2012-03-27 American Teleconferencing Services, Ltd. Display screen portion with an animated image
US9560206B2 (en) 2010-04-30 2017-01-31 American Teleconferencing Services, Ltd. Real-time speech-to-text conversion in an audio conference session
USD656507S1 (en) 2010-04-30 2012-03-27 American Teleconferencing Services, Ltd. Display screen portion with an animated image
US10268360B2 (en) 2010-04-30 2019-04-23 American Teleconferencing Service, Ltd. Participant profiling in a conferencing system
USD656506S1 (en) 2010-04-30 2012-03-27 American Teleconferencing Services, Ltd. Display screen portion with an animated image
USD656505S1 (en) 2010-04-30 2012-03-27 American Teleconferencing Services, Ltd. Display screen portion with animated image
US10372315B2 (en) 2010-04-30 2019-08-06 American Teleconferencing Services, Ltd Location-aware conferencing with calendar functions
US9106794B2 (en) 2010-04-30 2015-08-11 American Teleconferencing Services, Ltd Record and playback in a conference
USD656941S1 (en) 2010-04-30 2012-04-03 American Teleconferencing Services, Ltd. Display screen portion with an animated image
USD656942S1 (en) 2010-04-30 2012-04-03 American Teleconferencing Services, Ltd. Display screen portion with an animated image
USD642587S1 (en) 2010-04-30 2011-08-02 American Teleconferencing Services, Ltd. Animated graphical user interface for a portion of a display screen
US9082106B2 (en) 2010-04-30 2015-07-14 American Teleconferencing Services, Ltd. Conferencing system with graphical interface for participant survey
US8626847B2 (en) 2010-04-30 2014-01-07 American Teleconferencing Services, Ltd. Transferring a conference session between client devices
US20110268263A1 (en) * 2010-04-30 2011-11-03 American Teleconferencing Services Ltd. Conferencing alerts
US9189143B2 (en) 2010-04-30 2015-11-17 American Teleconferencing Services, Ltd. Sharing social networking content in a conference user interface
TWI429288B (en) * 2010-05-31 2014-03-01 Ibm Web conferencing server and method of holding a web conference
US8719581B2 (en) 2010-09-22 2014-05-06 Savant Systems, Llc Programmable multimedia controller with flexible user access and shared device configurations
JP6035712B2 (en) 2010-10-26 2016-11-30 株式会社リコー Screen sharing service providing system, information processing apparatus, screen sharing service providing method, screen sharing service providing program, and program
KR101718186B1 (en) 2011-01-04 2017-03-20 텔레폰악티에볼라겟엘엠에릭슨(펍) Local media rendering
US20120296982A1 (en) * 2011-05-17 2012-11-22 International Business Machines Corporation Automatic Scheduling Tool
US9584558B2 (en) 2011-09-08 2017-02-28 Avaya Inc. Methods, apparatuses, and computer-readable media for initiating an application for participants of a conference
US8615159B2 (en) 2011-09-20 2013-12-24 Citrix Systems, Inc. Methods and systems for cataloging text in a recorded session
US9929869B2 (en) 2011-10-26 2018-03-27 Avaya Inc. Methods, apparatuses, and computer-readable media for providing a collaboration license to an application for participant user device(s) participating in an on-line collaboration
US20140310616A1 (en) * 2012-05-18 2014-10-16 Artashes Valeryevich Ikonomov System for interactive communication
US9984408B1 (en) * 2012-05-30 2018-05-29 Amazon Technologies, Inc. Method, medium, and system for live video cooperative shopping
US9298344B2 (en) * 2013-06-10 2016-03-29 Adobe Systems Incorporated Method and apparatus for enabling participation in a web conference as a virtual participant
JP6369101B2 (en) * 2013-06-28 2018-08-08 株式会社リコー Transmission terminal, program, image display method, transmission system
US20160205154A1 (en) * 2015-01-08 2016-07-14 Cisco Technology, Inc. Providing a meeting link to a participant who has left a location of the meeting
US10471348B2 (en) 2015-07-24 2019-11-12 Activision Publishing, Inc. System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks
US10099140B2 (en) 2015-10-08 2018-10-16 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US11185784B2 (en) 2015-10-08 2021-11-30 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access
US9667676B1 (en) * 2016-01-29 2017-05-30 Dropbox, Inc. Real time collaboration and document editing by multiple participants in a content management system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3818087A1 (en) * 1988-05-27 1989-12-07 Siemens Ag Digital communications system with a computer controller
US5471318A (en) * 1993-04-22 1995-11-28 At&T Corp. Multimedia communications network
US5812534A (en) * 1993-01-08 1998-09-22 Multi-Tech Systems, Inc. Voice over data conferencing for a computer-based personal communications system

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5093913A (en) * 1986-12-22 1992-03-03 At&T Laboratories Multiprocessor memory management system with the flexible features of a tightly-coupled system in a non-shared memory system
DE68923457T2 (en) * 1988-11-14 1996-04-11 Datapoint Corp LOCAL NETWORK WITH SEVERAL DYNAMIC OPTIONS.
EP0622930A3 (en) 1993-03-19 1996-06-05 At & T Global Inf Solution Application sharing for computer collaboration system.
US5467264A (en) 1993-06-30 1995-11-14 Microsoft Method and system for selectively interdependent control of devices
US5689641A (en) * 1993-10-01 1997-11-18 Vicor, Inc. Multimedia collaboration system arrangement for routing compressed AV signal through a participant site without decompressing the AV signal
US5530795A (en) 1994-02-15 1996-06-25 Wan; Hong K. Computer conferencing
US5572582A (en) * 1995-02-24 1996-11-05 Apple Computer, Inc. Method and apparatus for establishing communication between two teleconferencing endpoints
US5854898A (en) * 1995-02-24 1998-12-29 Apple Computer, Inc. System for automatically adding additional data stream to existing media connection between two end points upon exchange of notifying and confirmation messages therebetween
WO1996038983A1 (en) * 1995-06-02 1996-12-05 Intel Corporation Method and apparatus for controlling participant input in a conferencing environment
US5864711A (en) 1995-07-05 1999-01-26 Microsoft Corporation System for determining more accurate translation between first and second translator, and providing translated data to second computer if first translator is more accurate
US5874960A (en) 1995-07-05 1999-02-23 Microsoft Corporation Method and system for sharing applications between computer systems
US5717863A (en) 1995-09-27 1998-02-10 Intel Corporation Method and apparatus for managing pc conference connection addresses
US5717879A (en) 1995-11-03 1998-02-10 Xerox Corporation System for the capture and replay of temporal data representing collaborative activities
US5826051A (en) * 1995-12-27 1998-10-20 Intel Corporation Method and apparatus for simplifying active window selection, application activation, and shared command execution in a multi-application environment
US5790127A (en) * 1996-05-03 1998-08-04 Intel Corporation Supervising activations states in application sharing
US6061722A (en) * 1996-12-23 2000-05-09 T E Network, Inc. Assessing network performance without interference with normal network operations
US5949975A (en) * 1997-03-12 1999-09-07 Microsoft Corp. Method and system for negotiating capabilities when sharing an application program with multiple computer systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3818087A1 (en) * 1988-05-27 1989-12-07 Siemens Ag Digital communications system with a computer controller
US5812534A (en) * 1993-01-08 1998-09-22 Multi-Tech Systems, Inc. Voice over data conferencing for a computer-based personal communications system
US5471318A (en) * 1993-04-22 1995-11-28 At&T Corp. Multimedia communications network

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
OHMORI T ET AL: "COOPERATIVE CONTROL FOR SHARING APPLICATIONS BASED ON DISTRIBUTED MULTIPARTY DESKTOP CONFERENCING SYSTEM: MERMAID", PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON COMMUNICATIONS,US,NEW YORK, IEEE, vol. -, 14 June 1992 (1992-06-14), pages 1069 - 1075, XP000326831, ISBN: 0-7803-0599-X *
OHMORI T. ET AL.: "Cooperative Control for Sharing Applications Based on Distributed Multiparty Desktop Conferencing System: MERMAID", PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON COMMUNICATIONS, 14 June 1992 (1992-06-14), pages 1069 - 1075

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1207650A3 (en) * 2000-11-17 2003-08-20 Square Co., Ltd. Method and apparatus for opening electronic conference
EP1207650A2 (en) * 2000-11-17 2002-05-22 Square Co., Ltd. Method and apparatus for opening electronic conference
US6880168B2 (en) 2000-11-17 2005-04-12 Kabushiki Kaisha Square Enix Chat application for video game machine
EP1303098A3 (en) * 2001-09-21 2004-06-09 Siemens Aktiengesellschaft Method for transmitting data between two data transfer devices
EP1303098A2 (en) * 2001-09-21 2003-04-16 Siemens Aktiengesellschaft Method for transmitting data between two data transfer devices
WO2003051003A1 (en) * 2001-12-12 2003-06-19 Intel Corporation Local caching of images for on-line conferencing programs
CN1324503C (en) * 2002-06-18 2007-07-04 微软公司 Group image interface for group connection
EP1376430A3 (en) * 2002-06-18 2004-05-06 Microsoft Corporation Visual group interface for group connectivity
EP1376430A2 (en) * 2002-06-18 2004-01-02 Microsoft Corporation Visual group interface for group connectivity
AU2003204372B2 (en) * 2002-06-18 2010-03-25 Microsoft Corporation Visual group interface for group connectivity
US7721216B2 (en) 2002-06-18 2010-05-18 Microsoft Corporation Visual group interface for group connectivity
US8196051B2 (en) 2002-06-18 2012-06-05 Microsoft Corporation Shared online experience history capture and provision system and method
EP1460851A3 (en) * 2003-02-24 2012-02-08 Microsoft Corporation A system and method for real-time whiteboard streaming
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
AU2006235871B2 (en) * 2006-04-11 2008-08-07 Fuji Xerox Co., Ltd. Electronic conference assistance method, and information terminal device in electronic conference system
US9083769B2 (en) 2011-09-14 2015-07-14 Barco N.V. Electronic tool and methods for meetings
US10762002B2 (en) 2011-09-14 2020-09-01 Barco N.V. Electronic tool and methods with audio for meetings
US11792085B2 (en) 2011-09-14 2023-10-17 Barco N.V. Electronic tool and methods for meetings
US11422951B2 (en) 2011-09-14 2022-08-23 Barco N.V. Electronic tool and methods for meetings between two users
US11403237B2 (en) 2011-09-14 2022-08-02 Barco N.V. Electronic tool and methods with audio for meetings
US11258676B2 (en) 2011-09-14 2022-02-22 Barco N.V. Electronic tool and methods for meetings
US10050800B2 (en) 2011-09-14 2018-08-14 Barco N.V. Electronic tool and methods for meetings for providing connection to a communications network
US11216392B2 (en) 2011-09-14 2022-01-04 Barco N.V. Electronic tool and methods for meetings between multiple users
US11151060B2 (en) 2011-09-14 2021-10-19 Barco N.V. Electronic tool and methods for meetings for communicating user selected media content
US10585814B2 (en) 2011-09-14 2020-03-10 Barco N.V. Electronic tool and methods for meetings for communicating media content from users at a meeting
US10965480B2 (en) 2011-09-14 2021-03-30 Barco N.V. Electronic tool and methods for recording a meeting
US8756348B2 (en) 2011-09-14 2014-06-17 Barco N.V. Electronic tool and methods for meetings
US10795832B2 (en) 2011-09-14 2020-10-06 Barco N.V. Electronic tool for communicating over a communication network
US10904103B2 (en) 2011-09-14 2021-01-26 Barco N.V. Electronic tool and methods for meetings
US9722986B2 (en) 2012-04-18 2017-08-01 Barco N.V. Electronic tool and methods for meetings
EP3099009A1 (en) * 2012-04-18 2016-11-30 Barco N.V. Electronic tool and methods for meetings
WO2013156092A1 (en) * 2012-04-18 2013-10-24 Barco N.V. Electronic tool and methods for meetings
US9519528B2 (en) 2013-04-19 2016-12-13 National Ict Australia Limited Checking undoability of an API-controlled computing system
US10958645B2 (en) 2014-04-07 2021-03-23 Barco N.V. Ad hoc one-time pairing of remote devices using online audio fingerprinting
US10348724B2 (en) 2014-04-07 2019-07-09 Barco N.V. Ad hoc one-time pairing of remote devices using online audio fingerprinting
US10074374B2 (en) 2014-04-07 2018-09-11 Barco N.V. Ad hoc one-time pairing of remote devices using online audio fingerprinting
WO2020073267A1 (en) * 2018-10-11 2020-04-16 Entit Software Llc Asymmetric-man-in-the-middle capture based application sharing protocol traffic recordation
US11956275B2 (en) 2018-10-11 2024-04-09 Micro Focus Llc Asymmetric-man-in-the-middle capture based application sharing protocol traffic recordation

Also Published As

Publication number Publication date
US6584493B1 (en) 2003-06-24
EP2290524A2 (en) 2011-03-02
EP2400383A1 (en) 2011-12-28
EP2290524A3 (en) 2011-05-18
DK1159803T3 (en) 2012-06-18
HK1165587A1 (en) 2012-10-05
ATE557492T1 (en) 2012-05-15
EP2264943A3 (en) 2011-10-05
AU3471500A (en) 2000-09-21
EP2264943A2 (en) 2010-12-22
EP2400383B1 (en) 2013-03-06
EP1159803B1 (en) 2012-05-09
EP1159803A1 (en) 2001-12-05

Similar Documents

Publication Publication Date Title
US6584493B1 (en) Multiparty conferencing and collaboration system utilizing a per-host model command, control and communication structure
US7167182B2 (en) Scalable multiparty conferencing and collaboration system and method of dynamically allocating system resources in same
US7136062B1 (en) Scalable multiparty conferencing and collaboration system and method of dynamically allocating system resources and providing true color support in same
US8081205B2 (en) Dynamically switched and static multiple video streams for a multimedia conference
Pearl System support for integrated desktop video conferencing
Schooler Conferencing and collaborative computing
RU2518402C2 (en) Methods of generating visual composition for multimedia conference event
JP5472882B2 (en) CONFERENCE TERMINAL, CONFERENCE SERVER, CONFERENCE SYSTEM, AND DATA PROCESSING METHOD
CN1328683C (en) Video conference talk conversion from unicast to multicast
US20040008635A1 (en) Multi-participant conference system with controllable content delivery using a client monitor back-channel
US20040008249A1 (en) Method and apparatus for controllable conference content via back-channel video interface
EP0497022A1 (en) Conference system
US20080037576A1 (en) Media broadcast over an internet protocol (IP) network
Chen et al. A multimedia desktop collaboration system
US20060161620A1 (en) Extensible activities within collaboration sessions
Dommel et al. Design issues for floor control protocols
EP2271998B1 (en) Event management system
CN113872778B (en) Device connection method, device and storage medium
KR100307194B1 (en) Method and apparatus for managing session and component in creative and new technology virtual application system
KR20000045495A (en) Method for composing gui and processing callback in multimedia conference system
Garcia-Luna-Aceves et al. Floor control alternatives for distributed videoconferencing over IP networks
Mankin et al. The design of a digital amphitheater
González et al. Lightweight scalable tool sharing for the internet
Schmidt et al. A framework for synchronous tele-cooperation
Romano UMPIRE: a universal moderator for the participation in IETF remote events

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2000913235

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2000913235

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642