IP Library Granted Patent US 7,886,069
Granted Patent B2
US 7,886,069 · App. 11/970,493 · Granted Feb 8, 2011

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 7,886,069
App. No.
11/970,493
Granted
Feb 8, 2011
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 (74)

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

obtaining information concerning the content of the media file from the remote server;

identifying a starting location within the media sequence by a 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;

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

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 by the playback device;

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;

flushing previous byte range requests;

requesting only the portions of the required byte ranges that have not already been downloaded from the media server to play the media in accordance with the user instruction on the playback device from the remote server.

2. The method of claim 1 , 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.

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

4. 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.

5. 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.

6. 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.

7. 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.

8. 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 the network;

wherein the client is configured to send requests using byte ranges identified by the client for at least one portion of the media file to the media server;

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

wherein the client is configured to receive user instructions concerning the playback of the media file and to request portions of the media file using identified byte ranges corresponding to the received user instructions that have not been downloaded and that are required to comply with the playback instructions from the media server; and

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

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

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

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

10. The system of claim 8 , wherein the client is configured to maintain a queue of requested portions of the media file.

11. The system of claim 10 , wherein:

the client and the server are configured to communicate via at least one connection; and

the client is configured to flush the queue of requested portions of the media file and break at least one of the connections in response to the receipt of a predetermined user instruction.

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

13. The system of claim 8 , 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 received from a remote server;

a network connection;

a download manager configured to asynchronously request at least one byte range of a remotely stored media file from a remote server via the network connection;

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 translate requests for portions of a remotely stored media file to byte ranges and to provide the byte ranges to the download manager to include in a request to a remote server; and

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

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

15. The media player of claim 14 , wherein the download manager is configured to maintain a queue of requested byte ranges.

16. The media player of claim 15 , wherein the download manager is configured to flush the queue.

17. 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.

18. The media player of claim 17 , 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.

19. The media player of claim 17 , 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.

20. The media player of claim 17 , 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 (10)
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 →
PATENT RELEASE Recorded Jul 22, 2014
From: JPMORGAN CHASE BANK N.A., AS COLLATERAL AGENT
To: ALL MEDIA GUIDE, LLC; DIVX, LLC; SONIC SOLUTIONS LLC
Reel/Frame 033378/0685 →
RELEASE OF SECURITY INTEREST Recorded Apr 9, 2014
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DIVX, LLC
Reel/Frame 032645/0559 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2013
From: DIVX, LLC
To: SONIC IP, INC.
Reel/Frame 031713/0032 →
RELEASE OF SECURITY INTEREST Recorded Jun 11, 2013
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: ALL MEDIA GUDE, LLC; DIVX, LLC; SONIC SOLUTIONS LLC
Reel/Frame 030591/0534 →
SECURITY AGREEMENT Recorded Mar 25, 2011
From: ALL MEDIA GUIDE, LLC; DIVX, LLC; SONIC SOLUTIONS LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 026026/0111 →
MERGER Recorded Dec 14, 2010
From: DIVX, INC.
To: DIVX, LLC
Reel/Frame 025487/0578 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 22, 2008
From: OSBORNE, ROLAND
To: DIVX, INC.
Reel/Frame 020547/0001 →