IP Library Granted Patent US 8,977,768
Granted Patent B2
US 8,977,768 · App. 12/982,413 · Granted Mar 10, 2015

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 8,977,768
App. No.
12/982,413
Granted
Mar 10, 2015
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 (76)

1. A method of progressively playing back by a playback device a media sequence stored as a media file on a remote server, comprising:

establishing at least one connection for communicating with a remote server by a playback device;

obtaining information concerning the content of the media file from the remote server, where the information includes an index identifying the location of different portions of media information within the media file, which can be used by the playback device to determine the portions of the media file to request in response to receipt of a user instruction during playback;

identifying a starting location within the media sequence by the playback device;

identifying byte ranges of the media file corresponding to media required to play the media sequence from the starting location by the playback device;

requesting the byte ranges required to play the media sequence from the starting location by the playback device from the remote server;

buffering received bytes of information pending commencement of playback by the playback device;

playing back the buffered bytes of information by the playback device;

receiving a user instruction at the playback device;

identifying byte ranges of the media file corresponding to media required to play the media sequence in accordance with the user instruction by the playback device, using the index identifying the location of different portions of media information within the media file obtained from the remote server;

flushing previous byte range requests and breaking at least one of the connections used by the playback device to communicate with the remote server by the playback device; and

requesting the byte ranges required to play the media in accordance with the user instruction by the playback device from the remote server.

2. The method of claim 1 , further comprising:

maintaining a mask of the portions of the media file that have been downloaded;

identifying that at least a portion of a byte range required to play the media in accordance with the user instruction has already been downloaded using the mask; and

requesting only the portions of byte ranges that have not already been downloaded from the media server.

3. The method of claim 2 , further comprising:

storing downloaded bytes in a data file; and

outputting the downloaded media file when all bytes of the media file have been downloaded.

4. The method of claim 3 , wherein the data file is a sparse data file.

5. The method of claim 1 , wherein:

the media file contains a plurality of media sequences and menu information; and

identifying a starting location within the media sequence further comprises:

displaying menu information;

receiving a user instruction indicative of the selection of the media sequence; and

receiving a user instruction indicative of a starting location within the media sequence.

6. The method of claim 1 , wherein:

the media sequence includes a plurality of interchangeable audio tracks;

identifying a starting location within the media sequence further comprises selecting an audio track; and

identifying byte ranges of the media file corresponding to media required to play the media sequence from the starting location further comprises selecting byte ranges that do not include the audio tracks that were not selected.

7. The method of claim 1 , wherein:

the media sequence includes a plurality of interchangeable subtitle tracks;

identifying a starting location within the media sequence further comprises selecting a subtitle track; and

identifying byte ranges of the media file corresponding to media required to play the media sequence from the starting location further comprises selecting byte ranges that do not include the subtitle tracks that were not selected.

8. The method of claim 1 , wherein:

the sequence includes key frames; and

identifying byte ranges of the media file corresponding to media required to play the media in accordance with the user instruction further comprises:

identifying a sequence of key frames in response to a predetermined user instruction; and

identifying byte ranges of the media file corresponding to the identified key frames.

9. A system for progressive playback of a media file, comprising:

a media server;

a client; and

a network;

wherein the client and the media server are configured to communicate via at least one connection of the network;

wherein the client is configured to send requests for byte ranges of the media file to the media server and maintain a queue of requested byte ranges of the media file;

wherein the server is configured to provide requested byte ranges of the media file to the client;

wherein the client is configured to receive from the media server an index identifying the location of different portions of media information within the media file, which can be used by the client to determine the portions of the media file to request in response to receipt of a user instruction during playback, and

wherein the client is configured to receive user instructions concerning the playback of the media file, flush the queue of the requested byte ranges of the media file, break at least one of the connections, and to request byte ranges of the media file that have not been downloaded and that are required to comply with the playback instructions from the media server using an index identifying the location of different portions of media information within the media file.

10. The system of claim 9 , wherein proximate portions of the media file are grouped and the groups are requested on an earliest deadline first basis.

11. The system of claim 9 , wherein:

the client is configured to store a file map and a data file;

the file map contains a mask indicating the portions of the media file that have been downloaded; and

the data file contains the downloaded portions of the media file.

12. The system of claim 11 , wherein the data file is a sparse file.

13. The system of claim 9 , wherein:

the media file includes a media sequence and an index;

the client comprises:

a playback engine configured to obtain the index and determine the portions of the media sequence required to comply with user playback instructions;

a file parser configured to use the index to map the portions of the media sequence to portions of the media file; and

a download manager configured to communicate with the media server to download portions of the media file.

14. A media player, comprising:

a user interface configured to receive user instructions;

a storage device configured to store at least one media file;

a network with at least one connection;

a download manager configured to asynchronously request at least one byte range of a file from a remotely stored media file via the at least one connection of the network, and maintain a queue of requested byte ranges;

a playback engine configured to determine portions of a remotely stored media file that must be downloaded in response to user instructions received via the user interface; and

a file parser configured to receive an index identifying the location of different portions of media information within the media file, which can be used to determine the portions of the media file to request in response to receipt of a user instruction during playback;

wherein the download manager is further configured to flush the queue of the requested byte ranges and break at least one of the connections of the network in response to receipt of a user instruction during playback;

wherein the file parser is further configured to translate requests for portions of a remotely stored media file to byte ranges using the index identifying the location of different portions of media information within the media file, and to provide the byte ranges to the download manager.

15. The media player of claim 14 , wherein:

the download manager is configured to create a status file containing a map of blocks of a media file that have been downloaded; and

the download manager is configured to create a data file in which to store blocks of a downloaded media file.

16. The media player of claim 14 , wherein the playback engine is configured to generate a menu using menu information obtained from a remote media file.

17. The media player of claim 16 , wherein the playback engine is configured to receive a selection of one of a plurality of media sequences in a remote media file via the menu.

18. The media player of claim 16 , wherein the playback engine is configured to receive a selection of one of a plurality of audio tracks for a media sequence in a remote media file via the menu.

19. The media player of claim 16 , wherein the playback engine is configured to receive a selection of a subtitle track for a media sequence in a remote media file via the menu.

Assignments (6)
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 Feb 25, 2014
From: DIVX, LLC
To: SONIC IP, INC.
Reel/Frame 032293/0557 →
CHANGE OF NAME Recorded Jan 17, 2014
From: DIVX, INC.
To: DIVX, LLC
Reel/Frame 032000/0334 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 30, 2013
From: OSBORNE, ROLAND
To: DIVX, INC.
Reel/Frame 031513/0262 →