IP Library Granted Patent US 11,050,808
Granted Patent B2
US 11,050,808 · App. 16/565,375 · Granted Jun 29, 2021

Systems and methods for seeking within multimedia content during streaming playback

Inventor: Roland Osborne (San Francisco, CA)
Assignee: DIVX, LLC
H04L65/604G06F16/71G06F16/739H04L65/4084H04L65/4092H04N5/76H04N5/783H04N7/17318H04N21/23406H04N21/44004H04N21/472H04N21/6587
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,050,808
App. No.
16/565,375
Granted
Jun 29, 2021
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 (45)

1. A playback device, comprising:

a processor; and

a non-volatile storage containing an application for causing the processor to perform the steps of:

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

identifying, by a client application, a starting location within the media file;

identifying, by the client application, byte ranges of the media file corresponding to media required to play the media file from the starting location;

requesting the byte ranges required to play the media file 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 file in accordance with the user instruction;

when previously requested byte ranges are no longer required, flushing the previous byte range requests;

maintaining a mask indicating byte ranges of the media file that have been downloaded;

identifying, using the mask, the byte ranges required to play the media in accordance with the user instruction that have not already been downloaded; and

requesting from the remote server in accordance with the user instruction the byte ranges required to play the media file that have been identified to not already been downloaded.

2. The playback device of claim 1 , wherein flushing previous byte range requests comprises receiving a flush request, flushing the previous byte requests, closing connection with the remote server.

3. The playback device of claim 1 , wherein the application further causes the processor to perform the steps of, after flushing previous byte range requests:

closing the connection with the remote server; and

opening a new connection with the remote server.

4. The playback device of claim 1 , wherein the information concerning the content of the media file comprises an index of the media file.

5. The playback device of claim 1 , wherein the client application and the remote server are configured to communicate via a network connection and wherein in response to the user instruction, the application further causes the processor to break the network connection.

6. The playback device of claim 1 , wherein the user instruction is an instruction for skipping between scenes.

7. The playback device of claim 1 , wherein the user instruction is a fast forward or rewind instruction.

8. The playback device of claim 1 , wherein the application further causes the processor to store a file map containing the mask indicating the portions of the media file that have been downloaded and a data file containing the downloaded portions of the media file.

9. The playback device of claim 1 , wherein the application further causes the processor to store downloaded bytes in a data file; and output the downloaded media file when all bytes of the media file have been downloaded.

10. The playback device of claim 1 , wherein the application further causes the processor to instantiate a remote file object and a partial file object, wherein the remote file object handles communications associated with requesting byte ranges of the media file from the remote server and maintains a queue of requested byte ranges; and the partial file object handles storage of the data downloaded from the remote server and establishes a temporary data path for the media file being downloaded.

11. The playback device of claim 1 , wherein the media file 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 comprises identifying a sequence of key frames in response to the user instruction, and identifying byte ranges of the media file corresponding to the identified key frames.

12. The playback device of claim 1 , wherein the application further causes the processor to send requests for at least one portion of the media file to the remote server.

13. The playback device of claim 1 , wherein the client application is configured to maintain a queue of requested portions of the media file.

14. The playback device of claim 1 , wherein the remote server is a standard HTTP server.

15. The playback device of claim 1 , wherein the information concerning the content of the media file comprises an index.

16. The playback device of claim 15 , wherein the media file is formatted using a container format that utilizes chunks so that each of the identified byte ranges corresponds to a chunk, wherein requesting the byte ranges required to play the media in accordance with the user instruction comprises maintaining a list of index entries for requested chunks.

17. A method of playing back content on a playback device, comprising:

obtaining information concerning the content of a media file from a remote server system using the playback device;

identifying, by a client application, a starting location within the media file;

identifying, by the client application, byte ranges of the media file corresponding to media required to play the media file from the starting location;

requesting the byte ranges required to play the media file 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 file in accordance with the user instruction;

when previously requested byte ranges are no longer required, flushing previous byte range requests;

maintaining a mask indicating byte ranges of the media file that have been downloaded;

identifying, using the mask, the byte ranges required to play the media in accordance with the user instruction have not already been downloaded; and

requesting from the remote server in accordance with the user instruction the byte ranges required to play the media file that have been identified to not already been downloaded.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2020
From: OSBORNE, ROLAND
To: DIVX, INC.
Reel/Frame 052982/0055 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2020
From: DIVX, LLC
To: SONIC IP, INC.
Reel/Frame 052982/0087 →
MERGER AND CHANGE OF NAME Recorded Jun 18, 2020
From: DIVX, INC.; DIVX, LLC
To: DIVX, LLC
Reel/Frame 052982/0092 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2020
From: SONIC IP, INC.
To: DIVX CF HOLDINGS LLC
Reel/Frame 052982/0104 →
CHANGE OF NAME Recorded Jun 18, 2020
From: DIVX CF HOLDINGS LLC
To: DIVX, LLC
Reel/Frame 052982/0123 →
Continuity (7)
Continuation 16136149 · Sep 19, 2018
Continuation 15682379 · Aug 21, 2017
Continuation 14632670 · Feb 26, 2015
Continuation 12982413 · Dec 30, 2010
Continuation 11970493 · Jan 7, 2008
Provisional Application 60883659 · Jan 5, 2007
Related Publication 20200007601A1 · Jan 2, 2020
Cited By (2)
US 12,267,380 US 12,470,771