IP Library Granted Patent US 9,794,318
Granted Patent B2
US 9,794,318 · App. 14/632,670 · Granted Oct 17, 2017

Video distribution system including progressive playback

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,794,318
App. No.
14/632,670
Granted
Oct 17, 2017
Kind
B2
Abstract

A receiver driven approach for playback of remote content is described. One embodiment includes obtaining information concerning the content of the media file from the remote server, identifying a starting location within the media sequence, identifying byte ranges of the media file corresponding to media required to play the media sequence from the starting location, requesting the byte ranges required to play the media sequence from the starting location, buffering received bytes of information pending commencement of playback, playing back the buffered bytes of information, receiving a user instruction, identifying byte ranges of the media file corresponding to media required to play the media sequence in accordance with the user instruction, flushing previous byte range requests, and requesting the byte ranges required to play the media in accordance with the user instruction.

Claims (29)

1. A method for obtaining media from a media file for playback on a playback device from a remote server, the media formatted to represent media as chunks, comprising:

download an index from a remote media file, using a playback engine implemented on the playback device, wherein the index is used to convert a chunk reference into a specific HTTP request for use in downloading;

request chunks for downloading based upon a received instruction and maintain a queue of the requested chunks, using the playback engine implemented on the playback device, wherein the requested chunks are downloaded by identifying media chunks corresponding to a sequence of key frames identified for the received instruction;

receive a requested chunk and remove the received chunk from the queue of requested chunks, using the playback engine implemented on the playback device;

maintain a playback queue of received chunks for playback pending commencement of playback by the playback device, using the playback engine implemented on the playback device; and

provide chunks maintained in the playback queue to a decoder to enable playing of the media by the playback device, using the playback engine implemented on the playback device.

2. The method of claim 1 , wherein the chunks are requested based upon an earliest deadline first selection strategy.

3. The method of claim 1 , wherein chunks are requested prior to the downloading of the entire index.

4. The method of claim 1 , wherein chunks from a start of a media sequence are downloaded simultaneously as the index is downloaded.

5. The method of claim 1 , wherein playing of the media comprises determining a sufficient amount of the media has been downloaded, wherein a buffered length is determined by a length of a playback list shared with the downloaded chunks.

6. The method of claim 1 , wherein the queue of requested chunks is a list of index entries for the requested chunks.

7. The method of claim 1 , further comprising polling the download status of the requested chunks.

8. The method of claim 1 , wherein the received instruction is a trick play instruction and requesting only key frames that are spaced throughout the media sequence at a timing determined by a rate of the trick play instruction.

9. The method of claim 8 , wherein the spacing is a multiple of a trick play frame rate.

10. A playback device for streaming media content, the playback device comprising:

at least one hardware processor that is configured to:

download an index from a remote media file, wherein the index is used to convert a chunk reference into a specific HTTP request for use in downloading;

request chunks for downloading based upon a received instruction and maintain a queue of the requested chunks, wherein the requested chunks are downloaded by identifying media chunks corresponding to a sequence of key frames identified for the received instruction;

receive a requested chunk and remove the received chunk from the queue of requested chunks;

maintain a playback queue of received chunks for playback pending commencement of playback by the playback device; and

provide chunks maintained in the playback queue to a decoder to enable playing of the media by the playback device.

11. The playback device of claim 10 , wherein the chunks are requested based upon an earliest deadline first selection strategy.

12. The playback device of claim 10 , wherein chunks are requested prior to the downloading of the entire index.

13. The playback device of claim 10 , wherein chunks from a start of a media sequence are downloaded simultaneously as the index is downloaded.

14. The playback device of claim 10 , wherein playing of the media comprises determining a sufficient amount of the media has been downloaded, wherein a buffered length is determined by a length of a playback list shared with the downloaded chunks.

15. The playback device of claim 10 , wherein the queue of requested chunks is a list of index entries for the requested chunks.

16. The playback device of claim 10 , further comprising polling the download status of the requested chunks.

17. The playback device of claim 10 , wherein the received instruction is a trick play instruction and requesting only key frames that are spaced throughout the media sequence at a timing determined by a rate of the trick play instruction.

18. The playback device of claim 17 , wherein the spacing is a multiple of a trick play frame rate.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 036001 FRAME: 0525. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 2, 2020
From: DIVX, INC.
To: DIVX, LLC
Reel/Frame 052309/0976 →
CHANGE OF PRINCIPAL PLACE OF BUSINESS Recorded Mar 5, 2019
From: DIVX, LLC
To: DIVX, LLC
Reel/Frame 050407/0104 →
CHANGE OF NAME Recorded Mar 5, 2018
From: DIVX CF HOLDINGS LLC
To: DIVX, LLC
Reel/Frame 045498/0560 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2018
From: SONIC IP, INC.; DIVX, LLC
To: DIVX CF HOLDINGS LLC
Reel/Frame 045310/0020 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 6, 2015
From: OSBORNE, ROLAND
To: DIVX, INC.
Reel/Frame 036001/0501 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 6, 2015
From: DIVX, LLC
To: SONIC IP, INC.
Reel/Frame 036001/0539 →
CHANGE OF NAME Recorded Jul 6, 2015
From: DIVX, INC.
To: DIVX, LLC
Reel/Frame 036001/0525 →