IP Library Granted Patent US 7,975,225
Granted Patent B2
US 7,975,225 · App. 11/743,482 · Granted Jul 5, 2011

Iteratively locating a position corresponding to a desired seek time

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,975,225
App. No.
11/743,482
Granted
Jul 5, 2011
Kind
B2
Abstract

Techniques enable locating a position within a file that corresponds to a desired seek time without having access to an index specifying the desired seek time's position. An iterative process may be used to estimate the position that corresponds to the desired seek time. The process may iterate through multiple estimations until a difference between a time corresponding to an estimated position and the desired seek time is within an acceptable amount or until the process reaches an iteration threshold. The file may then be played beginning at or near the desired seek time. The techniques may therefore allow a user to seek within a file while the user progressively downloads or streams the file.

Claims (71)

1. A method comprising:

receiving a request to seek to a desired time within a file;

determining a first estimated time within the file responsive to the receiving of the request, the first estimated time comprising an estimate of the desired time;

determining a second estimated time within the file with use of the first estimated time, the second estimated time also comprising an estimate of the desired time; and

determining a successive estimated time within the file with use of a previously estimated time and a selected known time selected from a group of known times within the file, the successive estimated time also comprising an estimate of the desired time, wherein:

when the previously estimated time is less than the desired time, the selected known time is selected that is greater than the desired time and has a known position that most closely brackets the desired time with a known position of the previously estimated time; and

when the previously estimated time is greater than the desired time, the selected known time is selected that is less than the desired time and has a known position that most closely brackets the desired time with a known position of the previously estimated time.

2. A method as recited in claim 1 , further comprising progressively downloading or streaming the file and wherein the request to seek to the desired time within the file is received before the file finishes downloading or streaming.

3. A method as recited in claim 2 , wherein the request to seek to the desired time within the file is received before an index of the file is received, the index specifying a position of the desired time.

4. A method as recited in claim 1 , wherein the determining of the first estimated time comprises:

calculating a bitrate for the file;

multiplying the bitrate for the file by the desired time to determine an estimated position that estimates a desired position corresponding to the desired time;

retrieving a data sample at the estimated position; and

extracting the first estimated time from the estimated position.

5. A method as recited in claim 1 , wherein the determining of the second estimated time comprises:

determining a first known time at a known position that most closely brackets the desired time with a known position of the first estimated time, the first known time being:

greater than the desired time when the first estimated time is less than the desired time; or

less than the desired time when the first estimated time is greater than the desired time;

calculating a bitrate for a portion of the file between the first estimated time and the first known time;

multiplying the bitrate for the portion by the desired time to determine an estimated position that estimates a desired position that corresponds to the desired time;

retrieving a data sample at the estimated position; and

extracting the second estimated time from the estimated position.

6. A method as recited in claim 1 , wherein determining the successive estimated time occurs iteratively until: a time between an estimated time and the desired time is less than a tolerance zone, or an iteration threshold is reached.

7. A method as recited in claim 6 , wherein determining the successive estimated time comprises determining a final estimated time that estimates the desired time;

determining that: a time between the final estimated time and the desired time is less than the tolerance zone, or that the iteration threshold has been reached; and

playing the file beginning at the final estimated time or at the desired time.

8. A method as recited in claim 1 , wherein the determining of the successive estimated time comprises:

calculating a bitrate for a portion of the file between the previously estimated time and the selected known time;

multiplying the bitrate for the portion by the desired time to determine an estimated position that estimates a desired position that corresponds to the desired time;

retrieving a data sample at the estimated position; and

extracting the successive estimated time from the estimated position.

9. One or more computer-readable media storing computer-executable instructions that, when executed on one or more processors, performs acts comprising:

receiving a request to locate a desired time corresponding to a desired position within a file; and

locating the desired position within the file by iteratively estimating the desired position and without having access to an index specifying where the desired position resides within the file, the locating the desired position comprising:

determining a first estimated time within the file responsive to the receiving of the request, the first estimated time comprising an estimate of the desired time;

determining a second estimated time within the file with use of the first estimated time, the second estimated time also comprising an estimate of the desired time; and

iteratively estimating the desired position until a time between an estimated time and the desired time is less than a tolerance zone or an iteration threshold is reached, the iteratively estimating comprising:

determining a successive estimated time within the file with use of a previously estimated time and a known time selected from a group of known times within the file, the successive estimated time comprising an estimate of the desired time, wherein:

when the previously estimated time is less than the desired time, the known time is selected that is greater than the desired time and has a known position that most closely brackets the desired time with a known position of the previously estimated time; and

when the previously estimated time is greater than the desired time, the known time is selected that is less than the desired time and has a known position that most closely brackets the desired time with a known position of the previously estimated time.

10. One or more computer-readable media as recited in claim 9 , wherein the file comprises data within an advanced systems format (ASF) container.

11. One or more computer-readable media as recited in claim 9 , the determining the successive estimated time comprising:

calculating a bitrate for a portion of the file between the previously estimated time and the known time;

multiplying the bitrate for the portion by the desired time to determine an estimated position that estimates the desired position;

retrieving a data sample at the estimated position; and

extracting the successive estimated time from the estimated position.

12. A method comprising:

receiving a request to seek to a desired time within a file;

determining a first estimated time within the file responsive to the receiving of the request, the first estimated time comprising an estimate of the desired time;

determining a second estimated time within the file with use of the first estimated time, the second estimated time also comprising an estimate of the desired time; and

determining a successive estimated time within the file with use of a previously estimated time and a selected known time selected from a group of known times within the file, the successive estimated time also comprising an estimate of the desired time, wherein:

when the previously estimated time is less than the desired time, the selected known time is selected that is greater than the desired time and that most closely brackets the desired time with the previously estimated time; and

when the previously estimated time is greater than the desired time, the selected known time is selected that is less than the desired time and that most closely brackets the desired time with the previously estimated time.

13. A method as recited in claim 12 , further comprising progressively downloading or streaming the file and wherein the request to seek to the desired time within the file is received before the file finishes downloading or streaming.

14. A method as recited in claim 12 , wherein the determining of the first estimated time comprises:

calculating a bitrate for the file;

multiplying the bitrate for the file by the desired time to determine an estimated position that estimates a desired position corresponding to the desired time;

retrieving a data sample at the estimated position; and

extracting the first estimated time from the estimated position.

15. A method as recited in claim 12 , wherein the determining of the second estimated time comprises:

determining a first known time that most closely brackets the desired time with the first estimated time, the first known time being:

greater than the desired time when the first estimated time is less than the desired time; or

less than the desired time when the first estimated time is greater than the desired time;

calculating a bitrate for a portion of the file between the first estimated time and the first known time;

multiplying the bitrate for the portion by the desired time to determine an estimated position that estimates a desired position that corresponds to the desired time;

retrieving a data sample at the estimated position; and

extracting the second estimated time from the estimated position.

16. A method as recited in claim 12 , wherein determining the successive estimated time occurs iteratively until: a time between an estimated time and the desired time is less than a tolerance zone, or an iteration threshold is reached.

17. A method as recited in claim 16 , wherein determining the successive estimated time comprises determining a final estimated time that estimates the desired time and determining that:

a time between the final estimated time and the desired time is less than the tolerance zone; or

that the iteration threshold has been reached; and playing the file beginning at the final estimated time or at the desired time.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034542/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 13, 2007
From: LI, LI; KROYMANN, DAN; WEISS, REBECCA C.; ZHANG, WENBO
To: MICROSOFT CORPORATION
Reel/Frame 019429/0080 →