# US 10,771,789 B2 · Complexity adaptive rate control

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

- Number: US 10,771,789 B2
- Document ID: US10771789B2
- Status: Granted
- Kind: B2
- Application number: 15/600,272
- Filed: 2017-05-19
- Published: 2018-11-22
- Granted: 2020-09-08
- Earliest claimed: 2017-05-19
- Assignees: Google Inc.
- Applicants: Google Inc.
- Inventors: Sam John
- Web page: https://patentgrep.com/patent/US10771789B2

## CPC

- H04N 19/14: Coding unit complexity, e.g. amount of activity or edge presence estimation (H04N19/146 takes precedence)
- H04L 41/0816: the condition being an adaptation, e.g. in response to network events
- H04N 19/109: among a plurality of temporal predictive coding modes
- H04N 19/11: among a plurality of spatial predictive coding modes
- H04N 19/112: according to a given display mode, e.g. for interlaced or progressive display mode
- H04N 19/12: Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
- H04N 19/137: Motion inside a coding unit, e.g. average field, frame or block difference
- H04N 19/152: by measuring the fullness of the transmission buffer
- H04N 19/169: characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N 19/194: involving only two passes
- H04N 19/40: using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Implementations disclose adaptive rate control technology that selects different encoders for different chunks of a media item based on the complexity of the individual chunks. A method includes accessing a media item comprising a first chunk and a second chunk; determining, by a processing device, a first media complexity measure for the first chunk and a second media complexity measure for the second chunk; selecting, by the processing device, a first encoder and a second encoder from a plurality of encoders, wherein the first encoder is selected based on the first media complexity measure of the first chunk and the second encoder is selected based on the second media complexity measure of the second chunk; and encoding the first chunk using the first encoder and encoding the second chunk using the second encoder.

## Claims

### Claim 1

A method comprising:
accessing a media item comprising a first chunk and a second chunk;
determining, by a processing device, an average bit rate of the first chunk based on a storage size of the first chunk and a playback time of the first chunk;
determining, by the processing device executing a complexity measurement module, a first media complexity measure for the first chunk and a second media complexity measure for the second chunk, wherein the first media complexity measure is determined using a mathematical formula that is based on the average bit rate of the first chunk and is determined without performing an analysis of image pixel values of one or more frames of the first chunk;
selecting, by the processing device, a single pass encoder and a multiple pass encoder from a plurality of encoders, wherein the single pass encoder is selected based on the first media complexity measure of the first chunk and the multiple pass encoder is selected based on the second media complexity measure of the second chunk; and
encoding the first chunk of the media item using the single pass encoder and encoding the second chunk of the media item using the multiple pass encoder.

### Claim 2 (depends on 1)

The method of claim 1, wherein each of the plurality of encoders comprise a variable bitrate encoder.

### Claim 3 (depends on 1)

The method of claim 1, wherein each of the first media complexity measure and the second media complexity measure corresponds to a spatial and temporal distribution of a respective chunk.

### Claim 4 (depends on 1)

The method of claim 1, wherein the media item is a video and the first and second media complexity measures are video coding complexity (VCC) measurements, and wherein the determining comprises determining a video coding complexity measurement for the first chunk and a video coding complexity measurement for the second chunk of the media item.

### Claim 5 (depends on 1)

The method of claim 1, wherein determining the second media complexity measure of the second chunk comprises determining, based on metadata of the second chunk, one or more of a bit rate (R), a frame rate (Fps), a chroma factor (CF), a frame width (W), or a frame height (H) in pixels of the second chunk, and further comprises the processing device to execute a complexity measurement module to calculate a value for the first media complexity measure (VCC) based on a mathematical formula comprising: VCC=R/(W*H*Fps*CF).

### Claim 6 (depends on 1)

The method of claim 1, wherein the single pass encoder is a single pass transcoder comprising a video buffering verifier and wherein the multiple pass encoder comprises a two pass transcoder comprising a constrained quality and a bounded bitrate.

### Claim 7 (depends on 1)

The method of claim 1, wherein the single pass encoder is implemented using a leaky bucket model.

### Claim 8 (depends on 1)

The method of claim 1, wherein selecting the single pass encoder comprises:
comparing the first media complexity measure of the first chunk to a predetermined threshold value; and
selecting the single pass encoding responsive to the first media complexity measure being below a predetermined threshold.

### Claim 9 (depends on 1)

The method of claim 1, further comprising:
receiving the media item from a user device that captured and recorded the media item;
segmenting the media item into a plurality of chunks comprising the first chunk and the second chunk; and
combining the first chunk of the media item encoded using the single pass encoder with the second chunk of the media item encoded using the multiple pass encoder to form an encoded media item.

### Claim 10

A system comprising:
a memory;
a processing device operatively coupled to the memory, the processing device to:
access a media item comprising a first chunk and a second chunk;
determine an average bit rate of the first chunk based on a storage size of the first chunk and a playback time of the first chunk;
determine, by a complexity measurement module, a first media complexity measure for the first chunk and a second media complexity measure for the second chunk, wherein the first media complexity measure is determined using a mathematical formula that is based on the average bit rate of the first chunk and is determined without performing an analysis of image pixel values of one or more frames of the first chunk;
select a single pass encoder and a multiple pass encoder from a plurality of encoders, wherein the single pass encoder is selected based on the first media complexity measure of the first chunk and the multiple pass encoder is selected based on the second media complexity measure of the second chunk; and
encode the first chunk of the media item using the single pass encoder and encoding the second chunk of the media item using the multiple pass encoder.

### Claim 11 (depends on 10)

The system of claim 10, wherein each of the plurality of encoders comprise a variable bitrate encoder.

### Claim 12 (depends on 10)

The system of claim 10, wherein each of the first media complexity measure and the second media complexity measure corresponds to a spatial and temporal distribution of a respective chunk.

### Claim 13 (depends on 10)

The system of claim 10, wherein the media item is a video and the first and second media complexity measures are video coding complexity (VCC) measurements, and wherein to determine comprises the processing device to determine a video coding complexity measurement for the first chunk and a video coding complexity measurement for the second chunk of the media item.

### Claim 14 (depends on 10)

The system of claim 10, wherein to determine the second media complexity measure of the second chunk comprises the processing device to determine, based on metadata of the second chunk, one or more of a bit rate (R), a frame rate (Fps), a chroma factor (CF), a frame width (W), or a frame height (H) in pixels of the second chunk, and further comprises the processing device to execute a complexity measurement module to calculate a value for the second media complexity measure (VCC) based on a mathematical formula comprising: VCC=R/(W*H*Fps*CF).

### Claim 15

A non-transitory machine-readable storage medium storing instructions which, when executed, cause a processing device to perform operations comprising:
accessing a media item comprising a first chunk and a second chunk;
determine an average bit rate of the first chunk based on a storage size of the first chunk and a playback time of the first chunk;
determining a first media complexity measure for the first chunk and a second media complexity measure for the second chunk, wherein the first media complexity measure is determined using a mathematical formula that is based on the average bit rate of the first chunk and is determined without performing an analysis of image pixel values of one or more frames of the first chunk;
selecting, by the processing device, a single pass encoder and a multiple pass encoder from a plurality of encoders, wherein the single pass encoder is selected based on the first media complexity measure of the first chunk and the multiple pass encoder is selected based on the second media complexity measure of the second chunk; and
encoding the first chunk of the media item using the single pass encoder and encoding the second chunk of the media item using the multiple pass encoder.

### Claim 16 (depends on 15)

The non-transitory machine-readable storage medium of claim 15, wherein each of the plurality of encoders comprise a variable bitrate encoder.

### Claim 17 (depends on 15)

The non-transitory machine-readable storage medium of claim 15, wherein each of the first media complexity measure and the second media complexity measure corresponds to a spatial and temporal distribution of a respective chunk.

### Claim 18 (depends on 15)

The non-transitory machine-readable storage medium of claim 15, wherein the media item is a video and the first and second media complexity measures are video coding complexity (VCC) measurements, and wherein the determining comprises determining a video coding complexity measurement for the first chunk and a video coding complexity measurement for the second chunk of the media item.

### Claim 19 (depends on 15)

The non-transitory machine-readable storage medium of claim 15, wherein determining the second media complexity measure of the second chunk comprises determining, based on metadata of the second chunk, one or more of a bit rate (R), a frame rate (Fps), a chroma factor (CF), a frame width (W), or a frame height (H) in pixels of the second chunk, and further comprises the processing device to execute a complexity measurement module to calculate a value for the video coding complexity based on a mathematical formula comprising: VCC=R/(W*H*Fps*CF).

### Claim 20 (depends on 1)

The method of claim 1, wherein the bit rate of the first chunk is based on a size of the first chunk and a playback time of the first chunk.
