IP Library Granted Patent US 10,191,913
Granted Patent B2
US 10,191,913 · App. 15/389,878 · Granted Jan 29, 2019

System and method for efficiently providing media and associated metadata

Inventors: Eric Hoffert (South Orange, CA); Ludvig Strigeus (Gothenburg, SE); Andreas Oman (Stockholm, SE)
Assignee: Spotify AB
G06F17/30153G06F17/3002G06F17/30483G06F17/30598
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 10,191,913
App. No.
15/389,878
Granted
Jan 29, 2019
Kind
B2
Abstract

An electronic device obtains a file header for a file that corresponds to a plurality of clusters. The file header includes a cluster index that enables coarse searching within the file. At least one of the file header and the file omits information that is known to or calculable by the device for extracting content from the file. In response to receiving a request to seek to a position within the file, the device identifies a cluster that includes content that corresponds to the position based on the cluster index and obtains a cluster header that enables fine searching within the cluster. After obtaining the cluster header, the device identifies, within the cluster, the content that corresponds to the position based on the content index and provides at least a portion of content corresponding to the file to a presentation device, starting with the content that corresponds to the position.

Claims (87)

1. A method of seeking within media content, comprising:

at an electronic device with one or more processors and memory:

obtaining, from a remote device, a file header for a file that corresponds to a plurality of clusters, wherein:

the file header includes a cluster index that enables coarse searching within the file, and

the file header omits information that is known to or calculable by the electronic device for extracting content from the file, wherein the omitted information was previously removed at the remote device from the file header before the file header was obtained by the electronic device;

generating the omitted information that was removed at the remote device;

adding the omitted information into the file header;

receiving a request to seek to a position within the file;

in response to receiving the request:

identifying a cluster of the plurality of clusters that includes content that corresponds to the position based on the cluster index;

obtaining a cluster header associated with the cluster based on information retrieved from the cluster index, wherein the cluster header includes a content index that enables fine searching within the cluster;

obtaining cluster data associated with the cluster; and

after obtaining the cluster header, identifying, within the cluster, the content that corresponds to the position based on the content index; and

after identifying the content that corresponds to the position and adding the omitted information into the file header, providing at least a portion of content corresponding to the file to a presentation device for presentation to a user, starting with the content that corresponds to the position.

2. The method of claim 1 , wherein:

the file includes video data;

a respective cluster of the plurality of clusters corresponds to a group of frames with a respective keyframe; and

the content that corresponds to the position corresponds to one or more frames in the video data.

3. The method of claim 1 , wherein:

the file includes audio data;

a respective cluster of the plurality of clusters corresponds to a group of audio samples or audio frames; and

the content that corresponds to the position corresponds to one or more audio samples or audio frames in the audio data.

4. The method of claim 1 , wherein the file header further includes a global header that provides content description information that enables the electronic device to prepare content of the file for presentation to the user.

5. The method of claim 1 , wherein the cluster index does not enable fine searching within the file.

6. The method of claim 1 , wherein the omitted information was removed from the file header in accordance with a determination that the omitted information is duplicative of information that was included elsewhere in at least one of the file header and the file.

7. The method of claim 1 , wherein the omitted information was removed from the file header in accordance with a determination that the omitted information is codec or file-format information.

8. The method of claim 1 , wherein:

the file header is compressed; and

the method further comprises, at the electronic device, prior to using the cluster index:

decompressing the file header, and

identifying the cluster index in the decompressed file header.

9. The method of claim 1 , wherein:

the content index in the cluster header for the cluster includes a sequence of content entries including a first content entry that corresponds to first content followed by a second content entry that corresponds to second content followed by a third content entry that corresponds to third content;

the second content entry includes information that identifies a position of the second content based on a distance between corresponding portions of the first content and the second content; and

the third content entry includes information that identifies a position of the third content based on a distance between corresponding portions of the second content and the third content.

10. The method of claim 1 , wherein:

the content index in the cluster header for the cluster includes a sequence of content entries including a first content entry that corresponds to first content followed by a second content entry that corresponds to second content followed by a third content entry that corresponds to third content; and

the third content entry includes information that identifies a position of the third content based on a difference between:

a distance between corresponding portions of the first content and the second content; and

a distance between corresponding portions of the second content and the third content.

11. The method of claim 1 , wherein:

the content index for the cluster includes:

an overall size of the cluster;

a plurality of entries for corresponding content that include information from which sizes of the corresponding content can be determined; and

a respective entry for respective content that does not include information from which a size of the respective content can be determined; and

the method further comprises, at the electronic device, determining a size of the respective content based on the overall size of the cluster and the sizes of the content corresponding to the plurality of entries in the cluster other than the respective entry.

12. The method of claim 1 , wherein:

the file header is obtained from a first location; and

the content corresponding to the file is obtained from a second location distinct from the first location.

13. The method of claim 1 , wherein:

the cluster header is obtained in a first location; and

the cluster data is obtained from one or more locations different from the first location.

14. The method of claim 1 , wherein the plurality of clusters have a predefined size.

15. The method of claim 1 , wherein:

a first cluster of the plurality of clusters has a first size; and

a second cluster of the plurality of clusters has a second size different from the first size.

16. The method of claim 1 , wherein:

the coarse searching comprises keyframe-based seeking; and

the fine searching comprises frame-based seeking.

17. A computer system, comprising:

one or more processors; and

memory storing one or more programs configured to be executed by the one or more processors, the one or more programs including instructions for:

obtaining, from a remote device, a file header for a file that corresponds to a plurality of clusters, wherein:

the file header includes a cluster index that enables coarse searching within the file, and

the file header omits information that is known to or calculable by the electronic device for extracting content from the file, wherein the omitted information was previously removed at the remote device from the file header before the file header was obtained by the electronic device;

generating the omitted information that was removed at the remote device;

adding the omitted information into the file header;

receiving a request to seek to a position within the file;

in response to receiving the request:

identifying a cluster of the plurality of clusters that includes content that corresponds to the position based on the cluster index;

obtaining a cluster header associated with the cluster based on information retrieved from the cluster index, wherein the cluster header includes a content index that enables fine searching within the cluster;

obtaining cluster data associated with the cluster; and

after obtaining the cluster header, identifying, within the cluster, the content that corresponds to the position based on the content index; and

after identifying the content that corresponds to the position and adding the omitted information into the file header, providing at least a portion of content corresponding to the file to a presentation device for presentation to a user, starting with the content that corresponds to the position.

18. A non-transitory computer-readable storage medium storing one or more programs, the one or more programs comprising instructions, which, when executed by an electronic device with one or more processors, cause the electronic device to:

obtain, from a remote device, a file header for a file that corresponds to a plurality of clusters, wherein:

the file header includes a cluster index that enables coarse searching within the file, and

the file header omits information that is known to or calculable by the electronic device for extracting content from the file, wherein the omitted information was previously removed at the remote device from the file header before the file header was obtained by the electronic device;

generate the omitted information that was removed at the remote device;

add the omitted information into the file header;

receive a request to seek to a position within the file;

in response to receiving the request:

identify a cluster of the plurality of clusters that includes content that corresponds to the position based on the cluster index;

obtain a cluster header associated with the cluster based on information retrieved from the cluster index, wherein the cluster header includes a content index that enables fine searching within the cluster;

obtain cluster data associated with the cluster; and

after obtaining the cluster header, identify, within the cluster, the content that corresponds to the position based on the content index; and

after identifying the content that corresponds to the position and adding the omitted information into the file header, provide at least a portion of content corresponding to the file to a presentation device for presentation to a user, starting with the content that corresponds to the position.

Continuity (3)
Continuation 14134950 · Dec 19, 2013
Provisional Application 61881353 · Sep 23, 2013
Related Publication 20170177605A1 · Jun 22, 2017