IP Library Granted Patent US 9,253,548
Granted Patent B2
US 9,253,548 · App. 12/789,406 · Granted Feb 2, 2016

Optimizing caches for media streaming

Inventors: Viswanathan Swaminathan (Fremont, CA); Srinivas Manapragada (Fremont, CA)
Assignee: Adobe Systems Incorporated
H04N21/64738H04N21/64761H04N21/64784
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 9,253,548
App. No.
12/789,406
Granted
Feb 2, 2016
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, are described for establishing a grouping rule and a mapping protocol at a cache server system for caching fragments of a media stream that includes a timed-sequence of video frames. The fragments can be generated and identified at media source systems in accordance with a fragmenting format and an indexing protocol, respectively, which are common across the media source systems. Further, the established mapping protocol can be different from the indexing protocol. The methods include retrieving at least a portion of the fragments of the media stream by the cache server system from the media source systems. The methods also include allocating the retrieved fragments to local fragment groups at the cache server system based on the established grouping rule. The methods further include mapping the allocated fragments to the local fragment groups based on the established mapping protocol.

Claims (72)

1. A method comprising:

establishing a grouping rule and a mapping protocol at a cache server system for caching fragments of a media stream that includes a timed-sequence of video frames, the fragments generated and identified at a plurality of media source systems in accordance with a fragmenting format and an indexing protocol, respectively, which are common across the plurality of media source systems, the established mapping protocol being different from the indexing protocol;

retrieving at least a portion of the fragments of the media stream by the cache server system from one or more of the plurality of the media source systems;

allocating the retrieved fragments to local fragment groups at the cache server system based on the established grouping rule; and

mapping the allocated fragments to the local fragment groups based on the established mapping protocol, the mapping protocol creating a sparse index table corresponding to received requests for the allocated fragments.

2. The method of claim 1 , wherein the fragments of the media stream are identified by corresponding fragment numbers, and the local fragment groups are identified by corresponding local group numbers, said establishing the mapping protocol comprising:

determining a local group number of the local fragment group corresponding to an allocated fragment as a result of integer division between a corresponding fragment number and a predetermined group size; and

determining an index within the local fragment group as the corresponding fragment number modulo the predetermined group size.

3. The method of claim 1 , wherein the fragments of the media stream are identified by the corresponding fragment numbers, and the local fragment groups are identified by corresponding local group numbers, and said allocating comprises:

creating the local fragment group having the local group number and appending a predetermined number of fragments from among the retrieved fragments to the local fragment group in retrieval order; and

creating another local fragment group having a subsequent local group number and appending the predetermined number of fragments from among unallocated fragments of the retrieved fragments to the other local fragment group in retrieval order, and said establishing the mapping protocol comprises:

associating records of a data structure with the allocated fragments, each record comprising the fragment number of the allocated fragment, the local group number of a corresponding local fragment group, and the index within the corresponding local fragment group.

4. The method of claim 1 , further comprising:

establishing the grouping rule for said allocating to form the local fragment groups from the fragments that have been preemptively retrieved from one or more of the plurality of the media source systems, the preemptively retrieved fragments having the fragment numbers immediately following the fragment number requested by a client.

5. The method of claim 1 , further comprising:

establishing the grouping rule for said allocating to form the local fragment groups from the retrieved fragments of the media stream including a media asset, the retrieved fragments being encoded at different bit rates.

6. The method of claim 1 , further comprising:

storing the local fragment groups, on storage communicatively coupled with the cache server system, based on the grouping rule.

7. The method of claim 6 , further comprising:

establishing the grouping rule for said allocating to form the local fragment groups from the retrieved fragments of the media stream including the media asset based on audience popularity of the allocated fragments; and said storing comprising:

storing the local fragment groups, including popular fragments, to a portion of the storage including a high speed I/O medium, and

storing the local fragment groups, including unpopular fragments, to another portion of the storage including a low speed I/O medium.

8. The method of claim 7 , wherein said establishing comprises:

establishing the grouping rule for said allocating fragments of multiple media assets to form groups based on audience popularity of the allocated fragments.

9. The method of claim 6 , further comprising:

establishing the grouping rule for said allocating fragments of a movie to the local fragment groups and for said storing the local fragment groups based on weighted grouping criteria comprising popularity of the movie, fragment positions within the movie, popularity of the fragments, encoding bit rate of the fragments, and a storage medium's I/O speed.

10. The method of claim 6 , wherein said storing further comprises:

incorporating the local fragment groups in respective files of a file system associated with the cache server system.

11. The method of claim 1 , further comprising:

receiving a request from a client player device for a specified fragment;

determining whether the specified fragment is stored by the cache server system;

responsive to the determining being positive, transmitting the specified fragment to the client player device; and

responsive to the determining being negative, the method further comprises:

pending the request of the client player device;

requesting the specified fragment from one or more of the plurality of the media source systems;

receiving the requested specified fragment from one or more of the plurality of the media source systems;

allocating the received specific fragment to the corresponding local fragment group based on the grouping rule; and

transmitting the specific fragment to the client player device in response to the request.

12. A system comprising:

a plurality of media sources generating fragments of a video stream in accordance with a fragmenting format and an indexing protocol, which are common across the plurality of the media sources; and

multiple cache servers comprising respective storage devices and communicatively coupled with the plurality of the media sources via communication channels employing hypertext transmission protocol (HTTP), each of the multiple cache servers comprising a processor and memory, the memory comprising instructions executable by the processor to configure at least one of the multiple cache servers to:

establish a grouping rule and a mapping protocol for caching the fragments of the video stream, the established mapping protocol being different from the indexing protocol;

retrieve at least a portion of the fragments of the video stream from one or more of the plurality of the media sources;

allocate the retrieved fragments to local fragment groups based on the established grouping rule;

map the allocated fragments to the local fragment groups based on the established mapping protocol, the mapping protocol creating a sparse index table corresponding to received requests for the allocated fragments; and

store the local fragment groups on an associated storage device based on the grouping rule.

13. The system of claim 12 , wherein:

the fragments of the video stream are identified by corresponding fragment numbers, and the local fragment groups are identified by corresponding local group numbers, and

to establish the mapping protocol, at least one of the multiple cache servers is further configured to:

determine a local group number of the local fragment group corresponding to the allocated fragment as a result of integer division between the corresponding fragment number and a predetermined group size; and

determine an index within the local fragment group as the corresponding fragment number modulo the predetermined group size.

14. The system of claim 12 , wherein:

the fragments of the video stream are identified by the corresponding fragment numbers, and the local fragment groups are identified by the corresponding local group numbers, to allocate the retrieved fragments to the local fragment groups, at least one of the multiple cache servers is further configured to:

create the local fragment group having the local group number and append a predetermined number of fragments from among the retrieved fragments to the local fragment group in retrieval order; and

create another local fragment group having a subsequent local group number and append the predetermined number of fragments from among unallocated fragments of the retrieved fragments to the other local fragment group in retrieval order, and to establish the mapping protocol, each of the multiple cache servers is further configured to:

associate records of a data structure with the allocated fragments, each record comprising the fragment number of the allocated fragment, the local group number of the corresponding local fragment group, and the index within the corresponding local fragment group.

15. The system of claim 12 , wherein to store a local fragment group, at least one of the multiple cache servers is further configured to save fragments allocated to the local fragment group in a file associated with the local fragment group.

16. The system of claim 12 , wherein at least one of the multiple cache servers is further configured to:

establish the grouping rule for allocation of the fragments of a movie to the local fragment groups and for storage of the local fragment groups based on a weighted grouping criterion comprising popularity of the movie, positions of the fragments within the movie, popularity of the fragments, encoding bit rate of the fragments, and an I/O speed of the associated storage device.

17. The system of claim 12 , wherein the grouping rule includes forming the local fragment groups from fragments that have been preemptively retrieved by the cache servers from the one or more of the plurality of the media sources, wherein the preemptively retrieved fragments have the fragment numbers immediately following a requested fragment number.

18. The system of claim 12 , wherein at least one of the multiple cache servers is further configured to:

receive a request from a client player device for a specified fragment;

determine whether the specified fragment is stored on the associated storage device; and

responsive to the determination being positive, transmit the specified fragment to the client player device; and

responsive to the determination being negative:

pend the request of the client player device;

request the specified fragment from one or more of the plurality of the media sources;

receive the requested fragment from one or more of the plurality of the media sources;

allocate the received fragment to the corresponding local fragment group based on the grouping rule; and

transmit the received fragment to the client player device in response to the request.

19. The system of claim 14 , wherein the data structure is a hash table.

20. The method of claim 3 , wherein the data structure is a hash table.

Assignments (2)
CHANGE OF NAME Recorded Apr 8, 2019
From: ADOBE SYSTEMS INCORPORATED
To: ADOBE INC.
Reel/Frame 048867/0882 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2010
From: SWAMINATHAN, VISWANATHAN; MANAPRAGADA, SRINIVAS
To: ADOBE SYSTEMS INCORPORATED
Reel/Frame 024668/0666 →
Continuity (1)
Related Publication 20130166625A1 · Jun 27, 2013