Source: https://patents.google.com/patent/US20060168294A1/en
Timestamp: 2019-10-22 12:02:12
Document Index: 116572155

Matched Legal Cases: ['art 500', 'art 500', 'art 500', 'art 500', 'art 600', 'art 600', 'art 600', 'art 600', 'art 600']

US20060168294A1 - Hybrid local/remote streaming - Google Patents
Hybrid local/remote streaming Download PDF
US20060168294A1
US20060168294A1 US11/274,442 US27444205A US2006168294A1 US 20060168294 A1 US20060168294 A1 US 20060168294A1 US 27444205 A US27444205 A US 27444205A US 2006168294 A1 US2006168294 A1 US 2006168294A1
US11/274,442
2004-11-13 Priority to US62750204P priority Critical
2004-11-15 Priority to US62851704P priority
2005-11-14 Application filed by Stream Theory Inc filed Critical Stream Theory Inc
2005-11-14 Priority to US11/274,442 priority patent/US20060168294A1/en
2006-02-13 Assigned to STREAM THEORY, INC. reassignment STREAM THEORY, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ZAVERTNIK, GREGORY, DE VRIES, JEFFREY, HUBBELL, ANN
2006-07-27 Publication of US20060168294A1 publication Critical patent/US20060168294A1/en
210000003702 immature single positive T cell Anatomy 0 description 8
A technique for streaming from a local device and a remote device involves providing a subset of data associated with a streaming application to a local device. An example of a method according to the technique includes running a streaming software player, accessing data from a local storage device necessary to stream a software application, and accessing data from a remote location necessary to stream the software application using the streaming software player. An example of a system according to the technique may include, by way of example but not limitation, a means for streaming a first subset of content associated with a streaming application from a streaming server, a means for streaming a second subset of content associated with the streaming application from a local source, and a means for periodically querying the streaming server, wherein the periodic querying informs the streaming server that the streaming application is running.
This application claims priority to U.S. Provisonal Application 60/627,502 filed Nov. 13, 2004, U.S. Provisonal Application 60/628,517 filed Nov. 15, 2004, and co-pending U.S. Utility Application No.: ______, filed Nov. 14, 2005, all of which are hereby incorporated by reference in their entirety.
On advantage of streamed applications is that users only download what is needed to execute a program. The provider of a streamed application has more control over the streamed application than, for example, a provider of a program that is installed to hard disk. For example, the provider of a streamed application may charge a per hour rate for the use of the application. Alternatively, the provider of a streamed application may prevent a local disk from being filled up unnecessarily with code that will not be accessed.
While streaming has certain advantages, there are many problems associated with streaming software that it would be advantageous to negate, work around, or reduce. For example, speeding up execution of streaming programs is an on-going issue. As another example, it may be desirable to provide a user with an experience similar to that associated with an installed, as opposed to streamed, program. As another example, it may be desirable to provide streamed programs on consoles.
In addition, a provider of a streamed application may desire to attempt copyright protection. This can be difficult because if a streamed application is downloaded entirely to a local machine, the user of the local machine may gain access to all portions of the streamed application, eliminating the need to stream and increasing the risks of copyright violations. Thus, an additional concern for some may be to prevent a user from gaining access to all of a given program locally.
A technique for streaming from a local device and a remote device involves providing a subset of data associated with a streaming application to a local device. By way of example but not limitation, a first subset of the data may be provided to a consumer on a removable storage device. An example of a method according to the technique includes running a streaming software player, accessing data from a local storage device necessary to stream a software application, accessing data from a local cache necessary to stream the software application, and accessing data from a remote location necessary to stream the software application using the streaming software player. In a non-limiting embodiment, the method may include sending a request to stream the software application. The software application may then be streamed from both the local storage device and the remote, for example, streaming server.
Another example of a method according to the technique includes maintaining, at a streaming server, first content associated with a streaming application, receiving a request to stream the streaming application, and providing a token file in response to the request. The token file may include, by way of example but not limitation, an address associated with the streaming server, instructions to receive the first content from the streaming server, and instructions to receive second content from a local streaming source, wherein said first content and said second content are necessary for properly streaming the streaming application. In a non-limiting embodiment, the method may include dividing content associated with a streaming application into the first content and the second content.
An example of a system according to the technique may include, by way of example but not limitation, a means for streaming a first subset of content associated with a streaming application from a streaming server, a means for streaming a second subset of content associated with the streaming application from a local source, and a means for periodically querying the streaming server, wherein the periodic querying informs the streaming server that the streaming application is running.
FIGS. 3A and 3B depict systems for hybrid local/remote streaming.
FIGS. 4A and 4B depict examples of a system for hybrid local/networked streaming.
FIG. 5 depicts a flowchart of a method for hybrid local/remote software streaming.
FIG. 6 depicts a flowchart of a method for hybrid local/remote software streaming.
FIG. 7 depicts a networked system for use in an embodiment.
FIG. 8 depicts a computer system for use in the system of FIG. 7.
In a non-limiting embodiment, at module 106 (FIG. 1), the Stub program may also provide the user with various options on a “splash screen,” such as is illustrated in FIG. 2D. The options may include an autoplay option 108 (FIG. 1), an install-to-hard-drive option 110 (FIG. 1), a file editor option 112 (FIG. 1), and an upgrade option 114 (FIG. 1). Additional options (not shown) may include an option to visit a web site, such as the web site of the vendor or producer of the software title, or to quit.
When installing a streaming title on the hard drive, the system typically checks for adequate disk space and copies all of the streaming files to the hard drive, if space is sufficient, as illustrated in FIG. 21. In addition, shortcuts may be created at optional module 126 (FIG. 1), window registry settings may be adjusted, and removal code for the short cuts may be added to the “Add and Remove” programs. Prompting of the user to load the CDs in a certain order may be required. Once a streaming title has been installed onto the hard drive, the user may select, for example, a shortcut to launch the streaming player and run the streaming application, as illustrated in FIG. 2J. The next time “Play Now” is selected, the cache on the hard drive can be used, as indicated at module 128 (FIG. 1).
FIG. 3A depicts a system 300 for hybrid local/remote streaming. The system 300 includes a first streaming content database 302, a second streaming content database 304, a local cache 306, and a streaming player 308. The first streaming content database 302 is located at a streaming server 310. The second streaming content database 304 is located at a streaming client 312.
In an embodiment, the second streaming content database 304 is included on a removable media, such as a CD or DVD, that is distributed to a consumer. The second streaming content may be streamed directly from the removable media or installed in local memory or non-volatile storage, such as a hard disk drive. The removable media may include copy protection safeguards of types that are well-known in the art and are continuously being developed to protect against privacy and other forms of intellectual property theft.
In an embodiment, the second streaming content database 304 does not include all of the content associated with a streaming application. The first streaming content database 302, however, includes the rest of the streaming content for the streaming application. As is known in the art of content streaming, the local cache 306 may be utilized while the streaming player 308 runs the streaming application. When content, such as a block, is requested from the first streaming content, the streaming player requests the block from the streaming server 310. On the other hand, when content, such as another block, is requested from the second streaming content, the streaming player requests the block from a local source, such as the removable media on which the second streaming content database 304 was provided, or a local source, such as a hard drive onto which the second streaming content database 304 was installed. A request may be honored by the local cache 306 if the requested content, such as a block, is cached.
Advantageously, the system 300 can be used to stream software at a high rate of speed, even if broadband access is unavailable or limited, because some of the requested blocks are available locally. For large software titles, this can be of great value. Moreover, it is sometimes valuable to keep certain data relatively secure. The data that should be kept secure can be encoded into the blocks that are provided locally.
FIG. 3B depicts an example of the system 300 that includes a heartbeat monitor 330. The heartbeat monitor 330 is occasionally pinged, queried, or otherwise notified of the ongoing streaming of a streaming application. It may be desirable to know how much a software title is used, and for how long, for the purposes of, for example, charging for the time spent using the software title. The heartbeat monitor 330 may receive additional information, as well, such as which blocks are being requested and in what order, that may help to predictively provide replies to block requests or to configure content databases in future versions of the software title.
One technique for streaming software is described in the co-pending patent application Ser. No. 10/988,014 filed Nov. 11, 2004, entitled “SYSTEM AND METHOD FOR PREDICTIVE STREAMING”, which is incorporated herein by reference.
FIG. 4A depicts an example of a system 400 for hybrid local/networked streaming. The system 400 includes a streaming player 402, a first content database 404, a second content database 406, and a network interface 408. The streaming player 402 and the first content database 404 are on a streaming client 412, which is coupled to a network 420, which may include the Internet. The second content database 406 and the network interface 408 are located on a streaming server 410, which is also coupled to the network 420.
In an embodiment, the first content database 404 is missing every 20th block and the second content database 406 includes every 20th block. When the streaming player 402 runs a streaming application associated with the blocks in the first and second content databases 404, 406, the streaming player 402 makes block requests of the databases. If a block request is for one of the blocks in the first content database 404, the block request is honored locally. If, on the other hand, the block request is for one of the blocks in the second content database 406, then the block request is made via the network 420. The request is honored by the streaming server 410, which sends a reply to the block request through the network interface 408 via the network 420 to the streaming player. It should be noted that once a request has been honored by the streaming server 410, the requested block may be cached locally.
The streaming application may be configured to hold any of a variety of different sets of blocks (e.g., every 5th block, every block that is smaller than a given size, etc.). FIG. 4B depicts an alternative configuration of the content databases for the system 400. In the example of FIG. 4B, blocks associated with a streaming application are organized into libraries. The content database located on the streaming server 410 includes the first 5 blocks of each library, depicted in FIG. 4B as library block subset 416-1 to 416-N for libraries 1 to N, respectively. The content database located on the streaming client 412 includes the 6th and later blocks of each library, depicted in FIG. 4B as library block subset 414-1 to 416-N for the libraries 1 to N, respectively.
Advantageously, arranging the content databases as depicted in FIG. 4B allows for a download period during which blocks are requested from the streaming server 410, followed by streamed content from a local (probably faster) source. In an embodiment, the blocks located in the streaming server 410 include header information that occurs during natural breaks in a software title. For example, a game that has multiple levels may be configured such that header information is requested from the streaming server 410 prior to beginning each level, then, during the level, content is requested locally. This may entail a pause between levels, depending upon the predictive request capabilities, bandwidth, and other factors.
FIG. 5 depicts a flowchart 500 of a method for hybrid local/remote software streaming. In an embodiment, the flowchart 500 starts with streaming 502 a first subset of content associated with a streaming application from a streaming server. In an embodiment, the flowchart 500 continues with streaming 504 a second subset of content associated with the streaming application from a local source. In an embodiment, the flowchart 500 continues with periodically querying 506 the streaming server, wherein the periodic querying informs the streaming server that the streaming application is running.
FIG. 6 depicts a flowchart 600 of a method for hybrid local/remote software streaming. In an embodiment, the flowchart 600 starts with dividing 602 content associated with a streaming application into first content and second content. This may be conducted in a streamification stage of streaming software development. Alternatively, a previously streamified application may be divided according to an algorithm (e.g., removing every 20th block from a first streaming content database and placing every 20th block in a second streaming content database). In an embodiment, the flowchart 600 continues with maintaining 604 the first content on a streaming server. This may entail providing a web site to which users may visit to begin streaming an application. The web site may be at the same physical location of the streaming content, or a remote location. In an embodiment, the flowchart 600 continues with receiving 606 a request to stream the streaming application. In an embodiment, the flowchart 600 continues with providing 608 a token file in response to the request, the token file including:
an address associated with the streaming server;
instructions to receive the first content from the streaming server; and
instructions to receive the second content from a local streaming source.
running a streaming software player;
accessing data from a local storage device necessary to stream a software application using the streaming software player;
accessing data from a local cache necessary to stream the software application using the streaming software player; and
accessing data from a remote location necessary to stream the software application using the streaming software player.
2. The method of claim 1, further comprising sending a request to stream the software application.
3. The method of claim 1, further comprising receiving in response to a request to stream the software application a token file.
4. The method of claim 1, further comprising receiving in response to a request to stream the software application an address of a streaming server at the remote location.
5. The method of claim 1, further comprising receiving in response to a request to stream the software application instructions to access first content from the remote location and to access second content from the local storage device.
6. The method of claim 1, further comprising periodically querying a streaming server at the remote location, wherein the periodic querying informs the streaming server that the streaming application is running.
7. The method of claim 1, wherein the local storage device is a removable storage device.
maintaining, at a streaming server, first content associated with a streaming application;
receiving a request to stream the streaming application; and
providing a token file in response to the request, said token file including:
instructions to receive second content from a local streaming source, wherein said first content and said second content are necessary for properly streaming the streaming application.
9. The method of claim 8, further comprising dividing content associated with a streaming application into the first content and the second content.
10. The method of claim 8, further comprising maintaining the first content on a networked server.
11. The method of claim 8, further comprising providing a file necessary to stream the streaming application to a consumer, wherein the file includes a local address associated with the second content and a remote address associated with the second content.
12. The method of claim 8, further comprising placing the second content on a removable media.
13. The method of claim 8, further comprising making available to a consumer removable media having the second content stored thereon.
a means for streaming a first subset of content associated with a streaming application from a streaming server;
a means for streaming a second subset of content associated with the streaming application from a local source; and
a means for periodically querying the streaming server, wherein the periodic querying informs the streaming server that the streaming application is running.
15. The system of claim 14, further comprising a means for running a streaming software player.
16. The system of claim 14, further comprising a means for sending a request to stream the software application to the streaming server.
17. The system of claim 14, further comprising a means for accessing data from a local storage device necessary to stream a software application.
18. The system of claim 14, further comprising a means for accessing data from a local cache necessary to stream the software application.
19. The system of claim 14, further comprising a means for accessing data from a remote location necessary to stream the software application using the streaming software player.
20. The system of claim 14, wherein the local source is a removable storage device.
US11/274,442 2004-11-13 2005-11-14 Hybrid local/remote streaming Abandoned US20060168294A1 (en)
US62750204P true 2004-11-13 2004-11-13
US62851704P true 2004-11-15 2004-11-15
US11/274,442 US20060168294A1 (en) 2004-11-13 2005-11-14 Hybrid local/remote streaming
US13/685,445 US8949820B2 (en) 2004-11-13 2012-11-26 Streaming from a media device
US14/604,513 US20150143351A1 (en) 2004-11-13 2015-01-23 Streaming from a Media Device
US20060168294A1 true US20060168294A1 (en) 2006-07-27
US11/274,442 Abandoned US20060168294A1 (en) 2004-11-13 2005-11-14 Hybrid local/remote streaming
US11/273,862 Active 2030-07-01 US8359591B2 (en) 2004-11-13 2005-11-14 Streaming from a media device
US13/685,445 Active US8949820B2 (en) 2004-11-13 2012-11-26 Streaming from a media device
US14/604,513 Abandoned US20150143351A1 (en) 2004-11-13 2015-01-23 Streaming from a Media Device
WO (1) WO2006055445A2 (en)
EP2085973A1 (en) * 2006-10-17 2009-08-05 Soft-R Research LLC System and method for recording data on a multi-session optical recording disc with autorun
CN100347671C (en) 1996-09-11 2007-11-07 松下电器产业株式会社 Program reception/execution apparatus that can commence execution of a machine program having only received the program in part, and a program transmission apparatus that enables such execution
IL119486D0 (en) 1996-10-24 1997-01-10 Fortress U & T Ltd Apparatus and methods for collecting value
DE69707022D1 (en) 1997-05-08 2001-10-31 Pinnacle Technology Inc System and method for secure management of desktop environments over a network
CA2209549C (en) * 1997-07-02 2000-05-02 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for loading data into a database in a multiprocessor environment
EP1166522A1 (en) 1999-03-15 2002-01-02 Texar Software Corp. A secure network
EP1297438A1 (en) 2000-04-28 2003-04-02 Live365, Inc. System and method for reducing the resources required to deliver streaming media
AT464603T (en) * 2000-05-25 2010-04-15 Exent Technologies Inc Disk caching
EP1825390A2 (en) 2004-11-13 2007-08-29 Stream Theory, Inc. Hybrid local/remote streaming
2005-11-14 EP EP05851570A patent/EP1825390A2/en not_active Withdrawn
2005-11-14 JP JP2007541374A patent/JP2008527468A/en not_active Withdrawn
2005-11-14 US US11/274,442 patent/US20060168294A1/en not_active Abandoned
2005-11-14 US US11/273,862 patent/US8359591B2/en active Active
2005-11-14 WO PCT/US2005/041024 patent/WO2006055445A2/en active Application Filing
2012-11-26 US US13/685,445 patent/US8949820B2/en active Active
2015-01-23 US US14/604,513 patent/US20150143351A1/en not_active Abandoned
EP1825390A2 (en) 2007-08-29
US20150143351A1 (en) 2015-05-21
US8359591B2 (en) 2013-01-22
US8949820B2 (en) 2015-02-03
WO2006055445A2 (en) 2006-05-26
US20130081009A1 (en) 2013-03-28
WO2006055445A3 (en) 2007-05-31
JP2008527468A (en) 2008-07-24
US20060123185A1 (en) 2006-06-08
US20080086728A1 (en) 2008-04-10 Binding User Data Files
US20050097355A1 (en) 2005-05-05 Hierarchical trusted code for content protection in computers
US7178143B2 (en) 2007-02-13 Multi-version hosting of application services
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DE VRIES, JEFFREY;ZAVERTNIK, GREGORY;HUBBELL, ANN;REEL/FRAME:017160/0050;SIGNING DATES FROM 20030127 TO 20060118