The present invention relates generally to synchronization of source node and consumer node data sets and, more particularly, to techniques and apparatus for synchronizing presentation of a dynamic data set to a plurality of nodes.
The promise of using the global computer network, colloquially referred to as the Internet, to allow many different individuals from disparate geographic and temporal regions to communicate and collaborate in real-time or near real-time remain largely unfulfilled. Differing bandwidths of different connections result in difficulties sharing time-sensitive information. The simplest example of this effect is “screen sharing,” that is, updating the screens of multiple clients such that each one mirrors a server's screen as closely as possible. Either screen updates are limited to the speed of the slowest connection, or users communicating over lower-bandwidth connections are “left behind” by those with higher-bandwidth connections. Further, in order to be useful, a system should support several simultaneous information sources and many information consumers, e.g., one or more screen broadcasts to hundreds of viewers. Additionally, a system should allow information consumers to “join late,” that is, to begin receiving information from the information source at a point in time later than the beginning of the information flow.
Some attempts at solving this problem rely on a central server to analyze the information traffic and route traffic between information sources and information consumers. Although these techniques are moderately successful, use of a central server to make decisions based on the content of the routed information destroys the confidentiality of the routed information, which is unacceptable.
The present invention enables synchronization of dynamic data sets to multiple consumer nodes. The system fully utilizes the bandwidth available to each consumer node and is simple, efficient, and reliable. The system also has the ability to host multiple one-to-many sessions, allows consumer nodes to join an ongoing one-to-many session at any time, and enables consumer nodes to annotates data and transmission of the annotation to all nodes in the session. The system also supports end-to-end encryption of data.
In one aspect the present invention relates to a method for synchronizing presentation of a dynamic data set to a plurality of nodes. A consumer node in the plurality of nodes generates a plurality of data packets representing a change to a dynamic data set. A host node in the plurality of nodes receives the plurality of data packets. The host node transmits the received plurality of data packets to a synchronization engine. The synchronization engine generates metadata information representing the difference between the dynamic data set and the plurality of data packets. The synchronization engine transmits to the plurality of nodes the metadata information and the plurality of data packets.
In some embodiments, a request for the current state of the changing data set is received by the synchronization engine. In other embodiments, the host node receives and transmits the plurality of data packets in an encrypted form.
In another aspect, the invention relates to a system for synchronizing presentation of a dynamic data set to a plurality of nodes. The system includes a consumer node and a communications service. The consumer node transmits at least one metadata packet identifying a plurality of data packets that represent a current state of a dynamic data set and transmitting at least one of the identified packets. The communications service is in communication with the consumer node and selects one of the at least one metadata packets and the least one data packet for transmission to a host node in a plurality of nodes.
In some embodiments, a second node in the plurality of nodes requests a current state of the dynamic data set from the communication service. In one of these embodiments, the communication service selects one of the at least one metadata packets and the at least one data packet in response to the request made by the second node.
In still another aspect, the present invention relates to a communications service synchronizing presentation of a dynamic data set to a plurality of nodes. The communications service includes a receiving subsystem, a synchronization engine, and a transmission subsystem. The receiving subsystem receives at least one metadata packet identifying at least one data packet representing a current state of a dynamic data set and at least one data packet identified by the received at least one metadata packet. The synchronization engine selects one of the at least one metadata packet and the at least one data packet. The transmission subsystem transmits the selected one of the at least one metadata packet and the at least one data packet. In some embodiments, the communications service also includes a memory element. In still other embodiments, the synchronization engine selects one of the at least one metadata packet and the at least one data packet in response to a request received from a consumer node.
In yet another aspect, the present invention relates to a node presenting a dynamic data set. The node includes an interception subsystem, a transceiver subsystem, and a display subsystem. The interception subsystem acquires at least one input from a human interface device, the input representing a change to a dynamic data set. The transceiver subsystem transmits the at least one input to a synchronization engine for presentation to a plurality of nodes and receiving from the synchronization engine a plurality of data packets representing a second change to the dynamic data set. The display subsystem, in communication with the transceiver subsystem, receives the plurality of data packets and displays the plurality of data packets to a user of the node. In one embodiment, the interception subsystem further comprises a mouse listener. In another embodiment, the interception subsystem further comprises acquiring at least one input representing a change to a presentation. In still another embodiment, the display subsystem further comprises displaying to the user a cursor represented by an icon selected from a plurality of icons, responsive to the plurality of data packets.
These and other aspects of this invention will be readily apparent from the detailed description below and the appended drawings, which are meant to illustrate and not to limit the invention, and in which:
Referring now to
The network connections 160, 170, 180 between the consumer nodes 150, 150′, 150″ and the source node 100 can be local area networks (LAN), metropolitan area networks (MAN), or a wide area network (WAN) such as the Internet. The source node 100 and the consumer nodes 150, 150′, 150″ may connect to the networks 160, 170, 180 through a variety of connections including standard telephone lines, LAN or WAN links (e.g., T1, T3, 56 kb, X.25), broadband connections (ISDN, Frame Relay, ATM), and wireless connections. Connections between the source node 100 and the consumer nodes 150, 159′, 150″ may use a variety of data-link layer communication protocols (e.g., TCP/IP, IPX, SPX, NetBIOS, NetBEUI, SMB, Ethernet, ARCNET, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEE 802.11b, IEEE 802.11g and direct asynchronous connections). Although shown in
In many embodiments, the source node 100 and the consumer nodes 150, 150′, 150″ are provided as personal computer or computer servers, of the sort manufactured by the Hewlett-Packard Corporation of Palo Alto, Calif. or the Dell Corporation of Round Rock, Tex.
The central processing unit 202 is any logic circuitry that responds to and processes instructions fetched from the main memory unit 204. In many embodiments, the central processing unit is provided by a microprocessor unit, such as: the 8088, the 80286, the 80386, the 80486, the Pentium, Pentium Pro, the Pentium II, Pentium III, Pentium IV, Pentium M, the Celeron, or the Xeon processor, all of which are manufactured by Intel Corporation of Mountain View, Calif.; the 68000, the 68010, the 68020, the 68030, the 68040, the PowerPC 601, the PowerPC604, the PowerPC604e, the MPC603e, the MPC603ei, the MPC603ev, the MPC603r, the MPC603p, the MPC740, the MPC745, the MPC750, the MPC755, the MPC7400, the MPC7410, the MPC7441, the MPC7445, the MPC7447, the MPC7450, the MPC7451, the MPC7455, the MPC7457 processor, all of which are manufactured by Motorola Corporation of Schaumburg, Ill.; the Crusoe TM5800, the Crusoe TM5600, the Crusoe TM5500, the Crusoe TM5400, the Efficeon TM8600, the Efficeon TM8300, or the Efficeon TM8620 processor, manufactured by Transmeta Corporation of Santa Clara, Calif.; the RS/6000 processor, the RS64, the RS 64 II, the P2SC, the POWER3, the RS64 III, the POWER3-II, the RS 64 IV, the POWER4, the POWER4+, the POWER5, or the POWER6 processor, all of which are manufactured by International Business Machines of White Plains, N.Y.; or the AMD Opteron, the AMD Athalon 64 FX, the AMD Athalon, or the AMD Duron processor, manufactured by Advanced Micro Devices of Sunnyvale, Calif.
Main memory unit 204 may be one or more memory chips capable of storing data and allowing any storage location to be directly accessed by the microprocessor 202, such as Static random access memory (SRAM), Burst SRAM or SynchBurst SRAM (BSRAM), Dynamic random access memory (DRAM), Fast Page Mode DRAM (FPM DRAM), Enhanced DRAM (EDRAM), Extended Data Output RAM (EDO RAM), Extended Data Output DRAM (EDO DRAM), Burst Extended Data Output DRAM (BEDO DRAM), Enhanced DRAM (EDRAM), synchronous DRAM (SDRAM), JEDEC SRAM, PC100 SDRAM, Double Data Rate SDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), SyncLink DRAM (SLDRAM), Direct Rambus DRAM (DRDRAM), or Ferroelectric RAM (FRAM).
In the embodiment shown in
In the embodiment shown in
A wide variety of I/O devices 230 may be present in the computer system 200. Input devices include keyboards, mice, trackpads, trackballs, microphones, and drawing tablets. Output devices include video displays, speakers, inkjet printers, laser printers, and dye-sublimation printers. An I/O device may also provide mass storage for the computer system 200 such as a hard disk drive, a floppy disk drive for receiving floppy disks such as 3.5-inch, 5.25-inch disks or ZIP disks, a CD-ROM drive, a CD-R/RW drive, a DVD-ROM drive, tape drives of various formats, and USB storage devices such as the USB Flash Drive line of devices manufactured by Twintech Industry, Inc. of Los Alamitos, Calif.
In further embodiments, an I/O device 230 may be a bridge between the system bus 220 and an external communication bus, such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWire bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or a Serial Attached small computer system interface bus.
General-purpose desktop computers of the sort depicted in
In some embodiments the consumer node 150, 150′, 150″ is a mobile device, such as a JAVA-enabled cellular telephone or personal digital assistant (PDA), such as the i55sr, i58sr, i85s, i88s, i90c, i95cl, or the im11000, all of which are manufactured by Motorola Corp. of Schaumburg, Ill., the 6035 or the 7135, manufactured by Kyocera of Kyoto, Japan, or the i300 or i330, manufactured by Samsung Electronics Co., Ltd., of Seoul, Korea. In other embodiments in which the client device 140 is mobile, it may be a personal digital assistant (PDA), such as the Tungsten W, the VII, the VIIx, the i705, or a combination PDA/telephone device such as the Treo 180, Treo 270, Treo 600, or Treo 650 all of which are manufactured by palmOne, Inc. of Milpitas, Calif.
In these embodiments, the consumer nodes 150, 150′, 150″ connect to the source node 100 using any one of a number of well-known protocols from the GSM or CDMA families, such as W-CDMA. These protocols support commercial wireless communication services and W-CDMA, in particular is the underlying protocol supporting i-Mode and mMode services, offered by NTT DoCoMo.
The interception subsystem acquires at least one input from a human interface device, the input representing a change to a dynamic data set. In one embodiment, the interception subsystem further includes a mouse listener. In some embodiments, a user of the node annotating the dynamic data set may use a human interface device, such as a mouse, to input the change to the dynamic data set representing the annotation. In one of these embodiments, the interception subsystem uses the mouse listener to acquire inputs representing a change to a presentation from a human interface device.
The transceiver subsystem transmits the at least one input to a synchronization engine for presentation to a plurality of nodes. In one embodiment, the transceiver subsystem receives the at least one input from the interception subsystem. In some embodiments, the transceiver subsystem receives from the synchronization engine a plurality of data packets representing a second change to the dynamic data set. In one of these embodiments, the transceiver subsystem transmits the second change to the dynamic data set to the display subsystem for presentation to a user of the node.
The display subsystem, which is in communication with the transceiver subsystem, receives the plurality of data packets and displaying the plurality of data packets to a user. In some embodiments, the display subsystem displays to the user of the node a cursor represented by an icon selected from a plurality of icons, responsive to the plurality of data packets. In one of these embodiments, the display subsystem displays a cursor represented by an icon of a drawing tool, the tool chosen responsive to a type of annotation made by the user. In another of these embodiments, the icon represents a highlighter. In still another of these embodiments, the icon represents a laser pointer. In yet another of these embodiments, the icon represents a pen.
The source node 100 may code the current state of a dynamic data set, such as screen data, as a set of data packets. In some embodiments, this coding process is straightforward. For example, in the case where the dynamic data set is screen data, data packets may be coded by storing pixel values for a predetermined portion of the screen in the data packet. In some embodiments, the source node 100 compresses the data stored in the data packets. In still other embodiments, the source node 100 encrypts the data stored in the data packets. In still further embodiments, the source node 100 both encrypts and compresses data stored in the data packets. As the dynamic data set changes, the source node updates the set of data packets comprising the current state of the data set.
The source node 100 transmits the current state of the dynamic data set to the communications service 300 in a bandwidth-adaptive manner. In one embodiment, this is achieved by requiring the source node 100 to possess a transmission token before beginning transmission of the current state of the data set. In this embodiment, the source node 100 and the communications service exchange a limited number of transmission tokens, e.g., five. In other embodiments, the communication service 300 transmits a message to the source node 100 to notify the source node 100 when it can send another data set update.
As shown in
In some embodiments, the communications service 300 depicted in
In another of these embodiments, the synchronization engine selects one of the at least one metadata packets and the at least one data packet. The synchronization engine may select one of the at least one metadata packets and the at least one data packet in response to a request received from a node.
In still another of these embodiments, the transmission subsystem transmits the selected one of the at least one metadata and the at least one data packet. The transmission subsystem may transmit the selected one of the at least one metadata packet and the at least one data packet to a node in a plurality of nodes.
The source node 100 creates metadata information that identifies each of the data packets representing the current state of the dynamic data set. In the embodiment shown in
As shown in
As described above in connection with flow control between the source node 100 and the communications service 300, flow control between the consumer nodes 150, 150′, 150″ and the communications service 300 may be token-based or message-based. For ease of reference, the remaining description will assume that the flow control method is based on messages. However, the same advantages of the invention can be obtained in a system relying on transmission tokens.
In some embodiments, the consumer node 150 generates a plurality of data packets representing a change to a dynamic data set. In one of these embodiments, the consumer node 150 generates the plurality of data packets in the same manner described above for generation of the data packets by the source node 100. In another of these embodiments, the change to the dynamic data set represents an annotation generated by a user of the consumer node 150. In still another of these embodiments, the source node 100 receives the plurality of data packets and transmits the received plurality of data packets to the communications service 300. The source node 100 may receive the plurality of data packets in an encrypted form.
In some of these embodiments, a synchronization engine residing on the communications service 300 generates metadata information representing the difference between the dynamic data set and the plurality of received data packets. In others of these embodiments, the source node 100 creates the metadata information, as described above. In still others of these embodiments, the consumer node 150 generates the metadata information. In yet others of these embodiments, the communications service 300 transmits the metadata information and the plurality of data packets to the plurality of nodes.
Delivery of data set updates from the communications service 300 may be performed using a “push” model, a “pull” model, or an “atomic push” model. In the “push” models, the communication service 300 transmits metadata information and data packets to the consumer node 150, 150′, 150″. The difference between the “push” model and the “atomic push” model is that, in the “atomic push” model, the communications service 300 commits to transmit every data packet identified by transmitted metadata information before beginning transmission of another data set. There is no such commitment in the “push” model, which means that data packets not successfully transmitted from a previous data set update may never be sent to the consumer node 150, 150′, 150″. In the “pull” model, the consumer node 150, 150′, 150″ receives from the communications service 300 the metadata information and then requests specific data packets from the communications service 300.
In certain embodiments, the information in metadata packets is encoded incrementally. In these certain embodiments, the “wire” representations of metadata packets may differ despite the fact that they encode the same information. A short example shows why this is the case. Over time, the source node 100 sends three metadata packets to the communications service 300. The contents of the metadata packets are sets of data packet numbers (1, 2, 3), (2, 3, 4) and (3, 4, 5). On the “wire,” each set is represented as a delta from the previous set. Thus, the source node 100 transmits the following metadata packets to the communications service 300: (1, 2, 3), (−1, +4) and (−2, +5), where ‘−’ and ‘+’ indicate removal or addition of a packet number from/to the previous set. If a consumer node 150 skips the contents of the second metadata packet, it receives metadata information describing sets (1, 2, 3) and (3, 4, 5). On the “wire,” these two sets are represented incrementally as (1, 2, 3) and (−1, +4, −2, +5). While the source node 100 transmitted the contents of the second metadata packet to the communications service 300 as (−2, +5), the communications service 300 transmitted the same information to the consumer node 150 as (−1, +4, −2, +5).
In this embodiment, each pair of communication services 300 agrees between themselves on a direction for data flow. For example, communication service 300 and communication service 300′ may agree between themselves that, for the purposes of their point-to-point link, communication service 300 is the “sender” and communication service 300′ is the “receiver,” meaning that the “sender” will perform the role of the communication service 300 described in connection with
The host node 100 transmits at least one metadata packet identifying a plurality of data packets that represent a current state of a dynamic data set and transmitting at least one of the identified data packets. In one embodiment, the host node 100 transmits a plurality of metadata packets. In this embodiment, each of the plurality of metadata packets represents one state of the dynamic data set. In some embodiments, the host node 100 encrypts the at least one data packet before transmission. In other embodiments, the host node 100 received the plurality of metadata packets and the plurality of data packets from a consumer node 150.
In some embodiments, a user of the consumer node 150 makes an annotation to a presentation, changing the state of the dynamic data set. In one of these embodiments, the identified data packets represent the annotation to the dynamic data set. In another of these embodiments, the plurality of metadata packets indicates the state of the dynamic data. In one embodiment, the consumer node 150 transmits the plurality of metadata packets and the plurality of data packets to the host node 100.
The communications service 300, in communication with the consumer node, selects one of the at least one metadata packets and the at least one data packet for transmission to a consumer node 150 in the plurality of nodes. In one embodiment, the communications service 300 receives the at least one metadata packets and the at least one data packet from the host node 100.
In some embodiments, the communications service 300 transmits the at least one metadata packet and the at least one data packet to a second node in response to a request for the current state of the dynamic data set. In one of these embodiments, the consumer node 150 requests the current state of the dynamic data set from the communications service 300. In another of these embodiments, the second node 100 is a host node 100. In still another of these embodiments, the communication service selects one of the at least one metadata packet and the at least one data packet in response to the request made by the second node.
In some embodiments, the communications service 300 further comprises a memory element. In one of these embodiments, the communications service 300 stores the received at least one metadata packet in the memory element. In another of these embodiments, the communications service stores the received at least one data packet in the memory element. In still another of these embodiments, the communications service stores in the memory element information regarding transmission of packets to a node.
The present invention may be provided as one or more computer-readable programs embodied on or in one or more articles of manufacture. The article of manufacture may be a floppy disk, a hard disk, a compact disc, a digital versatile disc, a flash memory card, a PROM, a RAM, a ROM, or a magnetic tape. In general, the computer-readable programs may be implemented in any programming language. Some examples of languages that can be used include C, C++, C#, or JAVA. The software programs may be stored on or in one or more articles of manufacture as object code.
The following examples of content-sharing systems are intended to illustrate the various ways in which the described systems and methods can be used and not to limit the scope of the described invention.
The described systems and methods can be used to implement a system for sharing screen data that allows several client machines to display the screen data from a single server. This system is useful in a number of broadcast or “multicast” contexts and, in particular, it is useful in a conferencing context to allow multiple individuals to view the same graphical data during the conference.
As shown in
At a second point in time, the host server's screen 510 has changed. The host server 100 identifies the particular tiles that have changed states, and creates a coded packet for each tile that has changed, i.e., data packets 19, 20, 21, and 22. If the host server 100 did not possess a transmission token but now receives one, the host server 100 will transmit the updated twelve data packets to the communications server 200, i.e., data packets 13, 14, 3, 4, 15, 19, 20, 17, 21, 22, and 12. If the host server has already transmitted the data packets representing the state of the screen 500, then the host server 100 need only transmit to the communications server 200 data packets 19, 20, 21, and 22. In this manner, transmission of screen data between the host server 100 and the communications server 200 is performed in a bandwidth-adaptive manner.
In some embodiments, the host server 100 encrypts the data packets transmitted to the communications server 200. In other embodiments, the host server 100 compresses the data packets sent to the communications server 200. In still other embodiments, the host server 100 both encrypts and compresses the data packets.
In many embodiments, the communications server 200 maintains a copy of each tile that comprises the most recent state of the server node screen. In some embodiments, each tile is associated with a timestamp when transmitted to the communication service 200. In other embodiments, each tile is associated with a number that monotonically increases with each new tile transmitted to the communications service 300.
The communications server 200 composes an update for a viewer node 150 as often as the bandwidth of the network connecting the viewer node 150 to the communications server 200 allows. As shown in
In another embodiment, the communication service 200 responds to an update request from the viewer node 150 by transmitting to the viewer node 150 every data packet having a timestamp newer than the timestamp of the viewer's screen. In some of these embodiments, the communication service 200 does not fully receive and store a set of data packets comprising a screen update before sending the update to the viewer node 150. In these embodiments, the communications service 300 sets the timestamp for each packet identified by metadata information as comprising the screen update to the same value. Then, as data packets arrive the communications service 300 streams those packets to the viewer node 150.
In one particular embodiment, metadata information is formatted into packets and metadata packets are associated with monotonically increasing numbers. As described above, each metadata packet describes the set of tiles comprising the current screen display state. In this embodiment, the communications service 300 stores, for each consumer node 150, the number of the latest metadata packet that has been transmitted to that consumer node 150, as well as the set of all data packets that have been delivered to the consumer node. When the communications service 300 determines that it is time to send an update to a consumer node 150, or upon receiving a request from a consumer node 150 for a screen update, the communications service first determines if the latest metadata packet (that is, the metadata packet having the highest number associated with it) has been transmitted to the consumer node 150. If not, the communications service 300 transmits the most recent metadata packet to the consumer node 150. The communications service 300 also transmits the set of data packets identified by the metadata packet, unless a particular data packet has already been transmitted to the consumer node 150.
In another embodiment, the set of tiles (i.e., data packets) that must be transmitted to a consumer node is computed by associating each tile with a timestamp and identifying all visible tiles whose timestamps are newer than the newest tile already received by the consumer node 150.
In another example the described synchronization systems and methods are used to implement a chat system. In this system, a chat participant adds text or other content to an on going session and identifies the added content as a data packet. In one embodiment, the participant also associates a timestamp with the added content. The participant then transmits metadata information identifying the current state of the chat. In one embodiment, the metadata information identifies the current state of the chat session as the recently added packet together with every previous data packet added to the chat.
The participant transmits the metadata information together with a data packet representing the recently added content. In one embodiment, the metadata information and data packet are pushed to a receiving node, as described above. Recipients of the metadata information and data packet merge the received data packet with chat data packets already received in the order the data packets are received. In another embodiment, the recipient merges the chat data packets based on the time the data packet was sent. In still another embodiment, the recipient merges the data packets based on the timestamp associated with the data packet.
A “late joiner” to the chat session will receive metadata information identifying all data packets representing the chat session. The late joiner will either request (i.e., pull) or be sent (i.e., push) all the data packets identified by the metadata information and will display in them in timestamp order.
In another example, the synchronization systems and methods described above may be used to implement a remote presentation system. In this example, a presenter converts a slide presentation into a series of page-by-page images. As the presenter displays a slide, the page image representing that slide is transmitted to all viewers. In many embodiments, each slide is represented by multiple data packets.
In this example, the presenter atomically pushes the currently displayed slide by atomically pushing metadata information identifying each data packet representing the slide and pushing each data packet not yet transmitted to the receiver. The presenter may also push the previous slide and the next slide. In further embodiments, viewers may “pull” other pages in the presentation if extra bandwidth is available. Information that may be inserted into a laser pointer data packet includes, x coordinate, y coordinate, time, document, or page number.
In addition to multicasting slide presentation, this exemplary embodiment may be used to share other page-based documents. This exemplary embodiment may also support a “laser pointer” feature in which the position of a presenters “laser pointer” is also transmitted to all viewers, allowing the presenter to direct viewer's attention to areas of interest in the document.
In still another example, the synchronization methods and systems described above may be used to implement a system allowing multiple users to annotate a document. In this example, the annotation may be made by a host node or a consumer node. If the consumer node makes the annotation, the annotation data packet may be sent to the host node for transmission to the communications service which may then transmit the annotation data packet to each node in the plurality of nodes.
In this example, each annotation is represented by a data packet. Annotation data packets may include information regarding the time the annotation was made and by whom. Other annotation data packet information may include the document on which the annotation is made, the page number of the document on which the annotation is made, the drawing tool used to make the annotation, the x coordinate of the annotation, or the y coordinate of the annotation. A cursor displayed to a user making an annotation may be represented by an icon depicting various drawing tools, including without limitation, a laser pointer, a highlighter, a stamping tool, an eraser, a cropping tool, a line drawing tool, an arrow drawing tool, a polygon drawing tool, and a pen.
In this example, the metadata information identifies all annotation data packets. In this manner, a “late joiner” will receive all annotations made to the document.
While the invention has been shown and described with reference to specific preferred embodiments, it should be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention as defined by the following claims.
Number | Name | Date | Kind |
---|---|---|---|
4479195 | Herr et al. | Oct 1984 | A |
4650929 | Boerger et al. | Mar 1987 | A |
4748618 | Brown et al. | May 1988 | A |
4922486 | Lidinsky et al. | May 1990 | A |
4928247 | Doyle et al. | May 1990 | A |
4937036 | Beard et al. | Jun 1990 | A |
4965819 | Kannes | Oct 1990 | A |
4995071 | Weber et al. | Feb 1991 | A |
5072412 | Henderson, Jr. et al. | Dec 1991 | A |
5072442 | Todd | Dec 1991 | A |
5253056 | Puri et al. | Oct 1993 | A |
5293470 | Birch et al. | Mar 1994 | A |
5315633 | Champa | May 1994 | A |
5357511 | DiNapoli et al. | Oct 1994 | A |
5371544 | Jacquin et al. | Dec 1994 | A |
5382972 | Kannes | Jan 1995 | A |
5392223 | Caci | Feb 1995 | A |
5392284 | Sugiyama et al. | Feb 1995 | A |
5408274 | Chang et al. | Apr 1995 | A |
5416520 | Kuzma | May 1995 | A |
5446491 | Shibata et al. | Aug 1995 | A |
5553083 | Miller | Sep 1996 | A |
5586257 | Perlman | Dec 1996 | A |
5689666 | Berquist et al. | Nov 1997 | A |
5727002 | Miller | Mar 1998 | A |
5758110 | Boss et al. | May 1998 | A |
5764235 | Hunt et al. | Jun 1998 | A |
5826025 | Gramlich | Oct 1998 | A |
5838664 | Polomski | Nov 1998 | A |
5845265 | Woolston | Dec 1998 | A |
5896500 | Ludwig et al. | Apr 1999 | A |
5909559 | So | Jun 1999 | A |
5915091 | Ludwig et al. | Jun 1999 | A |
5938724 | Pommier et al. | Aug 1999 | A |
5956027 | Krishnamurthy | Sep 1999 | A |
5990852 | Szamrej | Nov 1999 | A |
6016535 | Krantz et al. | Jan 2000 | A |
6081829 | Sidana | Jun 2000 | A |
6105055 | Pizano et al. | Aug 2000 | A |
6112085 | Garner et al. | Aug 2000 | A |
6155840 | Sallette | Dec 2000 | A |
6157935 | Tran et al. | Dec 2000 | A |
6167432 | Jiang | Dec 2000 | A |
6202060 | Tran | Mar 2001 | B1 |
6226618 | Downs et al. | May 2001 | B1 |
6233606 | Dujari | May 2001 | B1 |
6246758 | Low | Jun 2001 | B1 |
6249291 | Popp et al. | Jun 2001 | B1 |
6256773 | Bowman-Amuah | Jul 2001 | B1 |
6289382 | Bowman-Amuah | Sep 2001 | B1 |
6295551 | Roberts et al. | Sep 2001 | B1 |
6308199 | Katsurabayashi et al. | Oct 2001 | B1 |
6324647 | Bowman-Amuah | Nov 2001 | B1 |
6329984 | Boss et al. | Dec 2001 | B1 |
6332163 | Bowman-Amuah | Dec 2001 | B1 |
6339832 | Bowman-Amuah | Jan 2002 | B1 |
6343313 | Salesky et al. | Jan 2002 | B1 |
6370573 | Bowman-Amuah | Apr 2002 | B1 |
6397036 | Thean et al. | May 2002 | B1 |
6400996 | Hoffberg et al. | Jun 2002 | B1 |
6405364 | Bowman-Amuah | Jun 2002 | B1 |
6430567 | Burridge | Aug 2002 | B2 |
6434568 | Bowman-Amuah | Aug 2002 | B1 |
6434628 | Bowman-Amuah | Aug 2002 | B1 |
6438594 | Bowman-Amuah | Aug 2002 | B1 |
6442748 | Bowman-Amuah | Aug 2002 | B1 |
6473794 | Guheen et al. | Oct 2002 | B1 |
6477580 | Bowman-Amuah | Nov 2002 | B1 |
6477665 | Bowman-Amuah | Nov 2002 | B1 |
6496850 | Bowman-Amuah | Dec 2002 | B1 |
6502213 | Bowman-Amuah | Dec 2002 | B1 |
6514085 | Slattery et al. | Feb 2003 | B2 |
6519571 | Guheen et al. | Feb 2003 | B1 |
6529909 | Bowman-Amuah | Mar 2003 | B1 |
6529948 | Bowman-Amuah | Mar 2003 | B1 |
6536037 | Guheen et al. | Mar 2003 | B1 |
6539396 | Bowman-Amuah | Mar 2003 | B1 |
6549949 | Bowman-Amuah | Apr 2003 | B1 |
6550057 | Bowman-Amuah | Apr 2003 | B1 |
6567813 | Zhu et al. | May 2003 | B1 |
6570590 | Dubrow et al. | May 2003 | B1 |
6571282 | Bowman-Amuah | May 2003 | B1 |
6573907 | Madrane et al. | Jun 2003 | B1 |
6578068 | Bowman-Amuah | Jun 2003 | B1 |
6584493 | Butler | Jun 2003 | B1 |
6584569 | Reshef et al. | Jun 2003 | B2 |
6601087 | Zhu et al. | Jul 2003 | B1 |
6601192 | Bowman-Amuah | Jul 2003 | B1 |
6601234 | Bowman-Amuah | Jul 2003 | B1 |
6606660 | Bowman-Amuah | Aug 2003 | B1 |
6606744 | Mikurak | Aug 2003 | B1 |
6615166 | Guheen et al. | Sep 2003 | B1 |
6615199 | Bowman-Amuah | Sep 2003 | B1 |
6615253 | Bowman-Amuah | Sep 2003 | B1 |
6629081 | Cornelius et al. | Sep 2003 | B1 |
6636242 | Bowman-Amuah | Oct 2003 | B2 |
6640145 | Hoffberg et al. | Oct 2003 | B2 |
6640238 | Bowman-Amuah | Oct 2003 | B1 |
6640244 | Bowman-Amuah | Oct 2003 | B1 |
6640249 | Bowman-Amuah | Oct 2003 | B1 |
6654032 | Zhu et al. | Nov 2003 | B1 |
6662357 | Bowman-Amuah | Dec 2003 | B1 |
6669485 | Thean et al. | Dec 2003 | B2 |
6671818 | Mikurak | Dec 2003 | B1 |
6697824 | Bowman-Amuah | Feb 2004 | B1 |
6701345 | Carley et al. | Mar 2004 | B1 |
6715145 | Bowman-Amuah | Mar 2004 | B1 |
6721713 | Guheen et al. | Apr 2004 | B1 |
6742015 | Bowman-Amuah | May 2004 | B1 |
6792615 | Rowe et al. | Sep 2004 | B1 |
RE38609 | Chen et al. | Oct 2004 | E |
6842906 | Bowman-Amuah | Jan 2005 | B1 |
6850252 | Hoffberg | Feb 2005 | B1 |
6856651 | Singh | Feb 2005 | B2 |
6877043 | Mallory et al. | Apr 2005 | B2 |
6882634 | Bagchi et al. | Apr 2005 | B2 |
6888844 | Mallory et al. | May 2005 | B2 |
6891881 | Trachewsky et al. | May 2005 | B2 |
6898204 | Trachewsky et al. | May 2005 | B2 |
6904449 | Quinones | Jun 2005 | B1 |
6918113 | Patel et al. | Jul 2005 | B2 |
6954800 | Mallory | Oct 2005 | B2 |
6957186 | Guheen et al. | Oct 2005 | B1 |
6975655 | Fischer et al. | Dec 2005 | B2 |
6988236 | Ptasinski et al. | Jan 2006 | B2 |
6993101 | Trachewsky et al. | Jan 2006 | B2 |
7000031 | Fischer et al. | Feb 2006 | B2 |
7006881 | Hoffberg et al. | Feb 2006 | B1 |
7013327 | Hickman et al. | Mar 2006 | B1 |
7023979 | Wu et al. | Apr 2006 | B1 |
7028266 | Ben-Shachar et al. | Apr 2006 | B2 |
7035285 | Holloway et al. | Apr 2006 | B2 |
7043716 | Zimmer et al. | May 2006 | B2 |
7069234 | Cornelius et al. | Jun 2006 | B1 |
7070098 | Lapstun et al. | Jul 2006 | B1 |
7076736 | Hugh | Jul 2006 | B2 |
7113934 | Levesque et al. | Sep 2006 | B2 |
7124101 | Mikurak | Oct 2006 | B1 |
7128270 | Silverbrook et al. | Oct 2006 | B2 |
7130807 | Mikurak | Oct 2006 | B1 |
7139999 | Bowman-Amuah | Nov 2006 | B2 |
7143177 | Johnson et al. | Nov 2006 | B1 |
7146053 | Rijavec et al. | Dec 2006 | B1 |
7149698 | Guheen et al. | Dec 2006 | B2 |
7154638 | Lapstun et al. | Dec 2006 | B1 |
7165041 | Guheen et al. | Jan 2007 | B1 |
7167844 | Leong et al. | Jan 2007 | B1 |
7185075 | Mishra et al. | Feb 2007 | B1 |
7197535 | Salesky et al. | Mar 2007 | B2 |
7200804 | Khavari et al. | Apr 2007 | B1 |
7222780 | Lapstun et al. | May 2007 | B2 |
7224847 | Zhang et al. | May 2007 | B2 |
7225244 | Reynolds et al. | May 2007 | B2 |
7233592 | Oi et al. | Jun 2007 | B1 |
7305436 | Willis | Dec 2007 | B2 |
7310675 | Salesky et al. | Dec 2007 | B2 |
7369515 | Salesky et al. | May 2008 | B2 |
7418476 | Salesky et al. | Aug 2008 | B2 |
7426191 | Salesky et al. | Sep 2008 | B2 |
7451181 | Sasaki et al. | Nov 2008 | B2 |
7484208 | Nelson | Jan 2009 | B1 |
7593987 | Salesky et al. | Sep 2009 | B2 |
7613834 | Pallipuram et al. | Nov 2009 | B1 |
7627663 | Salesky et al. | Dec 2009 | B2 |
7715331 | Salesky et al. | May 2010 | B2 |
7716344 | Salesky et al. | May 2010 | B2 |
7813304 | Salesky et al. | Oct 2010 | B2 |
7822859 | Salesky et al. | Oct 2010 | B2 |
7836163 | Salesky et al. | Nov 2010 | B2 |
7877489 | Salesky et al. | Jan 2011 | B2 |
7934002 | Salesky et al. | Apr 2011 | B2 |
20010054180 | Atkinson | Dec 2001 | A1 |
20020038346 | Morrison et al. | Mar 2002 | A1 |
20020049608 | Hartsell et al. | Apr 2002 | A1 |
20020049818 | Gilhuly et al. | Apr 2002 | A1 |
20020049841 | Johnson et al. | Apr 2002 | A1 |
20020059274 | Hartsell et al. | May 2002 | A1 |
20020065864 | Hartsell et al. | May 2002 | A1 |
20020073059 | Foster et al. | Jun 2002 | A1 |
20020083183 | Pujare et al. | Jun 2002 | A1 |
20020099774 | Yamato et al. | Jul 2002 | A1 |
20020129106 | Gutfreund | Sep 2002 | A1 |
20020154244 | Nakagawa et al. | Oct 2002 | A1 |
20020174180 | Brown et al. | Nov 2002 | A1 |
20020174227 | Hartsell et al. | Nov 2002 | A1 |
20030009538 | Shah et al. | Jan 2003 | A1 |
20030050987 | Lazaridis et al. | Mar 2003 | A1 |
20030055896 | Hu et al. | Mar 2003 | A1 |
20030085922 | Wei | May 2003 | A1 |
20030140121 | Adams | Jul 2003 | A1 |
20030140159 | Campbell | Jul 2003 | A1 |
20030160813 | Raju | Aug 2003 | A1 |
20030167301 | Zhu et al. | Sep 2003 | A1 |
20030167302 | Zhu et al. | Sep 2003 | A1 |
20030167303 | Zhu et al. | Sep 2003 | A1 |
20030167304 | Zhu et al. | Sep 2003 | A1 |
20030167305 | Zhu et al. | Sep 2003 | A1 |
20030167339 | Zhu et al. | Sep 2003 | A1 |
20030167418 | Zhu et al. | Sep 2003 | A1 |
20030182375 | Zhu et al. | Sep 2003 | A1 |
20030189601 | Ben-Shachar et al. | Oct 2003 | A1 |
20030191812 | Agarwalla et al. | Oct 2003 | A1 |
20030208529 | Pendyala et al. | Nov 2003 | A1 |
20030217171 | Von Stuermer et al. | Nov 2003 | A1 |
20040002048 | Thurmaier et al. | Jan 2004 | A1 |
20040024890 | Baek et al. | Feb 2004 | A1 |
20040031058 | Reisman | Feb 2004 | A1 |
20040049549 | Slattery et al. | Mar 2004 | A1 |
20040098398 | Ahn et al. | May 2004 | A1 |
20040103147 | Flesher et al. | May 2004 | A1 |
20040107249 | Moser et al. | Jun 2004 | A1 |
20040107256 | Odenwald et al. | Jun 2004 | A1 |
20040111639 | Schwartz et al. | Jun 2004 | A1 |
20040174392 | Bjoernsen et al. | Sep 2004 | A1 |
20040190092 | Silverbrook et al. | Sep 2004 | A1 |
20040191748 | Thean et al. | Sep 2004 | A1 |
20040236830 | Nelson et al. | Nov 2004 | A1 |
20050003841 | Salo et al. | Jan 2005 | A1 |
20050044089 | Wu et al. | Feb 2005 | A1 |
20050044108 | Shah et al. | Feb 2005 | A1 |
20050050053 | Thompson | Mar 2005 | A1 |
20050060656 | Martinez et al. | Mar 2005 | A1 |
20050063083 | Dart et al. | Mar 2005 | A1 |
20050080850 | Salesky et al. | Apr 2005 | A1 |
20050086384 | Ernst | Apr 2005 | A1 |
20050132299 | Jones et al. | Jun 2005 | A1 |
20050144186 | Hesselink et al. | Jun 2005 | A1 |
20050149481 | Hesselink et al. | Jul 2005 | A1 |
20050246389 | Shah et al. | Nov 2005 | A1 |
20050286466 | Tagg et al. | Dec 2005 | A1 |
20060064716 | Sull et al. | Mar 2006 | A1 |
20060161671 | Ryman et al. | Jul 2006 | A1 |
20060206533 | MacLaurin et al. | Sep 2006 | A1 |
20060253540 | Hughes | Nov 2006 | A1 |
20080133660 | Salesky et al. | Jun 2008 | A1 |
20080133661 | Salesky et al. | Jun 2008 | A1 |
20080133769 | Salesky et al. | Jun 2008 | A1 |
20080183807 | Salesky et al. | Jul 2008 | A1 |
20080183808 | Salesky et al. | Jul 2008 | A1 |
20090125904 | Nelson | May 2009 | A1 |
20100306674 | Salesky et al. | Dec 2010 | A1 |
Number | Date | Country |
---|---|---|
1204277 | May 2002 | EP |
1286271 | Feb 2003 | EP |
1460851 | Sep 2004 | EP |
2300551 | Nov 1996 | GB |
WO-03013679 | Feb 2003 | WO |
WO-2004072804 | Aug 2004 | WO |
Entry |
---|
US 5,715,404, 02/1998, Katseff et al. (withdrawn) |
International Searching Authority, “International Search Report,” PCT Application No. PCT/US05/12078, mailed on Jan. 25, 2006, 3 pgs. |
International Searching Authority, “Written Opinion,” PCT Application No. PCT/US05/12078, mailed on Jan. 25, 2006, 7 pgs. |
Written Opinion for PCT Application No. PCT/US2006/019540, mailed on Dec. 20, 2006, 6 pgs. |
Cabri et al., “Supporting cooperative WWW browsing: a proxy based approach,” Proceedings Euromicro Workshop on Parallel and Distributed Processing, Feb. 3, 1999, 8 pages. |
Gharavi, H and Partrovi, M.H., “Video Coding and Distribution Over ATM for Multipoint Teleconferencing,” IEEE, 1993, pp. 1-7. |
Gorokhovsky, V. et al. “Layered Windows—A New Way to Use Translucency and Transparency Effects in Windows Applications” [online], Retrieved from the Internet: <URL: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/layerwin.asp>, retrieved on Oct. 24, 2006, 4 pgs. |
Horn, et al., “A Standards-Based Multimedia Conferencing Bridge,” AT&T Techn. Jour., 1993, pp. 41-49. |
Krause, R., “Indeo, H.320 Silicon Pursued,” Electronic News, vol. 40, No. 2023, 1991, pp. 1-2. |
“Video Codec Chip Set Provides MPEG, P*64, and JPEG Compliance,” Electrical Design News, vol. 37, No. 9, 1992, pp. 103-104. |
Partial International Search for PCT Application No. PCT/US2006/019368, mailed on Nov. 13, 2006, 3 pgs. |
International Search Report for PCT Application No. PCT/US2006/019370, mailed on Sep. 26, 2006, 4 pgs. |
Written Opinion of the International Searching Authority for PCT Application No. PCT/US2006/019370, mailed on Sep. 26, 2006, 7 pgs. |
International Search Report for PCT Application No. PCT/US2006/019540, mailed on Dec. 20, 2006, 2 pgs. |
International Search Report for PCT Application No. PCT/US2005/011905, mailed Jul. 25, 2005, 3 pages. |
Written Opinion for PCT Application No. PCT/US2005/011905, mailed Jul. 25, 2005, 6 pages. |
International Search Report for PCT Application No. PCT/US2006/019368, mailed Nov. 14, 2007, 5 pages. |
Written Opinion for PCT Application No. PCT/US2006/019368, mailed Nov. 14, 2007, 7 pages. |
Examination Report issued in European Patent Application No. 06760217.7, mailed Oct. 22, 2008, 3 pages. |
Examination Report issued in Australian Patent Application No. 2005239573, mailed Sep. 5, 2008, 2 pages. |
Examination Report issued in Australian Patent Application No. 2005239573, mailed Nov. 20, 2008, 2 pages. |
Examination Report issued in Australian Patent Application No. 2005239573, mailed Jun. 25, 2009, 16 pages. |
Supplemental European Search Report issued in European Patent Application No. 05736265.9, mailed Jun. 18, 2009, 6 pages. |
Examination Report issued in European Patent Application No. 05736265.9, mailed Oct. 26, 2009, 7 pages. |
Examination Report issued in Australian Patent Application No. 2006251764, mailed Feb. 4, 2010, 8 pages. |
Examination Report issued in European Patent Application No. 06760217.7, mailed Sep. 23, 2010, 7 pages. |
U.S. Appl. No. 09/523,315, filed Mar. 10, 2000, Salesky. |
U.S. Appl. No. 60/014,242, filed Mar. 26, 1996, Salesky. |
“CU-SeeMe Software Product,” Brought to you by the Cu-SeeMe Development Team of the Advanced Technologies and Planning group of the Network Resources Division of Cornell Information Technologies, pp. 1-8 (1995). |
“ORCA Video Conferencing System”, Manual Written by the National Oceanic and Atmospheric Administration's Office of Ocean Resources Conservation and Assessment for Operation of the CU-SeeMe System, 26 pages (1995). |
Abdel-Waha et al., “XTV: A Framework for Sharing X Window Clients in Remote Synchronous Collaboration,” IEEE Conference, pp. 1-15 (1991). |
Chen et al., “Real Time Video and Audio in the World Wide Web”, 1995. |
Bolot et al., “Scalable Feedback Control for Multicast Video Distribution in the Internet,” SIGCOMM 94, London England, pp. 58-67 (1994). |
Cox, “Global Schoolhouse Project,” http://www.virtualschool.edu/mon/academia (2010). |
Crowley et al., “MMConf: An Infrastructure for Building Shared Multimedia Applications,” Proceedings of the 1990 ACM Conference on Computer—Supported Cooperative Work, pp. 329-342 (1990). |
Delgrossi et al., “Media Scaling for Audiovisual Communication with the Heidelberg Transport System,” Conference Proceedings of the first ACM International Conference on Multimedia, pp. 99-104 (1993). |
Dorcey, “CU-SeeMe Desktop Videoconferencing Software,” Connexions the Interoperability Report, 9: 42-45 (1995). |
Ensor et al., “Control Issues in Multimedia Conferencing,” IEEE Conference, pp. 133-143 (1991). |
Ensor et al., “The Rapport Multimedia Conferencing System—A Software Overview,” Proceedings of the 2nd IEEE Conference, pp. 52-58 (1988). |
Maly et al., “Mosaic + XTV = CoReview,” Computer Networks and ISDN Systems, pp. 1-19 1995. |
McCanne et al., “Receiver-Driven Layered Multicast,” ACM SIGCOMM, pp. 1-14 (1996). |
Sattler, “Internet TV with CU-SeeMe”, Book, 323 pages (1995). |
Savetz et al., “MBONE: Multicasting Tomorrow's Internet,” IDG Books Worldwide, Inc., (1996). |
Number | Date | Country | |
---|---|---|---|
20070011356 A1 | Jan 2007 | US |