# US 10,484,442 B2 · Just-in-time distributed video cache

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,484,442 B2
- Document ID: US10484442B2
- Status: Granted
- Kind: B2
- Application number: 15/706,664
- Filed: 2017-09-15
- Published: 2018-01-04
- Granted: 2019-11-19
- Earliest claimed: 2012-07-18
- Assignees: Performance and Privacy Ireland Ltd.
- Applicants: Performance and Privacy Ireland Ltd.
- Inventors: Erik R. Swenson; Jaime Heilpern; Sandeep Pombra; Ron Earley; Vadim Arshanskiy
- Web page: https://patentgrep.com/patent/US10484442B2

## CPC

- H04L 65/80: Responding to QoS
- G06F 16/70: of video data
- H04L 65/1059: End-user terminal functionalities specially adapted for real-time communication
- H04L 65/612: for unicast
- H04L 65/70: Media network packetisation
- H04L 65/756: adapting media to device capabilities
- H04L 65/765: {intermediate}
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04N 21/222: Secondary servers, e.g. proxy server, cable television Head-end {(provisioning of proxy services in data packet switching networks H04L67/56)}
- H04N 21/23103: {using load balancing strategies, e.g. by placing or distributing content on different disks, different memories or different servers (storage management G06F3/0604; allocation of resources considering the load in multiprogramming arrangements G06F9/505; techniques for rebalancing the load in a distributed system G06F9/5083; access to distributed or replicated servers, e.g. load balancing, in data networks H04L67/1001)}
- H04N 21/23106: {involving caching operations (prefetching while addressing of a memory level in which the access to the desired data or data block requires associative addressing means within memory systems or architectures G06F12/0862; caching at an intermediate stage in a data network H04L67/568)}
- H04N 21/23439: {for generating different versions}
- H04N 21/2396: {characterized by admission policies (admission control, resource allocation in open networks H04L12/5692; arrangements for network security using user profiles for access control H04L63/102; access security in wireless networks H04W12/08)}
- H04N 21/64784: {Data processing by the network (data processing in packet switching systems H04L12/56; flow control in packet networks H04L47/10; intermediate storage or scheduling H04L49/90; provisioning of proxy services in data packet switching networks H04L67/56)}
- H04W 4/18: Information format or content conversion, e.g. adaptation by the network of the transmitted or received information for the purpose of wireless delivery to users or terminals
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

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

### Claim 1

A computer-implemented method for streaming video, the method comprising:
receiving a request to optimize an original source file from a client computing device, the request including a key specifying parameters to optimize the original source file;
identifying, based on the key, a first portion of an optimized version of the original source file in a local cache of a video optimizer;
generating a query, based on the key, to a database maintaining a plurality of reference keys corresponding to a plurality of optimized versions of source files stored on a plurality of other video optimizers, each reference key specifying parameters of an optimized version of a source file;
receiving, from the database, a response indicating whether the key matches a reference key;
receiving from the database, in response to a reference key matching the key, the address of another video optimizer storing a segment of the requested 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; and
streaming the stitched optimized version of the original source file for playback on the client computing device.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
storing a segment of the stitched optimized version of the original source file in a cache of the video optimizer; and
transmitting, to the database, instructions to update the database in response to storing the segment of the stitched optimized version of the original source file stored in the video optimizer.

### Claim 3 (depends on 1)

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.

### Claim 4 (depends on 3)

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 first portion of the original source file.

### Claim 5 (depends on 1)

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.

### Claim 6 (depends on 1)

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

### Claim 7 (depends on 1)

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 optimizers;
transcoding, responsive to the determination, the second segment of the original source file;
storing the transcoded second segment in the local cache of the video optimizer; and
stitching the transcoded second segment with the stitched optimized version of the original source file.

### Claim 8 (depends on 7)

The method of claim 7, further comprising transmitting to the database, instructions to update the database with a reference key corresponding to the transcoded second segment of the optimized version of the source file stored at the video optimizer.

### Claim 9 (depends on 7)

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 optimizers; and
transcoding the original source file from a start of the second segment to a start of the third segment.

### Claim 10 (depends on 1)

The method of claim 1, wherein the first portion is maintained in the local cache of the video optimizer after one or more purges of the local cache.

### Claim 11

A system for streaming optimized video to a client device, comprising:
a processor; and
a non-transitory computer-readable storage medium storing executable computer program instructions that, when executed by the processor, causes the processor to:
receive a request to optimize an original source file from a client computing device, the request including a key specifying parameters to optimize the original source file;
identify, based on the key, a first portion of an optimized version of the original source file in a local cache of a video optimizer;
generate a query, based on the key, to a database maintaining a plurality of reference keys corresponding to a plurality of optimized versions of source files stored on a plurality of other video optimizers, each reference key specifying parameters of an optimized version of a source file;
receive, from the database, a response indicating whether the key matches a reference key;
receive from the database, in response to a reference key matching the key, the address of another video optimizer storing a segment of the requested 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; and
stream the stitched optimized version of the original source file for playback on the client computing device.

### Claim 12 (depends on 11)

The system of claim 11, further comprising instructions that cause the processor to:
store a segment of the stitched optimized version of the original source file in a cache of the video optimizer; and
transmit, to the database, instructions to update the database in response to storing the segment of the stitched optimized version of the original source file stored in the video optimizer.

### Claim 13 (depends on 11)

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.

### Claim 14 (depends on 13)

The system of claim 13, further comprising instructions that 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 first portion of the original source file.

### Claim 15 (depends on 11)

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.

### Claim 16 (depends on 11)

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

### Claim 17 (depends on 11)

The system of claim 11, further comprising instructions that 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 optimizers;
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 optimizer; and
stitch the transcoded second segment with the stitched optimized version of the original source file.

### Claim 18 (depends on 17)

The system of claim 17, further comprising instructions that cause the processor to transmit to the database, instructions for updating the database with a reference key corresponding to the transcoded second segment of the optimized version of the source file stored at the video optimizer.

### Claim 19 (depends on 17)

The system of claim 17, 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 optimizers; and
transcoding the original source file from a start of the second segment to a start of the third segment.

### Claim 20 (depends on 11)

The system of claim 11, wherein the first portion is maintained in the local cache of the video optimizer after one or more purges of the local cache.
