IP Library › Granted Patent US 11,290,520
Granted Patent B1
US 11,290,520 · App. 15/083,198 · Granted Mar 29, 2022

Video and audio demultiplexing from a file stored in a remote storage medium

Inventors: Thomas Jason Dytko (Portland, OR); Michael James Henry (Damascus, OR); David Scott Montgomery (Portland, OR); Ryan Paul Hegar (Happy Valley, OR)
Assignee: Amazon Technologies, Inc.
H04L67/06H04L67/1097H04L67/2842
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 11,290,520
App. No.
15/083,198
Granted
Mar 29, 2022
Kind
B1
Abstract

A first set of blocks is caused, by a first computer system, to be downloaded from a file located on a second computer system. A second set of blocks to download from the file is identified, based at least in part on the first set of blocks. A subset of the second set of blocks that are not in a cache of the first computer system are determined. For each determined block in the subset, an available thread is assigned from a thread pool to the determined block, the available thread is caused to download, in concurrence with blocks being downloaded by threads assigned to other determined blocks of the subset, the determined block from a second computer system into the cache of the first computer system.

Claims (66)

1. A computer-implemented method, comprising:

under the control of one or more computer systems that execute instructions,

in response to receipt of a first request for a first amount of content from a media file stored at a file storage location:

determining a first block of the content and a second block of the content absent from a local cache;

producing a first transcoded block by:

obtaining, using a first thread of a set of threads, the first block from the media file; and

demultiplexing and transcoding at least a portion of the first block to produce the first amount of content;

obtaining, using a second thread of the set of threads, the second block from the media file;

providing the first amount of content in response to the first request;

storing the second block in a local cache as a cached second block; and

in response to receiving a second request for a second amount of the content from the media file:

demultiplexing and transcoding at least a portion of the cached second block from the local cache to produce the second amount of the content; and

providing the second amount of the content in response to the second request.

2. The computer-implemented method of claim 1 , further comprising, in further response to receiving the first request:

obtaining sample content from the media file;

demultiplexing the sample content to, at least in part, determine an encoding format associated with at least a portion of the sample content; and

instantiating a transcoder for transcoding the first block.

3. The computer-implemented method of claim 1 , wherein determining the second block of the content is based at least in part on a read-ahead value.

4. The computer-implemented method of claim 3 , wherein:

the first block is of a first block size;

the second block is of a second block size; and

one or more of the read-ahead value, the first block size, the second block size, or a size of the local cache are configurable by a user associated with the first request.

5. A system, comprising:

one or more hardware processors; and

memory including instructions that, as a result of execution by the one or more hardware processors, cause the system to:

receive a request, via an interface, for non-speculative data;

if the non-speculative data is not determined to be present in a local cache:

determine a first thread; and

using the first thread, obtain, the non-speculative data from a file storage location;

if speculative data is absent from the local cache, the speculative data identified based at least in part on the non-speculative data and a read-ahead value:

determine a second thread from a plurality of threads;

using the second thread while using the first thread, obtain obtained speculative data corresponding to the speculative data identified; and

store the obtained speculative data in the local cache; and

based at least in part on a frequency of requests for data absent from the local cache:

increase or decrease the read-ahead value, or

increase or decrease a number of available threads in the plurality of threads.

6. The system of claim 5 , wherein the instructions further cause the system to, in response to a second request for second non-speculative data, provide the second non-speculative data from the local cache if the second non-speculative data is in the local cache.

7. The system of claim 5 , wherein the instructions further include instructions that further cause the system to, if the non-speculative data is not determined to be present in a local cache, store, in the local cache, the non-speculative data obtained from the file storage location.

8. The system of claim 5 , wherein the instructions further include instructions that cause the system to determine one or more of a block size for the non-speculative data or the read-ahead value.

9. The system of claim 5 , wherein:

on a first pass of the data from the file storage location, the non-speculative data is not determined to be present in the local cache; and

on a second pass of the data from the file storage location, the non-speculative data and the speculative data are determined to be present in the local cache.

10. The system of claim 5 , wherein the local cache operates according to a least recently used policy.

11. The system of claim 5 , wherein the non-speculative data is provided without downloading an entire block of the non-speculative data from the file storage location.

12. The system of claim 5 , wherein the read-ahead value is dependent at least in part on one or more of:

a media type of the speculative data, or

a bit rate of a type of media in a file at the file storage location from which the speculative data is to be obtained.

13. A non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of being executed by one or more processors of a computer system, cause the computer system to at least:

download a first set of blocks from a file;

identify, based at least in part on the first set of blocks, a second set of blocks to download from the file;

determine a subset of the second set of blocks that are not in a cache of the computer system; and

for individual blocks in the subset:

assign an available thread from a thread pool to an individual block; and

cause the available thread to download, while other individual blocks of the subset are downloaded, the individual block into the cache of the computer system.

14. The non-transitory computer-readable storage medium of claim 13 , wherein blocks of the second set of blocks are of a fixed size that is user-configurable.

15. The non-transitory computer-readable storage medium of claim 13 , wherein the executable instructions that cause the computer system to identify the second set of blocks include executable instructions that cause the computer system to identify the second set of blocks based at least in part on a read-ahead value.

16. The non-transitory computer-readable storage medium of claim 13 , wherein:

the first set of blocks are of a first media content type;

the second set of blocks are of a second media content type different from the first media content type; and

the executable instructions that cause the computer system to identify the second set of blocks include executable instructions that cause the computer system to identify the second set of blocks based at least in part on the second media content type being synchronized with the first media content type.

17. The non-transitory computer-readable storage medium of claim 13 , wherein:

a block of the second set of blocks is interleaved with first data of a first media content type and second data of a second media content type; and

the executable instructions further cause the computer system to provide either the first data or the second data from the cache, depending on a media content type requested.

18. The non-transitory computer-readable storage medium of claim 13 , wherein the blocks in the cache are indexed according to uniform resource identifier and block number.

19. The non-transitory computer-readable storage medium of claim 13 , wherein the executable instructions further include executable instructions that cause the computer system to provide the block from the cache of the computer system to a requestor.

20. The non-transitory computer-readable storage medium of claim 19 , wherein the executable instructions that cause the computer system to provide the set of blocks include executable instructions that cause the computer system to transcode the block from a first format to a second format.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2016
From: DYTKO, THOMAS JASON; HENRY, MICHAEL JAMES; MONTGOMERY, DAVID SCOTT; HEGAR, RYAN PAUL
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 038765/0203 →
Cited By (1)
US 12,375,584