# US 10,313,710 B1 · Synchronizing encoding between encoders

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

- Number: US 10,313,710 B1
- Document ID: US10313710B1
- Status: Granted
- Kind: B1
- Application number: 15/664,246
- Filed: 2017-07-31
- Granted: 2019-06-04
- Earliest claimed: 2017-07-31
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Kent Haakan Karlsson; Gaurav Saxena
- Web page: https://patentgrep.com/patent/US10313710B1

## CPC

- H04N 21/234: Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N 21/2181: {comprising remotely distributed storage units, e.g. when movies are replicated over a plurality of video servers (distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS], H04L67/1097)}
- H04N 21/2187: Live feed
- H04N 21/23418: {involving operations for analysing video streams, e.g. detecting features or characteristics (television picture signal circuitry for scene change detection H04N5/147; filtering for image enhancement G06T5/00; methods or arrangements for recognising scenes G06V20/00; arrangements characterised by components specially adapted for monitoring, identification or recognition of video in broadcast systems H04H60/59)}
- H04N 21/242: Synchronisation processes, e.g. processing of PCR [Programme Clock References] {(arrangements for synchronising broadcast or distribution via plural systems in broadcast distribution systems H04H20/18)}
- H04N 21/2665: Gathering content from different sources, e.g. Internet and satellite
- H04N 21/6379: directed to encoder {, e.g. for requesting a lower encoding rate}
- H04N 21/8456: {by decomposing the content in the time domain, e.g. in time segments}
- H04N 21/8547: involving timestamps for synchronizing content
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Techniques are described for synchronizing encoding processes between encoders. Timestamps are compared between encoders such that offsets can be determined and used by encoders to encode fragments for the same segments of media content.

## Claims

### Claim 1

A system, comprising one or more processors and memory configured to:
receive a request to encode media content;
generate, by a first encoder, a plurality of fingerprints corresponding to a portion of the media content, the portion of the media content being associated with a first timestamp;
generate, by the first encoder, a synchronization pattern based on the fingerprints;
provide the synchronization pattern to a second encoder;
receive a second timestamp associated with the portion of the media content from a second encoder;
determine, by the first encoder, a first offset based on the first timestamp and the second timestamp;
encode, by the first encoder, a fragment corresponding to a segment the media content using the first offset;
generate, by the first encoder, a new synchronization pattern based on additional fingerprints associated with a third timestamp;
provide the new synchronization pattern to the second encoder;
receive a fourth timestamp from the second encoder;
determine, by the first encoder, a second offset based on the third timestamp and the fourth timestamp;
determine, by the first encoder, that the second offset is different from the first offset; and
encode, by the first encoder, an additional fragment using the second offset.

### Claim 2 (depends on 1)

The system of claim 1, wherein the one or more processors and memory are configured to generate the fingerprints by determining a pixel intensity value associated with a block of pixels, the pixel intensity value being an average value of each pixel of the block of pixels.

### Claim 3 (depends on 1)

The system of claim 1, wherein the first timestamp represents when the first encoder received the portion of the media content, and wherein the second timestamp represents when the second encoder received a corresponding portion of the media content.

### Claim 4 (depends on 1)

The system of claim 1, wherein the one or more processors and memory are configured to:
receive a first request from a client device for playback of the media content;
provide first fragments encoded by the first encoder to the client device
receive a second request from the client device for playback of the media content; and
provide second fragments encoded by the second encoder to the client device.

### Claim 5 (depends on 4)

The system of claim 4, wherein the one or more processors and memory are configured to:
determine that the first encoder is not reliably encoding fragments for the media content; and
responsive to determining that the first encoder is not reliably encoding fragments for the media content, request the second fragments encoded by the second encoder.

### Claim 6 (depends on 4)

The system of claim 4, wherein the one or more processors and memory are configured to provide the first fragments and provide the second fragments according to a load balancing scheme.

### Claim 7 (depends on 1)

The system of claim 1, wherein the one or more processors and memory are configured to determine the first offset based on the first timestamp and the second timestamp by identifying a time difference between that the first timestamp and the second timestamp.

### Claim 8

A method, comprising:
receiving a request to encode media content;
generating, by a first encoder, a plurality of fingerprints corresponding to a portion of the media content, the portion of the media content being associated with a first timestamp;
generating, by the first encoder, a synchronization pattern based on the fingerprints;
providing the synchronization pattern to a second encoder;
receiving a second timestamp associated with the portion of the media content from a second encoder;
determining, by the first encoder, a first offset based on the first timestamp and the second timestamp;
encoding, by the first encoder, a fragment corresponding to a segment the media content using the first offset;
generating, by the first encoder, a new synchronization pattern based on additional fingerprints associated with a third timestamp;
providing the new synchronization pattern to the second encoder;
receiving a fourth timestamp from the second encoder;
determining, by the first encoder, a second offset based on the third timestamp and the fourth timestamp;
determining, by the first encoder, that the second offset is different from the first offset; and
encoding, by the first encoder, an additional fragment using the second offset.

### Claim 9 (depends on 8)

The method of claim 8, further comprising generating the fingerprints by determining a pixel intensity value associated with a block of pixels, the pixel intensity value being an average value of each pixel of the block of pixels.

### Claim 10 (depends on 8)

The method of claim 8, wherein the first timestamp represents when the first encoder received the portion of the media content, and wherein the second timestamp represents when the second encoder received a corresponding portion of the media content.

### Claim 11 (depends on 8)

The method of claim 8, further comprising:
receiving a first request from a client device for playback of the media content;
providing first fragments encoded by the first encoder to the client device
receiving a second request from the client device for playback of the media content; and
providing second fragments encoded by the second encoder to the client device.

### Claim 12 (depends on 11)

The method of claim 11, further comprising determining that the first encoder is not reliably encoding fragments for the media content, and responsive to determining that the first encoder is not reliably encoding fragments for the media content, requesting the second fragments encoded by the second encoder.

### Claim 13 (depends on 11)

The method of claim 11, wherein providing the first fragments and providing the second fragments is done in accordance with a load balancing scheme.

### Claim 14 (depends on 8)

The method of claim 8, further comprising determining the first offset based on the first timestamp and the second timestamp by identifying a time difference between that the first timestamp and the second timestamp.

### Claim 15

A computer program product, comprising one or more non-transitory computer-readable media having computer program instructions stored therein, the computer program instructions being configured such that, when executed by one or more computing devices, the computer program instructions cause the one or more computing devices to:
receive a request to encode media content;
generate, by a first encoder, a plurality of fingerprints corresponding to a portion of the media content, the portion of the media content being associated with a first timestamp;
generate, by the first encoder, a synchronization pattern based on the fingerprints;
provide the synchronization pattern to a second encoder;
receive a second timestamp associated with the portion of the media content from a second encoder;
determine, by the first encoder, a first offset based on the first timestamp and the second timestamp;
encode, by the first encoder, a fragment corresponding to a segment the media content using the first offset;
generate, by the first encoder, a new synchronization pattern based on additional fingerprints associated with a third timestamp;
provide the new synchronization pattern to the second encoder;
receive a fourth timestamp from the second encoder;
determine, by the first encoder, a second offset based on the third timestamp and the fourth timestamp;
determine, by the first encoder, that the second offset is different from the first offset; and
encode, by the first encoder, an additional fragment using the second offset.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein the computer program instructions are configured to cause the one or more computing devices to generate the fingerprints by determining a pixel intensity value associated with a block of pixels, the pixel intensity value being an average value of each pixel of the block of pixels.

### Claim 17 (depends on 15)

The computer program product of claim 15, wherein the first timestamp represents when the first encoder received the portion of the media content, and wherein the second timestamp represents when the second encoder received a corresponding portion of the media content.

### Claim 18 (depends on 15)

The computer program product of claim 15, wherein the computer program instructions are further configured to cause the one or more computing devices to:
receive a first request from a client device for playback of the media content;
provide first fragments encoded by the first encoder to the client device
receive a second request from the client device for playback of the media content; and
provide second fragments encoded by the second encoder to the client device.

### Claim 19 (depends on 18)

The computer program product of claim 18, wherein the computer program instructions are further configured to cause the one or more computing devices to:
determine that the first encoder is not reliably encoding fragments for the media content; and
responsive to determining that the first encoder is not reliably encoding fragments for the media content, request the second fragments encoded by the second encoder.

### Claim 20 (depends on 18)

The computer program product of claim 18, wherein the computer program instructions are configured to cause the one or more computing devices to provide the first fragments and provide the second fragments according to a load balancing scheme.

### Claim 21 (depends on 15)

The computer program product of claim 15, wherein the computer program instructions are configured to cause the one or more computing devices to determine the first offset based on the first timestamp and the second timestamp by identifying a time difference between that the first timestamp and the second timestamp.
