Claims
- 1. A method of allocating data blocks for streaming a file, comprising:
determining a data transfer characteristic for streaming the file; selecting a block size as a function of the data transfer characteristic; allocating data blocks having a block size on a persistent storage medium, said block size related to the data transfer characteristic; storing said file as the data blocks on the persistent storage medium; transferring the data blocks from the persistent storage medium into a first buffer memory, with the data blocks in the first buffer memory having the block size; determining an actual bit rate to a user; allocating a second buffer memory to receive from the persistent storage medium additional data blocks based on the actual bit rate to a user, with the data blocks in the second buffer memory having the block size; and transmitting the additional data blocks from the persistent storage medium to the second buffer memory when an estimated transmit time for streaming a portion of the data blocks remaining in the first buffer to a user is approximately equal to a time required to transfer the additional data blocks from the persistent storage medium into the second buffer.
- 2. The method of claim 1, wherein the transfer characteristic is a maximum bit rate for the file.
- 3. The method of claim 2, wherein allocating data blocks on the persistent storage medium includes
defining data blocks that have at least two block types; associating a first block type with a direct block comprising the data blocks and associating a second block type with an indirect block comprising a pointer to a plurality of other direct blocks or of additional indirect blocks; and storing on the persistent storage medium a contiguous sequence of at least the blocks that are addressed by the pointer.
- 4. The method of claim 3, wherein the block size of the additional direct blocks is greater than the block size of at least one of the indirect blocks and the blocks of the first block type.
- 5. Device for allocating data blocks for streaming a file, the device comprising:
a persistent storage medium storing the data blocks of the file, said data blocks having a block size allocated related to a data transfer characteristic; a first buffer memory that receives the data blocks from the persistent storage medium, said data blocks in the first buffer memory having the block size; a second buffer memory that receives additional data blocks from the persistent storage medium, said data blocks in the second buffer memory having the block size, wherein the additional data are received in the second buffer memory when an estimated transmit time for streaming a portion of the data blocks remaining in the first buffer to a user is approximately equal to a time required to transfer the additional data blocks from the persistent storage medium into the second buffer.
- 6. The device of claim 5, wherein the transfer characteristic is a maximum bit rate for the file.
- 7. The device of claim 5, wherein the persistent storage medium is a disk storage medium.
- 8. The device of claim 5, wherein the first buffer memory and the second buffer memory are volatile memory devices.
- 9. The device of claim 8, wherein the volatile memory devices comprise random access memory (RAM).
- 10. The device of claim 5, wherein the block size includes a plurality of block sizes, said block sizes organized in an inode structure and determined by at least one of a maximum streaming rate of the file and a maximum seek time for the data blocks on the persistent storage medium.
- 11. Streaming delivery accelerator (SDA) for efficiently streaming a file, comprising:
at least one input channel that receives a content file from a content provider; at least one output channel with a predetermined streaming characteristic for streaming a cache file to a user; a persistent storage medium that caches data blocks of the content file and stores the data blocks as the cache file, said data blocks having a block size allocated related to a data transfer characteristic; a first buffer memory that receives the data blocks from the persistent storage medium, said data blocks in the first buffer memory having the block size; a second buffer memory that receives additional data blocks from the persistent storage medium, said data blocks in the second buffer memory having the block size, wherein the additional data are received in the second buffer memory when an estimated transmit time for streaming a portion of the data blocks remaining in the first buffer to the user is approximately equal to a time required to transfer the additional data blocks from the persistent storage medium into the second buffer.
- 12. The SDA of claim 11, wherein the persistent storage medium is a disk storage medium.
- 13. The SDA of claim 11, wherein the first buffer memory and the second buffer memory are volatile memory devices.
- 14. The SDA of claim 11, wherein the streaming characteristic includes a data transmission rate to the user.
- 15. The SDA of claim 11, wherein the at least one input channel operates using a first network protocol, and the at least one output channel operates using a second network protocol that is different from the first network protocol.
- 16. The SDA of claim 11, wherein the at least one input channel operates using a first network protocol, and the at least one output channel operates using a second network protocol that is identical to the first network protocol.
- 17. The SDA of claim 11, wherein the cache file stored in the persistent medium device is stored as a canonical file.
- 18. The SDA of claim 11, wherein data blocks of the stored cache file include checksum representative of payload data.
- 19. The SDA of claim 11, wherein the data blocks include a checksum, and wherein the checksum received with the content file is used for computing a checksum of the cache file streamed to the user.
CROSS-REFERENCE TO OTHER PATENT APPLICATIONS
[0001] This application claims the benefit of U.S. provisional applications No. 60/284,973, filed Apr. 19, 2001, and No. 60/289,409, filed May 8, 2001, the entire disclosures of which are incorporated herein by reference.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60284973 |
Apr 2001 |
US |
|
60289409 |
May 2001 |
US |