Method and apparatus for prefetching data
First Claim
Patent Images
1. A method for pre-fetching data, the method comprising:
- ascertaining, using a computer, information regarding a data file, wherein the ascertainingcomprisesaccessing a download speed of a network connection, a bit rate, a file size of the data file, and a length of play, andcomputing a number of data blocks of the data file to buffer, wherein the computing is performed, at least in part, by multiplying the download speed with the length of play to calculate an intermediate result, and subtracting the intermediate result from the file size, andthe number of data blocks is greater than zero;
providing, using the computer, the information to an application programming interface (API);
in response to receiving the information, using the API to establish a first set of pre-fetch parameters, whereinthe first set of pre-fetch parameters comprises at least two of alphabetical order, numerical order, an order according to a play list, and an order following instructions from the API,the first set of pre-fetch parameters is established in accordance with a first pre-fetch technique, andthe first pre-fetch technique is chosen from a plurality of pre-fetch techniques,attempting to pre-fetch one or more of a plurality of data blocks via a network from the data file using the computer in accordance with the first set of pre-fetch parameters, whereinthe data file comprises the plurality of data blocks;
determining whether the attempting is successful;
in response to a determination that the attempting was unsuccessful, establishing a second set of pre-fetch parameterswhereinthe second set of pre-fetch parameters comprises at least two of alphabetical order, numerical order, an order according to a play list, and an order following instructions from the API,the second set of pre-fetch parameters is not identical to the first set of pre-fetch parameters,the second set of pre-fetch parameters is established in accordance with a second pre-fetch technique, andthe second pre-fetch technique is chosen from the plurality of pre-fetch techniques using the API; and
pre-fetching, using the computer, one or more of the plurality of data blocks from the data file, whereinthe pre-fetching is performed in accordance with either the first set of pre-fetch parameters or the second set of pre-fetch parameters, andthe pre-fetching is performed via the network;
accessing the data file using the computer, whereinthe data file is stored on a storage device, andthe storage device is communicatively coupled to the computer via a network; and
buffering the one or more pre-fetched data blocks, wherein the buffering comprises storing the one or more pre-fetched data blocks in a memory on the computer.
8 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for pre-fetching data to be streamed from a data storage to a user computer comprising the steps of determining information regarding a file type of a data file, establishing pre-fetch parameters in response to the information, accessing the data file and pre-fetching data blocks from the data file in accordance with the pre-fetch parameters is described.
38 Citations
16 Claims
-
1. A method for pre-fetching data, the method comprising:
- ascertaining, using a computer, information regarding a data file, wherein the ascertaining
comprises accessing a download speed of a network connection, a bit rate, a file size of the data file, and a length of play, and computing a number of data blocks of the data file to buffer, wherein the computing is performed, at least in part, by multiplying the download speed with the length of play to calculate an intermediate result, and subtracting the intermediate result from the file size, and the number of data blocks is greater than zero; providing, using the computer, the information to an application programming interface (API); in response to receiving the information, using the API to establish a first set of pre-fetch parameters, wherein the first set of pre-fetch parameters comprises at least two of alphabetical order, numerical order, an order according to a play list, and an order following instructions from the API, the first set of pre-fetch parameters is established in accordance with a first pre-fetch technique, and the first pre-fetch technique is chosen from a plurality of pre-fetch techniques, attempting to pre-fetch one or more of a plurality of data blocks via a network from the data file using the computer in accordance with the first set of pre-fetch parameters, wherein the data file comprises the plurality of data blocks; determining whether the attempting is successful; in response to a determination that the attempting was unsuccessful, establishing a second set of pre-fetch parameters wherein the second set of pre-fetch parameters comprises at least two of alphabetical order, numerical order, an order according to a play list, and an order following instructions from the API, the second set of pre-fetch parameters is not identical to the first set of pre-fetch parameters, the second set of pre-fetch parameters is established in accordance with a second pre-fetch technique, and the second pre-fetch technique is chosen from the plurality of pre-fetch techniques using the API; and pre-fetching, using the computer, one or more of the plurality of data blocks from the data file, wherein the pre-fetching is performed in accordance with either the first set of pre-fetch parameters or the second set of pre-fetch parameters, and the pre-fetching is performed via the network; accessing the data file using the computer, wherein the data file is stored on a storage device, and the storage device is communicatively coupled to the computer via a network; and buffering the one or more pre-fetched data blocks, wherein the buffering comprises storing the one or more pre-fetched data blocks in a memory on the computer. - View Dependent Claims (2, 3, 4, 5, 13, 14, 15, 16)
- ascertaining, using a computer, information regarding a data file, wherein the ascertaining
-
6. An apparatus for pre-fetching data, comprising:
-
a storage device comprising a data file, wherein the data file comprises a plurality of data blocks; a file system used by an application for accessing the data file via a network; an application programming interface (API) for receiving, via the network, information describing the data file, wherein the information comprises a download speed of a network connection, a bit rate, a file size of the data file, and a length of play, and the information is used to compute a number of data blocks of the data file to buffer, wherein the number is computed, at least in part, by multiplying the download speed with the length of play to calculate an intermediate result, and subtracting the intermediate result from the file size, and the number is greater than zero; in response to the receiving of the information, establishing a first set of pre-fetch parameters, wherein the first set of pre-fetch parameters comprises at least two of alphabetical order, numerical order, an order according to a play list, and an order following instructions from the API, the first set of pre-fetch parameters is chosen in accordance with a first pre-fetch technique, and the first pre-fetch technique is chosen from a plurality of pre-fetch techniques; attempting to pre-fetch at least one of the plurality of data blocks via the network, wherein the attempting comprises attempting to pre-fetch the at least one of the plurality of data blocks using the first set of pre-fetch parameters; determining whether the attempting is successful; in response to a determination that the attempting was unsuccessful, establishing a second set of pre-fetch parameters, wherein the second set of pre-fetch parameters comprises at least two of alphabetical order, numerical order, an order according to a play list, and an order following instructions from the API, the second set of pre-fetch parameters is not identical to the first set of pre-fetch parameters, the second set of pre-fetch parameters is chosen in accordance with a second pre-fetch technique, and the second pre-fetch technique is chosen from the plurality of pre-fetch techniques using the API; a pre-fetching module, implemented by a processor, coupled to the file system for pre-fetching, using the network, one or more of the plurality of data blocks from the data file in accordance with either the first set of pre-fetch parameters or the second set of pre-fetch parameters; and a buffer for storing the one or more pre-fetched data blocks, wherein the application accesses the one or more pre-fetched data blocks from the buffer. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A system for pre-fetching data, comprising:
-
a user computer comprising; an application for requesting a data file stored on a storage device, wherein the data file comprises a plurality of data blocks, and the storage device is communicatively coupled to the user computer via a network, determining information regarding the data file, wherein the information comprises a download speed of a network connection, a bit rate, file size of the data file, and a length of play, computing a number of data blocks of the data file to buffer, wherein the computing is performed, at least in part, by multiplying the download speed with the length of play to calculate an intermediate result, and subtracting the intermediate result from the file size, and the number of data blocks is greater than zero; an application programming interface (API) for establishing a first set of pre-fetch parameters, wherein the first set of pre-fetch parameters comprises at least two of alphabetical order, numerical order, an order according to a play list, and an order following instructions from the API, the first set of pre-fetch parameters is established in accordance with a first pre-fetch technique, and the first pre-fetch technique is chosen from a plurality of pre-fetch techniques, attempting to pre-fetch one or more of the plurality of data blocks from the data file, using the user computer in accordance with the first set of pre-fetch parameters, determining whether the attempting is successful, in response to a determination that the attempting was unsuccessful, establishing a second set of pre-fetch parameters, wherein the second set of pre-fetch parameters comprises at least two of alphabetical order, numerical order, an order according to a play list, and an order following instructions from the API, the second set of pre-fetch parameters is not identical to the first set of pre-fetch parameters, the second set of pre-fetch parameters is established in accordance with a second pre-fetch technique, and the second pre-fetch technique is chosen from the plurality of pre-fetch techniques using the API; a storage device for transmitting the data file to the user computer comprising;
a file system used by the application for accessing the data file;a pre-fetching module, implemented by a processor, coupled to the file system for pre-fetching at least one of the plurality of data blocks from the data file in accordance with either the first set of pre-fetch parameters or the second set of pre-fetch parameters; and
a buffer for storing the one or more pre-fetched data blocks, wherein the application is configured to access the one or more pre-fetched data blocks from the buffer. - View Dependent Claims (12)
-
Specification