Systems and methods for storage shuffling techniques to download content to a file

Abstract
The present invention provides a comprehensive development platform and client-side technology for intelligent and cost-effective delivery of video, audio and broadband content over a network, such as the Internet, to desktop, mobile computing, and network connected devices. In one embodiment of the present invention, an intelligent delivery system (IDS) uses a storage shuffling technique to efficiently store to a target file segments of downloaded content received in a random order from a content source. The IDS shuffles the randomly received content segments as they are received in allocated ordered physical piece positions of the target file such that at any point during the download, the target file does not need to be larger than the cumulative size of the content segments currently downloaded or received. Additionally, each received content segment only needs a small, bounded amount of processing at any point during the download. Upon receipt of the last of the randomly received content segments, the IDS has shuffled or otherwise provides the target file with all the content segments in the correct order as desired. As such, the IDS reduces download performance degradation due to large media files and disk swapping from using virtual memory.
Description

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, aspects, features, and advantages of the present invention will become more apparent and may be better understood by referring to the following description taken in conjunction with the accompanying drawings, in which:



FIGS. 1A and 1B are block diagrams of embodiments of a computing device for practicing an embodiment of the present invention;



FIG. 2A is a block diagram of an embodiment of an intelligent delivery client system;



FIG. 2B is a block diagram of an illustrative network environment for practicing an embodiment of the intelligent delivery client system;



FIG. 3A is a diagrammatic view of an embodiment of content structure for source content;



FIG. 3B is a diagrammatic view of an embodiment of content structure for local content;



FIG. 3C is a diagrammatic view of an embodiment of content structure in using a download order to download from the source content to the local content;



FIG. 3D is another diagrammatic view of another embodiment of content structure to download from the source content to the local;



FIG. 3E is a diagrammatic view of an embodiment of content structure in using temporary directory structure with a download order to download from the source content to the local content;



FIG. 3F is a flow diagram of steps performed in practicing an embodiment of downloading content with download orders;



FIG. 4A is a diagrammatic view of an embodiment of local content structure updated according to an embodiment of the flipping technique depicted in FIG. 4B;



FIG. 4B is a flow diagram of steps performed for practicing an embodiment of a flipping technique;



FIG. 5A is a diagrammatic view of an embodiment of a hashing and virtual file system of local content structure;



FIG. 5B is a diagrammatic view of another embodiment of a hashing and virtual file system of local content structure;



FIG. 5C is a diagrammatic view of yet another embodiment of a hashing and virtual file system of local content structure;



FIG. 5D is a flow diagram of steps performed in practicing an embodiment of caching and virtual file system content storing techniques;



FIG. 5E is a flow diagram of an embodiment of steps performed in accessing content stored via the illustrative caching and virtual file system related techniques of FIG. 5D;



FIG. 6A is a block diagram view of an embodiment for storing downloaded content using a shuffle storage technique;



FIG. 6B is a diagrammatic view of embodiments of various shuffle storage technique examples;



FIG. 6C is a flow diagram of example steps performed in practicing an embodiment of the shuffle storage technique in view of FIG. 6A and FIG. 6B;



FIG. 7A is a block diagram view of another embodiment for downloading and storing content from multiple servers;



FIG. 7B is a flow diagram of an embodiment of a method performed in practicing an embodiment of a Hypertext Transfer Protocol downloading technique in view of FIG. 7A;



FIG. 8A is a diagrammatic view of another embodiment of downloading according to a delivery behavior;



FIG. 8B is a diagrammatic view of an embodiment of a phased delivery behavior;



FIG. 8C is a flow diagram of an embodiment of a method performed in practicing one or more download behavior techniques in view of FIG. 8A and FIG. 8B;



FIG. 9A is a diagrammatic view of an embodiment of the intelligent client delivery system providing a user interface and user experience via online content;



FIG. 9B is an example embodiment of the user interface and user experience of the online content depicted diagrammatically in FIG. 9A;



FIG. 9C is a diagrammatic view of an embodiment of the intelligent client delivery system for providing a user interface and user experience via offline content;



FIG. 9D is an example embodiment of the user interface and user experience of the offline content depicted diagrammatically in FIG. 9A;



FIG. 9E is a flow diagram of an embodiment of a method performed in practicing a technique of providing offline access to online content;



FIG. 9F is a flow diagram of an embodiment of a method performed in practicing a technique of providing a user a similar offline experience as the online user experience;



FIG. 10A is a block diagram of an embodiment of the intelligent client delivery system for providing a content development environment;



FIG. 10B is an embodiment of the user interface of the designer tool of the content development environment;



FIG. 10C is another embodiment of the user interface of the designer tool of the content development environment;



FIG. 10D is an embodiment of the user interface of the editor tool of the content development environment;



FIG. 10E is another embodiment of the user interface of the editor tool of the content development environment;



FIG. 10F is an embodiment of the user interface of a content download selector mechanism;



FIG. 10G is another embodiment of the user interface of a content download selector mechanism;



FIG. 10H is a flow diagram of an embodiment of a method performed in practicing a technique of providing offline and online content from a single content development tool;



FIG. 11A is a block diagram of an embodiment of the intelligent client delivery system for providing authentication and authorization of users for access to content;



FIG. 11B is a block diagram of an embodiment of a media player for providing authentication and authorization of users for access to content;



FIG. 11C is a flow diagram of an embodiment of a method performed in practicing a technique of providing authenticated and authorized access to media files;



FIG. 12A is a block diagram of an embodiment of a networked environment for practicing synchronization techniques;



FIG. 12B is a flow diagram of an embodiment of a method performed in practicing a technique of synchronizing transmission of streaming media for a user;



FIG. 12C is a flow diagram of an embodiment of a method performed in practicing a technique of synchronizing playing downloaded media for a user;



FIG. 12D is a flow diagram of an embodiment of a method performed in practicing a technique of synchronizing content between devices of a user;



FIG. 13A is a flow diagram of an embodiment of a method performed in practicing a technique of requesting from one computing device a download to another computing device; and



FIG. 13B is a flow diagram of an embodiment of a method performed in practicing a technique of changing the download from one computing device to another computing device.


Claims
  • 1. A method for storing segments of downloaded content received in a random order to a storage, the method comprising the steps of: (a) receiving a content segment of a plurality of content segments representing content downloaded from a content source, the first content segment associated with a segment position identifier identifying an ordered position of the content segment within the content,(a) allocating a next available physical location of a portion of storage providing a plurality of ordered physical locations for storing the plurality of content segments;(b) determining via the segment position identifier that the ordered position of the content segment within the content is greater than an ordered location of the next available physical location within the storage; and(c) storing the content segment to the next available physical location in storage.
  • 2. The method of claim 1, comprising the steps of: (e) determining via the segment position identifier that the ordered position of the content segment within the content is less than the ordered location of the next available physical location within the storage;(f) storing in the next available physical location a previously received content segment stored in the ordered physical location of storage corresponding to the ordered position of the content segment within the content; and(g) storing the content segment to the ordered physical location of storage corresponding to the ordered position of the content segment within the content;
  • 3. The method of claim 1, wherein step (b) comprises the steps of: (b-a) determining a previously stored content segment is associated with an ordered position within the content segment corresponding to the ordered physical location of the next available physical location; and(b-b) moving the previously stored content segment to the next available physical location.
  • 4. The method of claim 1, comprising receiving the plurality of content segments in random order.
  • 5. The method of claim 4, comprising storing each of the received plurality of content segments in one of the next available physical location or a previously allocated physical location of storage.
  • 6. The method of claim 5, comprising rearranging each of the received plurality of content segments in allocated ordered physical locations of storage, wherein a number of ordered physical locations of storage allocated is equal to a number of content segments received.
  • 7. The method of claim 1, wherein step (b) comprises allocating a size of the next available physical location equal to a size of the content segment.
  • 8. The method of claim 1, comprising receiving content segments of equal size.
  • 9. The method of claim 8, comprising receiving a last content segment of the plurality of content segments set to a size of one of less than or equal to the equal size.
  • 10. The method of claim 1, comprising allocating the next available physical location adjacent to a previously allocated physical location.
  • 11. The method of claim 1, wherein the storage comprises one of a file, a memory element, or a data structure.
  • 12. A client for storing segments of downloaded content received in a random order to a storage, the client comprising: means for receiving a content segment of a plurality of content segments representing content downloaded from a content source, the content segment associated with a segment position identifier identifying an ordered position of the content segment within the content,means for allocating a next available physical location of a portion of storage providing a plurality of ordered physical locations for storing the plurality of content segments;means for determining via the segment position identifier that the ordered position of the content segment within the content is greater than an ordered location of the next available physical location within the storage; andmeans for storing the content segment to the next available physical location in storage.
  • 13. The client of claim 12, comprising: means for determining via the segment position identifier that the ordered position of the content segment within the content is less than the ordered location of the next available physical location within the storage;means for storing in the next available physical location a previously received content segment stored in the ordered physical location of storage corresponding to the ordered position of the content segment within the content; andmeans for storing the content segment to the ordered physical location of storage corresponding to the ordered position of the content segment within the content;
  • 14. The client of claim 12, comprising: means for determining a previously stored content segment is associated with an ordered position within the content segment corresponding to the ordered physical location of the next available physical location; andmeans for moving the previously stored content segment to the next available physical location.
  • 15. The client of claim 12, comprising means for receiving the plurality of content segments in random order.
  • 16. The client of claim 15, comprising means for storing each of the received plurality of content segments in one of the next available physical location or a previously allocated physical location of storage.
  • 17. The client of claim 16, comprising means for rearranging each of the received plurality of content segments in allocated ordered physical locations of storage, wherein a number of ordered physical locations of storage allocated is equal to a number of content segments received.
  • 18. The client of claim 12, wherein the means for allocating comprises allocating a size of the next available physical location equal to a size of the content segment.
  • 19. The client of claim 12, comprising means for providing content segments of equal size.
  • 20. The client of claim 19, comprising means for providing a last content segment of the plurality of content segments set to a size of one of less than or equal to the equal size.
  • 21. The client of claim 12, comprising means for allocating the next available physical location adjacent to a previously allocated physical location.
  • 22. The client of claim 12, wherein the storage comprises one of a file, a memory element, or a data structure.
Provisional Applications (1)
Number Date Country
60777672 Feb 2006 US