Emblaze Ltd. v. Apple Inc.

Filing 76

Declaration of Lisa A. Ferrari in Support of 75 Motion for Leave to Amend Complaint, filed by Emblaze Ltd.. (Attachments: # 1 Exhibit A, # 2 Exhibit B, # 3 Exhibit C)(Related document(s) 75 ) (Ferrari, Lisa) (Filed on 12/15/2011) Modified on 12/16/2011 (jlm, COURT STAFF).

Download PDF
EXHIBIT B 1 2 3 4 MARTIN L. FINEMAN (CA State Bar No. 104413) DAVIS WRIGHT TREMAINE LLP 505 Montgomery Street, Suite 800 San Francisco, CA 94111 Telephone: (415) 276-6575 Facsimile: (415) 276-6599 Email: martinfineman@dwt.com 5 6 7 8 9 10 MARTIN B. PAVANE (admitted pro hac vice) LISA A. FERRARI (admitted pro hac vice) COZEN O'CONNOR 277 Park Avenue New York, New York 10172 Telephone: (212) 883-4900 (212) 986-0604 Facsimile: Email: mpavane@cozen.com lferrari@cozen.com 11 UNITED STATES DISTRICT COURT FOR THE NORTHERN DISTRICT OF CALIFORNIA OAKLAND DIVISION 12 13 14 15 16 17 18 EMBLAZE LTD. Plaintiff, vs. ) ) ) APPLE INC., A CALIFORNIA CORPORATION, ) Defendant. ) Case No: 4:11-cv-01079-SBA [PROPOSED] FIRST AMENDED COMPLAINT FOR PATENT INFRINGEMENT (Trial by Jury Demanded) 19 20 [PROPOSED] FIRST AMENDED COMPLAINT FOR PATENT INFRINGEMENT 21 22 23 24 25 26 27 28 Plaintiff, Emblaze, Ltd. ("Emblaze"), formerly known as Geo Interactive Media Group, Ltd., for its Complaint against Defendant, Apple Inc. ("Apple"), alleges as follows: I. PARTIES 1. Emblaze is an Israeli corporation doing business world wide in development and marketing of innovative high-tech technologies and products. Emblaze's main offices are situated at Emblaze House, 22 Zarhin Street, Ra'anana, Israel 43662. 2. Emblaze is a publicly held company with shares registered and traded on the main London stock exchange continuously since 1996. 1 1 3. Upon information and belief, Apple is a California corporation, doing business 2 worldwide, with its principal offices situated in this district, at One Infinite Loop, Cupertino, 3 California 95014. 4 II. JURISDICTION AND VENUE 5 6 4. action arises under the patent laws of the United States (35 U.S.C. § 1, et seq.). 7 8 Subject matter jurisdiction is based on 28 U.S.C. §§ 1331 and 1338(a), in that this 5. Venue lies in this Court pursuant to 28 U.S.C. §§ 1391(b)-(c) and 1400(b). III. COUNT I — PATENT INFRINGEMENT 9 6. Emblaze is the owner of several United States Patents, including U.S. Patent No. 10 6,389,473 ("the '473 Patent"). A true and correct copy of the '473 Patent is attached hereto as Exhibit 11 A. 12 7. 13 over the Internet. 14 8. 15 16 The '473 patent claims methods for real-time broadcasting over a network, such as Emblaze developed the technology described and claimed in the '473 patent and has used this technology in its products. 9. Emblaze first unveiled the technology described and claimed in the '473 patent in a 17 live video streaming broadcast from the White House during Easter, 1998. Emblaze's live streaming 18 technology allows transmission of live audio and video to multiple devices, saves on data traffic, 19 does not require devoted streaming servers, and allows reliable streaming even through firewalls. 20 10. Upon information and belief, Apple has used and continues to use, sold and/or 21 offered to sell in New York and elsewhere and/or imported into New York and elsewhere products 22 incorporating "HTTP Live Streaming Standard technology" that have been and can be used for real- 23 time broadcasting and that infringe at least claims 1, 2, 8, 9, 10, 11, 12, 13, 14, 21, 23, 24, 25, 26, 27, 24 28, 29, 36, 37, 38, 40, and 41 of the '473 patent in violation of 35 U.S.C. § 271. 25 11. Apple announced the introduction of its HTTP Live Streaming Standard technology 26 into its products on or about mid-2009, and such technology is embedded into Apple's best selling 27 products in this district and world wide (e.g., all Apple devices including Apple Stream Segmenter 28 software or Apple File Segmenter software (components of HTTP Live Streaming included with 2 MAC OS X version 10.6 and later, and available for download on the internet), including Macbook Air, Macbook, Macbook Pro, Mac mini, iMac and Mac Pro; all Apple devices including Apple's Safari browser version 5 and later for Mac OS, and available for download on the internet, included in Macbook Air, Macbook, Macbook Pro, Mac mini, iMac and Mac Pro; all Apple devices including Apple's Quicktime X and later, and available for download on the internet, included in Macbook Air, Macbook, Macbook Pro, Mac mini, iMac and Mac Pro; all Apple devices including Apple iOS 3.0 and later, included in iPod touch 3 rd and 4th generations (1 st and 2hd generations of iPod touch software upgradable to support HTTP Live Streaming), iPhone 3GS, 4 and 4S (iPhone and iPhone 3G software upgradable to support HTTP Live Streaming), iPad 1 and 2, and Apple TV 4.0, 4.3 and 4.4); all devices including iTunes 10.1 and later. 12. Upon information and belief, the acts of infringement by Apple are willful, intentional and in conscious disregard of Emblaze's rights under the '473 patent. 13. Shortly after Apple announced Apple's adoption of the HTTP Live Streaming Standard technology into its products, Emblaze informed Apple that Apple's HTTP Live Streaming Standard technology infringes the '473 patent and offered Apple a license to practice under the '473 patent. 14. To date, Apple has declined to take a license under the '473 patent. 15. As a result of Apple's infringement of the claims of the '473 patent, Apple has made and will continue to make unlawful gains and profits, and Emblaze has been and will continue to be deprived of revenue that it would otherwise have generated but for such infringement. 16. Emblaze has been and will continue to be irreparably harmed by Apple's infringement of the '473 patent. 17. IV. The extent of Emblaze's damages cannot be determined except by an accounting. JURY DEMAND Pursuant to Fed. R. Civ. P. 38(b), Emblaze requests a trial by jury. V. PRAYER FOR RELIEF Wherefore, Emblaze prays for relief as follows: 3 1 2 3 A. A judgment that Apple has infringed the '473 Patent in violation of 35 U.S.C. B. An order enjoining and restraining Apple, its officers, directors, agents, §§ 271(a)-(c); 4 servants, employees, affiliates, attorneys and all others in active concert or participation with Apple, 5 from infringing the '473 Patent, pursuant to 35 U.S.C. § 283; 6 7 8 C. A judgment awarding Emblaze its damages, but not less than a reasonable royalty, resulting from Apple's infringement, pursuant to 35 U.S.C. § 284; D. An accounting of Apple's revenue from the sale, licensing or other distribution 9 of Apple's infringing products; 10 E. A judgment that Apple's acts of infringement have been in willful, knowing, 11 and deliberate disregard of Emblaze's patent rights, and awarding Emblaze enhanced damages 12 pursuant to 35 U.S.C. § 284; 13 14 15 16 F. A judgment awarding Emblaze its costs, disbursements, and attorneys' fees incurred in prosecuting this action pursuant to 35 U.S.C. §§ 284 and/or 285; G. A judgment awarding Emblaze pre- and post-judgment interest on any monetary award; and 17 18 19 20 H. Such other relief as the Court may deem just, equitable, and proper. DATED: December , 2011 DAVIS WRIGHT TREMAINE LLP By: /s Martin L. Fineman Martin L. Fineman 21 22 23 24 25 MARTIN L. FINEMAN (CA State Bar No. 104413) 505 Montgomery Street, Suite 800 San Francisco, CA 94111 Telephone: (415) 276-6575 Facsimile: (415) 276-6599 Email: mfineman@dwt.com 26 27 28 4 1 COZEN O'CONNOR Martin B. Pavane (admitted pro hac vice) Lisa A. Ferrari (admitted pro hac vice) 277 Park Avenue New York, New York 10172 Telephone: (212) 883-4900 (212) 986-0604 Facsimile: mpavane@cozen.com Email: 2 3 4 5 lferrari@cozen.com 6 Attorneys for Plaintiff Emblaze Ltd. 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 NYC_MIDTOWN \ 1915837 \1 111111111111111111 1 1 1 1 1 1,1111!111,11111B111 1 111111111111 111111111 1 (12) United States Patent (10) Patent No.: US 6,389,473 B1 May 14, 2002 (45) Date of Patent: Cannel et aL (54) NETWORK MEDIA STREAMING (75) Inventors: Sharon Carmel; Tzur Daboosh, both of Giv'atayim; Eli Reifman, Rishon le Zion; Naftali Shani; Ziv Eliraz, both of Tel Aviv; Dror Ginsberg, Karkur; Edan Ayal, Kfar Saba, all of (IL) (73) Assignee: Geo Interactive Media Group Ltd., Givatayim (IL) (* ) Subject to any disclaimer, the term of this patent is extended or adjusted under 35 U.S.C. 154(6) by 0 days. Notice: (21) Appl. No.: 09/275,703 Mar. 24, 1999 (22) Filed: (30) Foreign Application Priority Data 123819 Mar. 24, 1998 (IL) GO6F 13/00 (51) Int. Cl.7 709/231 (52) U.S. Cl. 707/500.1; 709/200, (58) Field of Search 709/231, 236, 246, 247; 382/236, 239; 375/240.12 (56) 5,404,446 A 5,841,432 A (57) ABSTRACT A method for real-time broadcasting from a transmitting computer to one or more client computers over a network, including providing at the transmitting computer a data stream having a given data rate, and dividing the stream into a sequence of slices, each slice having a predetermined data size associated therewith. The slices are encoded in a corresponding sequence of files, each file having a respective index, and the sequence is uploaded to a server at an upload rate generally equal to the data rate of the stream, such that the one or more client computers can download the sequence over the network from the server at a download rate generally equal to the data rate. 41 Claims, 11 Drawing Sheets Microfiche Appendix Included (2 Microfiche, 138 Pages) U.S. PATENT DOCUMENTS 11/1993 Normille et al. 345/537 707/500.1 Primary Examiner—Robert B. Harrell (74) Attorney, Agent, or Firm—Ladas & Parry References Cited 5,267,334 A 4/1995 Bowater et al. 11/1998 Carmel et al. 382/236 STANDARD NETWORK SERVER ( 26 30 REALTIME ENCODE Wale d 'S'a 24-1 BROADCAST SERVER IIJO •W IN 28 FIG. 1 30 20 VA' 30 III £L17`68£ `9 sa PRIOR ART U.S. Patent May 14, 2002 Sheet 2 of 11 US 6,389,473 B1 U.S. Patent May 14, 2002 Sheet 3 of 11 US 6,389,473 B1 1 IV. 1- 1 1 -1- 1 2-1— 1 3-1--- 141 SUCE 1 SUCE 2 SUCE 3 OH SUCE 4 / i 1 • 42 , 1 44 46 \ 48 TIME 40 FIG. 3B 52 54 50 FIG. 30 56 J J+1 55 J+2 J+3 •• • N 58 'a rualud'S FIG. 3D 41 57 59 / A2 AUDIO LEVEL #1 (1) . 45 43 PTS I 1 1 PTS A2 Al PTS SIZE PTSI A2 SIZE PTS TO PTS AUDIO LEVEL #2 (1) / 47 AUDIO LEVEL #1 (2) / 45 AUDIO LEVEL #2 (2) i 47 VIDEO LEVEL #1 (1) VIDEO LEVEL #2 (1) 49 ID (1 ) • •• 51 wits HEADER PTS j 57 Al r PTS AUDIO LEVEL #1 (3) 45 Al PTS AUDIO LEVEL #2 (3) 47 Al PTS AUDIO LEVEL #1 (4) 45 A2 1 PTS AUDIO LEVEL #2 (4) 47 Al SIZE PTS VIDEO LEVEL #2 (2) 51 It Jo r 61 59 U SIZE PTS U SIZE PTS Al PTS Al I PTS I TEXT (1) URL (1) AUDIO LEVEL #1 (5) AUDIO LEVEL #2 (5) 53 55 45 47 • •• Ta £L17`68£`9 Al 57 61 59 FIG. 4 Ta£L17`68£`9Sfl TI JO s p aTIS NETwORK SERVER 28 lu alu d 'S n U.S. Patent May 14, 2002 US 6,389,473 Bi Sheet 6 of 11 FIG. 5 CONNECT TO SERVER INPUT BROACAST DATA f ENCODE SLICE 82 4 FTP TO SERVER h84 UPDATE INDEX FILE 1 CHECK LINK FUNCTION 88 U.S. Patent May 14, 2002 Sheet 7 of 11 US 6,389,473 B1 FIG. 6A CONNECT TO SERVER FITTP FROM SERVER READ INDEX FILE CONNECT NEW LINK CONTINUE SELECT SLICE DECODE OUTPUT DATA YES LINK FUNCTION OK? NO U.S. Patent May 14, 2002 Sheet 8 of 11 US 6,389,473 B1 FIG. 6B CONNECT TO SERVER HTTP FROM SERVER READ HEADER CONTINUE CHOOSE LEVEL READ SLICE DECODE OUTPUT DATA DETERMINE LINK RATE RATE TOO LOW YES CHOOSE LOWER AUDIO/VIDEO LEVEL NO RATE HIGHER THAN NEED CHOOSE HIGHER AUDIO/VIDEO LEVEL •s•••••11111.^. U.S. Patent May 14, 2002 Sheet 9 of 11 US 6,389,473 Bl. FIG. 7 INPUT DATA i i-90 CONTROL FROM 88 SET COMPRESSION RATIO 801 i COMPRESS DATA 1 ( 92 CONTROL FROM 88 SET SLICE DURATION 821 i PREPARE SLICE I i TO FTP 84 + U.S. Patent May 14, 2002 Sheet 10 of 11 US 6,389,473 Bl. FIG. 8 FROM SLICE 82 84 N 1=1, J=1 9q FP OPEN 94 LINK TIME-OUT FROM CHECK 88 FP SEND SLICE I LINK J NEXT LINK 1=1+1 J= +1 YES TO UPDATE INDEX 86 U.S. Patent May 14, 2002 US 6,389,473 B1 Sheet 11 of 11 88 FIG. 9 FROM UPDATE 86 CHECK SLICE TIME TH YES RE—INITIALIZE LINK TO FTP OPEN 94 INCREASE COMPRESSION I _ TO SET COMPRESSION 90 DECREASE SLICE DURATION TO SET DURATION 92 YES NEXT SLICE INCREASE LSLICE DURATION! TO ENCODE 80 US 6,389,473 B1 1 NETWORK MEDIA STREAMING A computer printout is attached hereto as an appendix in microfiche form and is incorporated herein by reference. The printout comprises executable program files in hexadecimal format. This appendix includes 2 microfiches, containing a total of 138 frames. FIELD OF THE INVENTION The present invention relates generally to network data communications, and specifically to real-time multimedia broadcasting over a network. BACKGROUND OF THE INVENTION In network broadcasting, data are transmitted over a network in real time from a single transmitting computer to a plurality of clients simultaneously. The network may be a LAN, a WAN, an intranet or a public network such as the Internet. Network broadcasting is most commonly used to stream multimedia data, typically comprising images and sound. FIG. 1 is a schematic illustration showing a real-time broadcasting system 20, as is known in the art. One or more input devices 22 (for example, a video camera and/or microphone) are used to generate a multimedia data stream representing an entertainment or informational program to be transmitted to a plurality of clients 30 via a network 28. Because of bandwidth limitations of the network, the data stream from host 22 must first be compressed by a real-time encoder 24 and then routed to appropriate clients 30 by a broadcast server 26 (since not all clients on the network are necessarily intended to receive the broadcast). Encoder 24 and server 26 typically comprise high-cost, dedicated computer systems, such as a Sun Station (produced by Sun Microsystems) or a Windows NT server, running suitable RealSystem 5.0 software (produced by RealNetworks Inc., Seattle, Wash.). These dedicated systems are required in order to ensure that the data stream is distributed and received by clients 30 in real time. Similarly, host 22 must typically be connected directly to encoder 24 by a high-speed data link or LAN, and not via the Internet or other narrowband network. Therefore, real-time broadcasting is normally possible only for hosts having a suitable, dedicated encoder and broadcast server and cannot be offered by Internet service providers (ISPs) to their general clientele. SUMMARY OF THE INVENTION It is an object of some aspects of the present invention to provide substantially continuous, high-bandwidth data streaming over a network using common, existing server and network infrastructure. It is a further object of some aspects of the present invention to provide data broadcasting capability, particularly for multimedia data, without the need for a dedicated broadcast computer system. It is a further object of some aspects of the present invention to provide apparatus and methods for data broadcasting at reduced cost by comparison with systems known in the art. It is still another object of some aspects of the present invention to enable a personal computer to remotely broadcast a multimedia program through an Internet service provider (ISP) using common, universally-supported Internet communication protocols. 2 In preferred embodiments of the present invention, a transmitting computer generates a data stream and broadcasts the data stream via a network server to a plurality of clients. The data stream is divided into a sequence of 5 segments or slices of the data, preferably time slices, wherein the data are preferably compressed. Each slice is preferably assigned a respective slice index. The transmitting computer uploads the sequence of slices to the server substantially in real time, preferably using an Internet to protocol, most preferably the File Transfer Protocol (FTP), as is known in the art. The clients download the data stream from the server, preferably using an Internet protocol, as well, most preferably the Hypertext Transfer Protocol (HTTP), or alternatively, using other protocols, such as UDP 15 or RTP, which are similarly known in the art. The clients use the slice indices of the frames to maintain proper synchronization of the playback. The division of the data stream into slices and the inclusion of the slice indices in the data stream to be used by the clients in maintaining synchronization zo allows the broadcast to go on substantially in real time without the use of special-purpose hardware. Preferably, each segment or slice is contained in a separate, respective file. Alternatively, the segments or slices may all be contained in a single indexed file, which is 25 streamed to the client in a series of packets, each covering a range of one or more indices. Hi -IT version 1.1 supports this sort of file streaming. Other protocols may also be used for this purpose. In some preferred embodiments of the present invention, 30 the data stream comprises multimedia data captured or generated by the transmitting computer. The term "multimedia" as used in the context of the present patent application and in the claims refers to images or sound or to data representative of images or of sound or a combination 35 thereof. Multimedia image data may include still images, video, graphics, animation or any combination thereof, including text displayed in conjunction therewith. It will be appreciated, however, that the principles of the present invention may similarly be applied to streaming of other 40 data types. Preferably, the transmitting computer compresses the frames in the data stream, most preferably using methods of image and audio compression such as those described in U.S. patent application Ser. No. 08/919,027, which is 45 assigned to the assignee of the present patent application and incorporated herein by reference. Alternatively, any suitable methods of compression known in the art may be used. The compressed data are conveyed to the server and thence to the clients, which decompress the data. 50 In some preferred embodiments of the present invention, the transmitting computer and the clients monitor the uploading and downloading of data to and from the server, respectively, in order to determine the amount of time 55 required to convey each slice and to verify that the slices are conveyed at a sufficient rate. When the data stream comprises multimedia data, the data rate should be generally equal to or faster than the rate at which the data are generated at the transmitting computer. In some of these preferred embodiments, the transmitting 60 computer and/or the clients each open a plurality of FTP or H YIP links, respectively, with the network server. The slices are transferred over different ones of the links in alternation. Although typically none of the plurality of links has suffi65 cient bandwidth on its own to convey the entire data stream in real time, the combined bandwidths of the plurality of links are generally sufficient for this purpose. Preferably, US 6,389,473 B1 3 4 each of the links is monitored to determine its specific data transfer rate. If the transfer rate of any of the links is below a predetermined minimum, that link is preferably closed, and a new link is opened in its place. In other preferred embodiments, the slices are provided by the server at multiple resolution or quality levels. Each such level has a different degree of data compression, and thus corresponds to a different data bandwidth requirement. The client or the server monitors the data transfer rate of a data link opened therebetween and selects the level that is appropriate to the link bandwidth. If the monitored data transfer rate changes during transmission, the quality level is preferably reselected accordingly. Preferably, the transmitting computer monitors the bandwidth of the data stream that it is uploading to the server, and compares the data stream bandwidth to a known or estimated bandwidth of the link or links between the transmitting computer and the server. The transmitting computer preferably compresses the data stream at a compression ratio that is adjusted so as to match the data stream bandwidth to the available link bandwidth, using methods described, for example, in the above-mentioned U.S. patent application Ser. No. 08/919,027. There is therefore provided, in accordance with a preferred embodiment of the present invention, a method for real-time broadcasting from a transmitting computer to one or more client computers over a network, including: providing at the transmitting computer a data stream having a given data rate; dividing the stream into a sequence of slices, each slice having a predetermined data size associated therewith; encoding the slices in a corresponding sequence of files, each file having a respective index; and uploading the sequence to a server at an upload rate generally equal to the data rate of the stream, such that the one or more client computers can download the sequence over the network from the server at a download rate generally equal to the data rate. Preferably, dividing the stream into the sequence of slices includes dividing the stream into a sequence of time slices, each having a predetermined duration associated therewith. Preferably, uploading the sequence includes comparing the upload rate to the data rate and adjusting the upload rate responsive to the comparison. Further preferably, encoding the stream includes compressing data in the stream at a desired compression ratio, and adjusting the upload rate includes changing the compression ratio. Alternatively or additionally, adjusting the upload rate includes adjusting the size of one or more of the slices. Preferably, uploading the sequence includes opening a plurality of file transfer links between the transmitting computer and the server, each link characterized by a respective link data rate, and uploading different files in the sequence over different ones of the plurality of links. Further preferably, opening the plurality of links includes opening links such that the data rates of the links taken together are sufficient to upload the sequence at the upload rate generally equal to the data rate. Preferably, uploading the sequence includes uploading a sequence using an Internet Protocol, most preferably using FTP. Preferably, the method includes downloading the sequence using an Internet protocol, most preferably H1'1 P, or alternatively, UDP or RTP, over the network from the server to the one or more client computers. Preferably, the one or more client computers decode the sequence and play back the data stream responsive to the indices of the files, at a replay rate generally equal to the data rate. Preferably, uploading the sequence includes uploading and updating an index file containing the index of the file in the sequence that was most recently uploaded, and the one or more client computers read the index file to play back the sequence. In a preferred embodiment, downloading the sequence includes selecting a file in the sequence earlier than the file whose index is contained in the index file and downloading at least a portion of the sequence of files beginning with the selected file. Preferably, the one or more client computers include a plurality of client computers, and downloading the sequence includes downloading to the plurality of client computers substantially simultaneously. Preferably, downloading the sequence includes opening a plurality of download links between one of the client computers and the server, each link characterized by a respective link data rate, and downloading different files in the sequence over different ones of the plurality of links. Most preferably, opening the plurality of links includes opening links such that the data rates of the links taken together are sufficient to download the sequence at the download rate generally equal to the data rate. Preferably, opening the plurality of links includes monitoring the data rates of the links and opening a new link in place of one of the links having a data rate lower than a predetermined level. In one preferred embodiment, opening the new link includes retransmitting at least one of the files in the sequence, wherein the at least one of the files was incompletely transmitted over the one of the links having the data rate lower than the predetermined level. In another preferred embodiment, opening the new link includes dropping at least one file out of the sequence, wherein the at least one of the files was incompletely transmitted over the one or more of the links having the data rate lower than the predetermined level. In still another preferred embodiment, encoding the slices includes encoding slices at a plurality of different quality levels, such that the files corresponding to a given one of the slices have a different, respective data size for each of the quality levels. Preferably, downloading the sequence includes determining a data bandwidth of the network between the server and the client computer and selecting one of the quality levels responsive to the determined bandwidth. Preferably, the data stream includes multimedia data. There is further provided, in accordance with a preferred embodiment of the present invention, apparatus for real-time broadcasting of a data stream having a given data rate over a network, including: a transmitting computer, which divides the stream into a sequence of slices, each slice having a predetermined data size associated therewith, and encodes the slices in a corresponding sequence of files, each file having a respective index, and which uploads the sequence to a server at an upload rate generally equal to the data rate, such that one or more client computers can download the sequence over the network from the server at a download rate generally equal to the data rate. Preferably, the transmitting computer compares the upload rate to the data rate and adjusts the upload rate responsive to the comparison. Most preferably, the transmitting computer compresses the data at a compression ratio which is varied responsive to the comparison. Additionally s 10 15 20 25 30 35 40 45 so 55 60 65 US 6,389,473 B1 6 5 or alternatively, the transmitting computer adjusts the size of one or more of the slices responsive to the comparison. Preferably, the transmitting computer opens a plurality of links between the transmitting computer and the server, each link characterized by a respective data rate, and transmits 5 different ones of the sequence of files over different ones of the plurality of links. Most preferably, the transmitting computer opens the plurality of links such that the data rates of the links taken together are sufficient to upload the sequence at the upload rate generally equal to the data rate. to Further preferably, the transmitting computer monitors the data rates of the links and opens a new link in place of one of the links whose data rate is lower than a predetermined level. In a preferred embodiment, the slices are encoded at a is plurality of different quality levels, such that the files corresponding to a given one of the slices have a different, respective data size for each of the quality levels. Preferably, the transmitting computer uploads the sequence using an Internet upload protocol, most preferably 20 Preferably, the one or more client computers decode the sequence and play back the data stream responsive to the indices thereof, at a data replay rate generally equal to the data rate. Preferably, the one or more client computers 25 download the encode sequence using an Internet download protocol, most preferably HTTP or alternatively, UDP or RTP. Preferably, the one or more client computers include a plurality of client computers, which download the sequence 30 substantially simultaneously. Preferably, the network includes the Internet. Further preferably, the data stream includes multimedia data, and the predetermined data size of each of the slices 35 corresponds to a time duration of the slice. The present invention will be more fully understood from the following detailed description of the preferred embodiments thereof, taken together with the drawings in which: BRIEF DESCRIPTION OF ME DRAWINGS FIG. 1 is a schematic illustration of a computer broadcast network, as is known in the art; FIG. 2 is a schematic illustration of a computer broadcast network, in accordance with a preferred embodiment of the present invention; FIG. 3A is a block diagram that schematically illustrates a data structure of a broadcast sequence, in accordance with a preferred embodiment of the present invention; FIG. 3B is a block diagram that schematically illustrates an index file associated with the data structure of FIG. 3B, in accordance with a preferred embodiment of the present invention; FIG. 3C is a schematic illustration of a user interface graphic, for use in conjunction with the data structure of FIG. 3A, in accordance with a preferred embodiment of the present invention; FIG. 3D is a block diagram that schematically illustrates a data structure of a broadcast sequence, in accordance with another preferred embodiment of the present invention; FIG. 4 is a block diagram that schematically illustrates a network connection between a transmitting computer and a network server, for use in broadcasting of a data sequence, in accordance with a preferred embodiment of the present invention; FIG. 5 is a flow chart that schematically illustrates a method of uploading broadcast data from a transmitting 40 45 50 SS 60 65 computer to a server, in accordance with a preferred embodiment of the present invention; FIG. 6A is a flow chart that schematically illustrates a method of downloading broadcast data from a server to a client, in accordance with a preferred embodiment of the present invention; FIG. 6B is a flow chart that schematically illustrates a method of downloading broadcast data from a server to a client, in accordance with another preferred embodiment of the present invention; FIG. 7 is a flow chart that schematically illustrates a method for preparing data ffies for transmission, in accordance with a preferred embodiment of the present invention; FIG. 8 is a flow chart that schematically illustrates a method of file transfer, in accordance with a preferred embodiment of the present invention; and FIG. 9 is a flow chart that schematically illustrates a method for monitoring network links, in accordance with a preferred embodiment of the present invention. DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS Reference is now made to FIG. 2, which is a schematic illustration of a computer system 32 for remote broadcasting of a multimedia sequence over a network 28, in accordance with a preferred embodiment of the present invention. System 32 comprises a transmitting computer 34, which generates the sequence, a plurality of clients 30, and a network server 36, all of which communicate over network 28, preferably using the well-known Internet Protocol (IP). Computer 34 preferably receives audiovisual input from input devices 22, although data inputs of other types may be generated at or by computer 34 using any suitable means known in the art. Network 28 preferably comprises the Internet, although it may equally comprise a LAN, WAN, intranet or other computer network as is known in the art. Computer 34 and clients 30 preferably comprise conventional personal computers or workstations. Server 36 may comprise any suitable type of computer or computer system, for example, a Sun Microsystems UltraSPARC station or a Windows NT server, as are commonly used by Internet Service Providers (ISPs) . In any case, it is noted that transmitting computer 34 can be remotely located relative to server 36, and that the server need not be equipped with any special-purpose hardware or software for real-time data broadcasting, unlike broadcast systems known in the art, such as the real-time encoder and broadcast server shown in FIG. 1. After preparing the multimedia sequence, computer 34 uploads the sequence over network 28, preferably using the Internet File Transfer Protocol (FTP). Alternatively, other Internet protocols may be used, such as the TCP/IP, UDP or RT(x) protocols, which are known in the art. Preferably, the data in the sequence are compressed, although compression is not essential to implementation of the present invention. The sequence is preferably generated and compressed in real time, and could comprise, for example, an interview program or an entertainment or sports event, although a prerecorded sequence may similarly be broadcast in this manner. Computer 34 is preferably equipped with suitable software for preparing and compressing the multimedia sequence. For example, for audio data, the computer may typically run GSM 6.10 standard audio compression software, operating at a sample rate of 8 kHz, with 16 bits/sample. Some useful techniques for preparing, compressing and transmitting multimedia sequences are described in U.S. Pat. No. 5,841,432 US 6,389,473 B1 7 8 comprises a string followed by the index of the file. When and in the above-mentioned U.S. patent application Ser. No. one of computers 30 connects to server 36 and begins to 08/919,027, both of which are incorporated herein by refdownload the data stream, it first reads the index file in order erence. to identify at what point in stream 40 to begin and to start Clients 30 connect to server 36 and receive the multimedia sequence, substantially in real time. Clients 30 prefer- 5 receiving the data stream substantially in real time, preferably with only a minimal lag, as it is transmitted from ably download the sequence using the Hypertext Transfer computer 34. Alternatively, a user of one of computers 30 Protocol (HTTP), although other Internet protocols may also may choose to begin downloading data stream 40 from an be used, such as UDP or RTP, as noted hereinabove with earlier point in time than that indicated by ID 52. Further reference to uploading by computer 34. Since FTP and alternatively, stream 40 may be multicast to clients 30, as is HI IP are supported by substantially all network servers, 10 known in the art, typically without the use of an index file. server 36 need not include any special-purpose broadcasting Index file 50 may further include a message 54, which is hardware or software, as noted above. Similarly, because read by computers 30 when they connect to server 36 to HTTP is supported by substantially all modern Web download data stream 40 or, alternatively or additionally, at browsers, clients 30 will typically need only add a Java any time the message is updated by computer 34. The 15 applet or plug-in to their existing Web browsers, as message contains parameters relating generally to the data described further hereinbelow, in order to receive and play stream and/or instructions to computers 30, for example, back the broadcast. "transmission paused." FIG. 3C is a schematic representaFIG. 3A is a block diagram that schematically illustrates tion of a user interface graphic "slider" 55, available to users the structure of a stream of broadcast data 40 produced by of computers 30, in accordance with a preferred embodiment 20 computer 34, typically corresponding to a multimedia data of the present invention. Slider 55, which is preferably sequence, in accordance with a preferred embodiment of the displayed on the screens of computers 30, includes a bar 56 present invention. Data stream 40 comprises a series of data and a movable indicator 58. The symbols 3, 3+1, 3+2, . . . N slices 42, 44, 46, 48, etc. Each slice contains a segment of in the figure are the indices of the slices of stream 40 that are video and/or audio data, corresponding to a respective, stored on server 36, wherein N is the index of the most successive time interval labeled T„ T 2, T3, etc. The data are 25 recent slice, and J is the index of the earliest stored slice. J preferably compressed, as described further hereinbelow. may indicate the first slice in the sequence, if all of the files Computer 34 stores each slice as a corresponding file, are stored on server 36, or it may be the earliest file not yet having a running slice index 1, 2, 3 . . . N. Preferably, each erased. (The indices are marked in the figure on bar 56 for file also includes one or more time stamps, indicating a real clarity, and need not actually be shown on the computer time at which the data in the file were recorded or an elapsed 30 screen.) time relative to the beginning of stream 40. The files are When one of computers 30 reads index file 50 and begins uploaded to server 36, such that while any given slice (other to download stream 40, indicator 58 preferably marks the than first slice 42) is being created, one or more preceding most recent slice, as shown in FIG. 3C. This is the point at slices are in the process of being uploaded. 35 which the download will begin, unless the user of the Computer 34 monitors the time codes as file 40 is computer chooses otherwise. If the user wishes to begin the transmitted, and clients 30 similarly monitor the time codes download at an earlier point, he may move indicator 58 to as the file is received, in order to ensure that the transmission the left along bar 56 to that point, preferably using a mouse or reception is "keeping up" with the input of the data to the or other pointing device, as is known in the art. Indicator 58 computer. In the event that a lag is detected, steps are taken 40 may be moved back and forth along bar 56 to jump back and to increase the data transmission or reception rate, as forth along stream 40. described further hereinbelow. For example, as shown in FIG. 3D is a block diagram that schematically illustrates FIG. 3A, time intervals T„ '1' 2, '1'3, etc., are not all equal, but a file format of a multi-level data stream 41, in accordance rather are adjusted by computer 34 in response to the with another preferred embodiment of the present invention. transmission rate. Alternatively or additionally, the compres- 45 The data stream is divided into audio slices 45, 47 and video sion level of the data is varied, as is likewise described slices 49, 51, and may also include other data formats, such below, so as to adjust the data streaming rate to the available as a text slice 53 and/or a URL slice 55. Each slice is bandwidth over one or more channels between computer 34 preferably identified by a level identifier 57, a presentation and server 36, and/or between server 36 and client 30. time stamp (PTS) index 59 and, as appropriate, a size Computer 34 continues to upload files 42, 44, 46, etc., so identifier 61. The function of these identifiers and indices is until data stream 40 is finished or terminated by a user of described further hereinbelow. A header 43 includes data computer 34. All of the files in the data stream may be saved such as the title, author, copyright and formats of the data in on server 36 for any desired period of time, as long as the the stream; the duration of the multimedia sequence represerver has sufficient free memory that is accessible to sented by the stream; and a description of the available computer 34. Typically, however, the memory available on 55 stream levels and associated data sizes. server 36 is limited, and files 42, 44, 46, etc., will be stored Each time slice in stream 41 includes multimedia data at on the server and erased therefrom in a "first-in-first-out" multiple quality levels. There are two such levels in the sequence. example shown in FIG. 3D, identified as level #1 and level FIG. 3B is a block diagram that schematically illustrates #2, but a larger number of levels may also be used. Typically, an index file 50, which is created by computer 34, and is 60 the audio and video data in level #1, contained in slices 45 uploaded to server 36, in accordance with a preferred and 49, are more highly compressed relative to the data in embodiment of the present invention. The index file comslices 47 and 51 of level #2. In consequence, the level #1 prises a slice ID 52, indicating the index of the file in data slices have smaller data volume than the level #2 slices and stream 40 that was most recently uploaded by computer 34. can therefore be transmitted over a lower-bandwidth data Each time a new file 42, 44, 46, etc., is uploaded, ID 52 in 65 link, while maintaining the required slice timing indicated file 50 on server 36 is updated. Preferably, ID 52 holds the by time stamps 59. The lower data-rate transmission generfile name of the new file, wherein the name typically ally comes at the expense of inferior sound and/or image US 6,389,473 B1 9 10 files 42, 44, 46, 48, etc., as shown in FIG. 3A. Computer 34 quality. Size identifier 61 describes the size of those slices in conveys file 40 to server 36 over links 60, 62, 64, 66 and 68, stream 41 that have a fixed size associated therewith, as described above, preferably using FTP, at step 84. Each wherein typically the size (or the corresponding resolution) time a new file is uploaded to the server, index file 50 (FIG. of the level #1 video slices is smaller than that of the level 5 3B) is updated, at step 86. #2 slices. For each of the one or more links that is open, computer Each of clients 30 chooses or is assigned the quality level 34 checks the link function at step 88, preferably by timing appropriate to the bandwidth of its link on network 28 to the transfer of the respective files being transmitted over the server 36. A method for selecting and, as required, varying link. In the event that one of the links, for example, link 60 the level is described hereinbelow with reference to FIG. 6B. FIG. 4 is a block diagram that schematically illustrates 10 as shown in FIG. 4, is not responding or is responding unacceptably slowly, computer 34 breaks the link. The file communication between computer 34 and server 36 over being transmitted over the broken link may be retransmitted network 28, in accordance with a preferred embodiment of over another link. Alternatively, the file may be dropped the present invention. Computer 34 should preferably ensure from the transmission, particularly in the case of a real-time that there is sufficient communication bandwidth between the computer and the server, particularly when network 28 15 multimedia broadcast, in which data arriving at one of computers 30 will generally tend to disrupt reception of the includes an Internet connection, which may be slow and broadcast. When link 60 is broken, a new link, for example, subject to bottlenecks. For this purpose, the computer preflink 70, is opened in its stead, as described further hereinerably opens a plurality of links, each link having its own below with reference to FIG. 8. Alternatively or additionally, URL (Uniform Resource Locator). Preferably, five links 60, 62, 64, 66 and 68 are opened and operate simultaneously 20 the encoding/quality level (step 80) or slicing (step 82) of the data may be adjusted, as described hereinbelow with referover a single modem line. Alternatively, each link may be ence to FIG. 7. This process continues until the broadcast routed differently from the other links, over a different program is completed. telephone line and/or through different Internet nodes. Files FIG. 6A is a flow chart illustrating the operation of clients 42, 44, 46, 48, etc., in stream 40 are transmitted respectively over links 60, 62, 64, 66 and 68 in successive alternation, so 25 30 in downloading and playing back data stream 40 (FIG. 3A) transmitted by computer 34, in accordance with a that at any given time (except at the very beginning of the preferred embodiment of the present invention. The operasequence) up to five files are transmitted in parallel. tion of client is controlled by a Java applet, which may be Alternatively, more than five links may be opened, so that downloaded from server 36, and includes facilities for more than five files may accordingly be transmitted in 30 carrying out the steps shown in FIG. 6A, as well as for error parallel. detection and, optionally, correction in communications Preferably, computer 34 monitors the rate of data being received by the clients and for other functions known in the transmitted over each of links 60, 62, 64, etc., and allocates art. A sample applet of this sort is incorporated herein in the files 42, 44, 46, 48, etc., according to the data rates. The sizes of the files may be varied by adjusting slice durations T1 , T2, 35 software appendix, as further described hereinbelow. T3, etc., and a relatively greater volume of data may be Each client 30 connects to server 36, optionally using transmitted through links exhibiting relatively greater data multiple HITP links, in a manner similar to that shown and rates. The bandwidth open for transmission between comdescribed above with reference to FIG. 4. Typically, client puter 34 and server 36 is effectively roughly equal to a sum 30 opens one or two H flP links, over which files 42, 44, 46, of the bandwidths of the plurality of open links. The number 40 etc., are downloaded in successive alternation, but as in the of links that are actually opened between computer 34 and case of transmitting computer 34, a greater number of links server 36 may be less than or greater than the five links may similarly be opened. The client first reads index file 50 shown in the example of FIG. 4, depending on the available (FIG. 3B), and graphic 56 (FIG. 3C) is displayed by the data rates of the open links, compared with the rate of data client, so that a user can decide and indicate at which slice in stream 40. Preferably at least two links are opened, so that 45 of data stream 40 to begin downloading. Responsive to a preparation and transmission of files 42, 44, 46, 48, etc., may user input, client 30 selects an appropriate starting slice and be toggled back and forth between the links. A similar begins to download and decode (decompress) files 42, 44, technique is preferably employed by clients 30. 46, etc. In the case of a multimedia stream, client 30 reconstructs and outputs the multimedia data for the appreAlternatively or additionally, the link bandwidth may be accommodated using the multi-level transmission concept 50 ciation of a user. Time stamps in the data stream are used to synchronize the data, so that the multimedia sequence is illustrated by FIG. 3D, over either a single link or over played back just as it was input at computer 34, preferably multiple simultaneous links with server 36. with only a minimal necessary transmission and decoding FIG. 5 is a flow chart that schematically shows an delay. overview of operations of computer 34 in preparing and transmitting data stream 40 over network 28, in accordance 55 Client 30 preferably monitors the rate of data coming in over each of its links with server 36. If any of the links is with a preferred embodiment of the present invention. non-operative or is operating unacceptably slowly, that link Details of some of the steps in the operation are shown in is closed, and a new link is opened in its place, as described FIGS. 7-9 and described further with reference thereto. above. Further preferably, the client compares the times Exemplary programs for carrying out the functions illustrated in FIG. 5 are incorporated herein in a software 60 stamped in the data stream to a local real-time clock and, if it determines that there is a significant lag in the time codes appendix, which is described further hereinbelow. relative to the real-time clock, opens additional links with To begin the broadcast, computer 34 connects to server server 36 in order to increase the overall data rate. 36, optionally opening the plurality of links shown in FIG. FIG. 6B is a flow chart illustrating the operation of clients 4. Broadcast data are then input to the computer, for example, from input devices 22, or from a video, audio or 65 30 in downloading and playing back multi-level data stream animation sequence stored on disk or tape. The data are 41 (FIG. 3D) transmitted from server 36, in accordance with another preferred embodiment of the present invention. As compressed at step 80, and are then "sliced" at step 82 into US 6,389,473 B1 11 12 upload file 42 is measured and compared to T„ at the same in the method of FIG. 6A, each client 30 connects to the time as file 44 (slice 2) is being encoded and prepared. server, generally using a single HTTP link. After reading Responsive to this measurement of upload time, the duration header 43 and, preferably, making an initial assessment of of subsequent slices, for example, times T, and 1' 4 for files the link bandwidth, the client selects one of the available quality levels in the stream. Responsive to the selection, 5 46 and 48, respectively, is adjusted. Thus, as illustrated in FIG. 3A, T, and T4 are less than T, and T2. The shorter files server 36 begins to transmit data slices at the chosen quality 46, 48, etc., that result from the change in slice duration are level. The slices are received, decoded and output by the more likely to reach server 36 in the proper sequence, client. without being held up by extended bottlenecks. Periodically, client 30 makes an assessment of the rate of data transfer over the link from the server and, if necessary, to Furthermore, when the slice durations are shorter, the effect of "drop-out" of a slice due to failure of the corresponding changes the quality level accordingly. For example, if the link is less marked. rate is low, such that time stamps 59 indicate that the slices On the other hand, if it is determined that the upload time need to be played as fast as or faster than they are being for ffie 42 (or a subsequent file) is substantially shorter than received, the client will preferably select a lower quality level if one is available. On the other hand, if the rate is 15 duration T„ the duration of subsequent files may be extended, and/or the compression ratio may be decreased, so substantially higher than what is needed to receive the as to take better advantage of the available bandwidth. successive slices on time, the client may select a higher quality level to take advantage of the available bandwidth. FIG. 8 is a flow chart that schematically illustrates details Preferably, upper and lower data rate thresholds, or of 1,1? step 84 in the method shown in FIG. 5, in accordance watermarks, are set dynamically in response to the data rate 20 with a preferred embodiment of the present invention. To and are used in determining when a new quality level should begin the process of FTP transfer to server 36, a FTP OPEN be selected. command is issued to the server by computer 34 at step 94, thus opening link 60 (FIG. 4). The computer then issues a FIG. 7 is a flow chart that schematically illustrates details FTP SEND command to send file 42, corresponding to slice of encoding step 80 and slicing step 82 in the method of FIG. 5, in accordance with a preferred embodiment of the present 25 1, over the link. These steps are repeated for each of a first group of links 62, 64, 66 and 68 and for a corresponding first invention. In encoding data stream 40, computer 34 prefergroup of files 44, 46, 48, etc., up to a maximum initial ably compresses the data using any suitable compression number of links .1. In the current example, J-5, since method known in the art. For example, if data stream 40 the inventors have found that five 1 ,1? links provide a comprises audio data, GSM 6.10 standard encoding may be used, as is known in the art, to compress the data by about 30 reliable upload path with a sufficient overall bandwidth when transferring data over the Internet. A larger or smaller 10:1. Alternatively or additionally, for video data, 11.263 number of links could be used, however, and Jm,, may also standard compression, similarly known in the art, may be be assigned the value 1, in which case the steps of the used. These compression standards are advantageous in that method of FIG. 5, and the details thereof shown in FIGS. 7, common personal computers can perform such compression in real time, in parallel with the other operations illustrated 35 8 and 9, are carried out over a single FIV link. in FIG. 5. Other compression methods known in the art, such As described above, links 60, 62, 64, 66 and 68 continue as MPEG data compression, may similarly be used, as long to operate until and unless it is determined that one of the as computer 34 is sufficiently powerful. links (for example, link 60 in FIG. 4) is operating at an Computer 34 determines a compression ratio by which to 40 unacceptably slow data transfer rate. Assuming all of the links to be functioning properly, after the first five slices of compress the data, based on the collective bandwidth of its stream 40 have been allocated in succession to the five links, open links with server 36. Preferably, computer 34 receives a file corresponding to a sixth slice of the stream is then an indication of the bandwidths of the links, determined at allocated again to link 60, or to whichever of the open links step 88 in FIG. 5, and adjusts the compression ratio accordingly, at a set compression step 90. For example, the 45 was the first to have completed transmission of its initial file. This process continues in alternation for all of the slices of compression ratio may be adjusted by changing compression stream 40, until transmission is completed. coefficients (e.g., MPEG coefficients) so as to match the data stream bandwidth to the available link bandwidth. Methods If link 60 has not completed transmission of file 42 by the of adaptively varying the compression ratio of a multimedia time the sixth file is ready for transmission, link 60 will have data stream that can be used for this purpose are described, so timed out, and a time-out indication will be received from for example, in the above-mentioned U.S. patent application step 88 (FIG. 5). In this case, link 60 is terminated and is Ser. No. 08/919,027. replaced by link 70. Preferably, a "socket" opened for link 60 by a WINSOCK program running on computer 34 is Similarly, at a set duration step 92, slice durations T„ T 2, simply reinitialized to open link 70. Optionally, file 42 is T,, etc., are optionally adjusted responsive to the link bandwidths. Initially, duration T, of slice 1 for file 42 is set 55 retransmitted over link 70 or over one of the other links, although in the case of a live broadcast transmission, it may to a default value, typically between 1 and 5 sec. For be preferable simply to drop the file rather than send it after example, to transfer compressed audio data at 2 Kbytes/sec, such a long delay. file 42 may be assigned a file size of 10 Kbytes, with T 1 =5 sec. Assuming that computer 34 communicates over netFIG. 9 is a flow chart that schematically illustrates details work 28 through a 28.8 Kbaud modem and maintains a 60 of check link step 88 in the method of FIG. 5, in accordance typical FTP upload rate of 2 Kbytes/sec (allowing for with a preferred embodiment of the present invention. As moderate Internet bottlenecks), data stream 40 will be noted above, for each file 42, 44, 46, etc., computer 34 uploaded to server 36 over link 60 (FIG. 4) substantially at measures a slice transmission time T„, corresponding to the the rate that the audio data are input to computer 34. time required to transmit the entire file to server 36. If T„ Frequently, however, this will not be the case, and the FTP 65 is geater than a maximum permissible time TMAX, it is then determined that the link over which the file was transmitted upload rate over link 60 will fluctuate and may be slower is not functioning adequately. In this case, a command is sent than 2 Kbyte/sec. At step 88 (FIG. 5), the time required to US 6,389,473 B1 14 13 to open a new FTP link at step 94, as described above. T ikm, is preferably set to be a predetermined multiple of T„, depending on the length of possible transmission delay that can be tolerated. Typically, TmAx is set to an initial value of about 20 sec, although when the slice durations are changed 5 (at step 92), TmAx is preferably adjusted accordingly. For optimal, reliable functioning of the upload process from computer 34 to server 36, T„ should desirably be close to or less than a predetermined minimum time Tmm. Typically, TM is set to be approximately equal to the slice 10 duration T„ T2 , etc., i.e., about 5 sec initially. If the measured value of 1151. is greater than TA0N, although still less than TmAg, then it will generally be desirable to either increase the compression ratio, at step 90, or decrease the slice duration, at step 92, or both. The reasons and methods 15 for changing the compression ratio and slice duration were described hereinabove with reference to FIG. 7. Preferably, computer 34 calculates optimal values of the compression ratio and slice duration, depending inter alia on the relative 20 values of Tsy, and TA,IIN. If Tsy is substantially less than Te„N, then the slice duration may optionally be increased, as noted hereinabove. The process shown in FIG. 5, including the interdependent steps of encoding 80, slicing 82, 1- ,T1? upload 84, 25 updating 86 and checking link function 88 thus continues until the entire data stream 40 is uploaded (except for any of files 42, 44, 46, 48, etc., that may be dropped due to excessive transmission delay, as described above), or until the transfer is terminated by a user of computer 34. Although 30 details of these steps have been described primarily with reference to the uploading process of FIG. 5, it will be understood that similar methods are applicable, mutatis mutandis, to the method of downloading the files from server 36 to clients 30, as shown in FIG. 6A. 35 Although the preferred embodiments described hereinabove refer primarily to broadcasting multimedia data over the Internet, in other preferred embodiments of the present invention, network 28 may comprise substantially any suitable sort of network, such as a LAN, WAN or intranet, and 40 the data may comprise substantially any type of continuously streaming data. It will be understood in this case that the slices of the data stream corresponding to files 42, 44, 46, etc., will not necessarily be time slices as described hereinabove, but may rather have an appropriate, preferably 45 variable, data size associated therewith. Furthermore, it will be appreciated that the principles of the present invention may similarly be applied in other areas of real-time multimedia data streaming, such as video teleconferencing. It will thus be understood that the preferred embodiments 50 described above are cited by way of example, and the full scope of the invention is limited only by the claims. Software Appendix An appendix is attached hereto as an integral part of the present patent application, including the following computer-readable files, which exemplify aspects of the operation of system 32 (FIG. 2) and of the file structures and methods described hereinabove. This appendix contains material covered by copyright, belonging to Geo Interactive Media Group Ltd.: 1. LiveFeedClient.exe 2. LFRec.dll 3. Jsdec.class 4. Emb lazeAudio. class S. CyclicDecoderStream.class 55 60 65 6. RandomAccessStream.class 7. Xbuttons.jpg 8, ALF.HTML 9. Addresses.dat The above files should be entered into a personal computer, preferably a desktop PC (Pentium 166 MHz, with 32 MB RAM), with a Windows 95 or Windows NT operating system installed. The files should be stored on disk in a common folder or directory, together with a Microsoft Basic DLL file named Msvbvm50.d11, available from Microsoft Inc., Redmond, Wash. The computer should be equipped with a Sound Blaster sound card, with a microphone connected to the line-in input jack thereon. The computer should also be connected to the Internet via a standard modem or LAN, and should have an Fl? account with an Internet Service Provider (ISP). What is claimed is: 1. A method for real-time broadcasting from a transmitting computer to one or more client computers over a network, comprising: providing at the transmitting computer a data stream having a given data rate; dividing the stream into a sequence of slices, each slice having a predetermined data size associated therewith; encoding the slices in a corresponding sequence of files, each file having a respective index; and uploading the sequence to a server at an upload rate generally equal to the data rate of the stream, such that the one or more client computers can download the sequence over the network from the server at a download rate generally equal to the data rate. 2. A method according to claim 1, and comprising downloading the sequence using an Internet protocol over the network from the server to the one or more client computers. 3. A method according to claim 2, wherein downloading the sequence comprises opening a plurality of download links between one of the client computers and the server, each link characterized by a respective link data rate, and downloading different files in the sequence over different ones of the plurality of links. 4. A method according to claim 3, wherein opening the plurality of links comprises monitoring the data rates of the links and opening a new link in place of one of the links having a data rate lower than a predetermined level. 5. A method according to claim 4, wherein opening the new link comprises retransmitting at least one of the files in the sequence, wherein the at least one of the files was incompletely transmitted over the one of the links having the data rate lower than the predetermined level. 6. A method according to claim 4, wherein opening the new link comprises dropping at least one file out of the sequence, wherein the at least one of the files was incompletely transmitted over the one or more of the links having the data rate lower than the predetermined level. 7. A method according to claim 3, wherein opening the plurality of links comprises opening links such that the data rates of the links taken together are sufficient to download the sequence at the download rate generally equal to the data rate. 8. A method according to claim 2, wherein the one or more client computers decode the sequence and play back the data stream responsive to the indices of the files, at a replay rate generally equal to the data rate. 9. A method according to claim 8, wherein uploading the sequence comprises uploading and updating an index file containing the index of the file in the sequence that was most US 6,389,473 B1 15 16 data size associated therewith, and encodes the slices in recently uploaded, and wherein the one or more client a corresponding sequence of files, each file having a computers read the index file to play back the sequence. 10.A method according to claim 9, wherein downloading respective index, and the sequence comprises selecting a ffie in the sequence which uploads the sequence to a server at an upload rate earlier than the file whose index is contained in the index file generally equal to the data rate, such that one or more and downloading at least a portion of the encoded sequence client computers can download the sequence over the of files beginning with the selected file. network from the server at a download rate generally 11.A method according to claim 2, wherein encoding the equal to the data rate. slices comprises encoding slices at a plurality of different 26. Apparatus according to claim 25, wherein the one or quality levels, such that the files corresponding to a given to more client computers decode the sequence and play back one of the slices have a different, respective data size for the data stream responsive to the indices thereof, at a data each of the quality levels. replay rate generally equal to the data rate. 12. A method according to claim II, wherein download27. Apparatus according to claim 26, wherein the one or ing the sequence comprises determining a data bandwidth of the network between the server and the client computer and is more client computers download the sequence using an Internet download protocol. selecting one of the quality levels responsive to the deter28. Apparatus according to claim 27, wherein the Internet mined bandwidth. download protocol is selected from a group consisting of 13.A method according to claim 2, wherein downloading the sequence comprises downloading the sequence using a HTTP,UDP and RTP. protocol selected from a group consisting of HTTP, UDP and 20 29. Apparatus according to claim 26, wherein the one or RTP. more client computers comprise a plurality of client 14. A method according to claim 2, wherein the one or computers, which download the sequence substantially more client computers comprise a plurality of client simultaneously. computers, and wherein downloading the sequence com30. Apparatus according to claim 25, wherein the transprises downloading to the plurality of client computers 25 mining computer compares the upload rate to the data rate substantially simultaneously. and adjusts the upload rate responsive to the comparison. 15.A method according to claim 1, wherein uploading the 31. Apparatus according to claim 30, wherein the transsequence comprises comparing the upload rate to the data mitting computer compresses the data at a compression ratio rate and adjusting the upload rate responsive to the comwhich is varied responsive to the comparison. 30 parison. 32. Apparatus according to claim 30, wherein the trans16.Amethod according to claim 15, wherein encoding the mitting computer adjusts the size of one or more of the slices stream comprises compressing data in the stream at a desired responsive to the comparison. compression ratio, and wherein adjusting the upload rate 33. Apparatus according to claim 25, wherein the transcomprises changing the compression ratio. 17.A method according to claim 15, wherein adjusting the 35 mitting computer opens a plurality of links between the transmitting computer and the server, each link characterupload rate comprises adjusting the size of one or more of ized by a respective data rate, and transmits different ones of the slices. the sequence of files over different ones of the plurality of 18.A method according to claim 1, wherein uploading the links. sequence comprises opening a plurality of file transfer links between the transmitting computer and the server, each link 40 34. Apparatus according to claim 33, wherein the transcharacterized by a respective link data rate, and uploading mitting computer opens the plurality of links such that the different files in the sequence over different ones of the data rates of the links taken together are sufficient to upload plurality of links. the sequence at the upload rate generally equal to the data 19.A method according to claim 18, wherein opening the ratc. plurality of links comprises opening links such that the data 45 35. Apparatus according to claim 33, wherein the transrates of the links taken together are sufficient to upload the mitting computer monitors the data rates of the links and sequence at the upload rate generally equal to the data rate. opens a new link in place of one of the links whose data rate 20. A method according to claim 18, wherein opening the is lower than a predetermined level. plurality of links comprises monitoring the data rates of the 36. Apparatus according to claim 25, wherein the data links and opening a new link in place of one of the links 50 stream comprises multimedia data. having a data rate lower than a predetermined level. 37. Apparatus according to claim 36, wherein the prede21.A method according to claim 1, wherein uploading the termined data size of each of the slices corresponds to a time sequence comprises uploading a sequence using an Internet duration of the slice. Protocol. 38. Apparatus according to claim 25, wherein the trans22. A method according to claim 21, wherein uploading 55 mining computer uploads the encoded sequence using an the sequence comprises uploading a sequence using FTP. Internet upload protocol. 23. A method according to claim 1, wherein dividing the 39. Apparatus according to claim 38, wherein the Internet stream into the sequence of slices comprises dividing the upload protocol comprises HP. stream into a sequence of time slices, each having a prede40. Apparatus according to claim 25, wherein the slices termined duration associated therewith. 60 are encoded at a plurality of different quality levels, such 24. A method according to claim 1, wherein the data that the files corresponding to a given one of the slices have stream comprises multimedia data. a different, respective data size for each of the quality levels. 25. Apparatus for real-time broadcasting of a data stream 41.Apparatus according to claim 25, wherein the network having a given data rate over a network, comprising: comprises the Internet. a transmitting computer, which divides the stream into a 65 sequence of slices, each slice having a predetermined UNITED STATES PATENT AND TRADEMARK 01-4-, ICE CERTIFICATE OF CORRECTION Page 1 of 1 PATENT NO. : 6,389,473 B1 : May 14, 2002 DATED INVENTOR(S) : Sharon Carmel et al. It is certified that error appears in the above-identified patent and that said Letters Patent is hereby corrected as shown below: Title page, Item [75], "Ginsberg" should read -- Ginzberg Signed and Sealed this Ninth Day of July, 2002 Attest: JAMES E. ROGAN Attesting Officer Director of the United States Patent and Trademark Office

Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.


Why Is My Information Online?