IP Library Granted Patent US 9,800,633
Granted Patent B2
US 9,800,633 · App. 14/846,647 · Granted Oct 24, 2017

Just-in-time distributed video cache

Inventors: Erik R. Swenson (San Jose, CA); Jaime Heilpern (San Francisco, CA); Sandeep Pombra (Los Altos, CA); Ron Earley (Dublin, CA); Vadim Arshanskiy (Santa Clara, CA)
Assignee: Performance and Privacy Ireland Ltd.
H04L65/4084G06F17/30781H04L29/06027H04L65/1059H04L65/605H04L65/607H04L65/80H04L67/2842H04N21/222H04N21/2396H04N21/23103H04N21/23106H04N21/23439H04N21/64784H04W4/18
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,800,633
App. No.
14/846,647
Granted
Oct 24, 2017
Kind
B2
Abstract

A video optimizer receives a request to optimize a source file and stream the optimized file. The request may be accompanied by a key uniquely identifying the original source file to be optimized and an optimized version of the source file to stream to the client. The key uniquely identifies the source video file as it exists on an origin server to prevent transmission of modified source video and the optimized version of the source file by optimization parameters to ensure compatibility with the user device. The video optimizer queries a cache database in response to the received request, which contains references keys and locations of optimized source files among local caches in a cluster of video optimizers. The cache database responds indicates whether a matching optimized version of the source file exists in a local cache of a given video optimizer in the cluster.

Claims (55)

1. A method for streaming optimized video to a client device, the method comprising:

receiving a request to optimize an original source file from a client device, the original source file stored on an origin server and the request including a key specifying parameters for optimizing the original source file and uniquely identifying the original source file;

identifying, based on the key, a preview of an optimized version of the original source file in a local cache of a video optimization server, the preview corresponding to a first portion of the optimized version of the original source file;

generating a query, based on the key, to a cache database maintaining a plurality of reference keys corresponding to a plurality of optimized versions of source files stored on a plurality of other video optimization servers, each reference key specifying parameters of an optimized version of a source file and uniquely identifying the source file;

receiving, from the cache database, a response indicating whether the key matches a reference key maintained in the database;

receiving from the cache database, in response to a reference key matching the key, the address of another video optimizer storing a segment of the optimized version of the original source file;

stitching the first portion of the optimized version of the original source file with the segment of the optimized version of the original source file stored on the other video optimizer to generate a stitched optimized version of the original source file; and

streaming the stitched optimized version of the original source file for playback on the client device.

2. The method of claim 1 , further comprising:

storing a segment of the stitched optimized version of the original source file in the cache of the video optimizer; and

transmitting, to the cache database, instructions for updating the cache database in response to storing the segment of the stitched optimized version of the original source file stored in the video optimizer.

3. The method of claim 1 , wherein the received response indicates that different segments of the optimized version of the same original source file are stored on a plurality of different video optimizers.

4. The method of claim 3 , further comprising:

transmitting, to the plurality of different video optimizers, a request for the segment of the optimized version of the original source file stored on each video optimizer; and

stitching the different segments of the optimized version of the same original source file with the generated segment of the original source file.

5. The method of claim 1 , wherein the key comprises a source content signature, the source content signature being a hash of the original source file.

6. The method of claim 1 , wherein the cache database comprising data entries identifying a plurality of optimization server storing an optimized version of the original source file, the entries being modified through instructions transmitted to the cache database to update a location where the optimized version of the original source file is stored.

7. The method of claim 1 , further comprising:

determining a second segment of the optimized version of the original source file is not stored by the plurality of other video optimization servers;

responsive to the determination, transcoding the second segment of the original source file;

storing the transcoded second segment in the local cache of the video optimization server; and

stitching the transcoded second segment with the stitched optimized version of the original source file.

8. The method of claim 7 , further comprising transmitting to the cache database, instructions for updating the cache database with a reference key corresponding to the transcoded second segment of the optimized version of the source file stored at the video optimization server.

9. The method of claim 7 , wherein transcoding the second segment of the original source file comprises:

identifying a third segment of the optimized version of the original source file, subsequent to the second segment, that is stored by one of the plurality of other video optimization servers; and

transcoding the original source file from a start of the second segment to a start of the third segment.

10. The method of claim 1 , wherein the preview is maintained in the local cache of the video optimization server after one or more purges of the local cache.

11. A system for streaming optimized video to a client device, comprising:

at least one processor; and

a non-transitory computer-readable storage medium storing executable computer program instructions that when executed by the processor, cause the processor to:

receive a request to optimize an original source file from a client device, the original source file stored on an origin server and the request including a key specifying parameters for optimizing the original source file and uniquely identifying the original source file;

identify, based on the key, a preview of an optimized version of the original source file in a local cache of a video optimization server, the preview corresponding to a first portion of the optimized version of the original source file;

generate a query, based on the key, to a cache database maintaining a plurality of reference keys corresponding to a plurality of optimized versions of source files stored on a plurality of other video optimization servers, each reference key specifying parameters of an optimized version of a source file and uniquely identifying the source file;

receive, from the cache database, a response indicating whether the key matches a reference key maintained in the database;

receive from the cache database, in response to a reference key matching the key, the address of another video optimizer storing a segment of the optimized version of the original source file;

stitch the first portion of the optimized version of the original source file with the segment of the optimized version of the original source file stored on the other video optimizer to generate a stitched optimized version of the original source file; and

stream the stitched optimized version of the original source file for playback on the client device.

12. The system of claim 11 , wherein the storage medium further comprises instructions that when executed cause the processor to:

store a segment of the stitched optimized version of the original source file in the cache of the video optimizer; and

transmit, to the cache database, instructions for updating the cache database in response to storing the segment of the stitched optimized version of the original source file stored in the video optimizer.

13. The system of claim 11 , wherein the received response indicates that different segments of the optimized version of the same original source file are stored on a plurality of different video optimizers, and wherein the storage medium further comprises instructions that when executed cause the processor to:

transmit, to the plurality of different video optimizers, a request for the segment of the optimized version of the original source file stored on each video optimizer; and

stitch the different segments of the optimized version of the same original source file with the generated segment of the original source file.

14. The system of claim 11 , wherein the key comprises a source content signature, the source content signature being a hash of the original source file.

15. The system of claim 11 , wherein the cache database comprises data entries to identify a plurality of optimization servers storing an optimized version of the original source file, the entries being modified through instructions transmitted to the cache database to update a location where the optimized version of the original source file is stored.

16. The system of claim 11 , wherein the storage medium further comprises instructions that when executed cause the processor to:

determine a second segment of the optimized version of the original source file is not stored by the plurality of other video optimization servers;

transcode, responsive to the determination, the second segment of the original source file;

store the transcoded second segment in the local cache of the video optimization server; and

stitch the transcoded second segment with the stitched optimized version of the original source file.

17. The system of claim 16 , wherein the storage medium further comprises instructions that when executed cause the processor to transmit to the cache database, instructions for updating the cache database with a reference key corresponding to the transcoded second segment of the optimized version of the source file stored at the video optimization server.

18. The system of claim 16 , wherein the instructions on the computer readable storage medium to transcode the second medium further comprises instructions that when executed cause the processor to:

identify a third segment of the optimized version of the original source file, subsequent to the second segment, that is stored by one of the plurality of other video optimization servers; and

transcode the original source file from a start of the second segment to a start of the third segment.

19. The system of claim 11 , wherein the preview is maintained in the local cache of the video optimization server after one or more purges of the local cache.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 4, 2025
From: OTELLO CORPORATION ASA
To: TIR TECHNOLOGIES LIMITED
Reel/Frame 071165/0584 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2023
From: PERFORMANCE AND PRIVACY IRELAND LIMITED
To: OTELLO CORPORATION ASA
Reel/Frame 063188/0195 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2017
From: OPERA SOFTWARE IRELAND LTD.
To: PERFORMANCE AND PRIVACY IRELAND LTD.
Reel/Frame 042076/0473 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2016
From: SWENSON, ERIK R.; HEILPERN, JAIME; POMBRA, SANDEEP; EARLEY, RON; ARSHANSKIY, VADIM
To: SKYFIRE LABS, INC.
Reel/Frame 040143/0798 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2016
From: SKYFIRE LABS, INC.
To: OPERA SOFTWARE IRELAND LIMITED
Reel/Frame 040143/0823 →
Continuity (3)
Division 13945747 · Jul 18, 2013
Provisional Application 61673188 · Jul 18, 2012
Related Publication 20150381677A1 · Dec 31, 2015