# US 12,647,368 B2 · Congestion control for low-latency interactive video streaming

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

- Number: US 12,647,368 B2
- Document ID: US12647368B2
- Status: Granted
- Kind: B2
- Application number: 18/790,035
- Filed: 2024-07-31
- Published: 2025-01-30
- Granted: 2026-06-02
- Earliest claimed: 2022-04-04
- Assignees: Google Inc.
- Applicants: Google LLC
- Inventors: Teng Wei; Connor Smith; David Chu; Devdeep Ray; Bernhard Reinert; Zengbin Zhang
- Web page: https://patentgrep.com/patent/US12647368B2

## CPC

- H04L 47/2416: Real-time traffic
- A63F 13/355: Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
- A63F 13/358: Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
- H04L 47/12: Avoiding congestion; Recovering from congestion
- H04L 65/61: for supporting one-way streaming services, e.g. Internet radio
- H04L 65/612: for unicast
- H04L 65/80: Responding to QoS
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 67/131: Protocols for games, networked simulations or virtual reality
- H04N 19/115: Selection of the code volume for a coding unit prior to coding
- H04N 19/146: Data rate or code amount at the encoder output
- H04N 19/164: Feedback from the receiver or from the transmission channel
- H04N 19/172: the region being a picture, frame or field
- H04N 21/23805: {Controlling the feeding rate to the network, e.g. by controlling the video pump}
- H04N 21/2402: {Monitoring of the downstream path of the transmission network, e.g. bandwidth available (traffic monitoring in data switching networks H04L43/00; monitoring data switching networks utilization H04L43/0876)}
- H04N 21/4781: {Games}
- A63F 13/67: adaptively or by learning from player actions, e.g. skill level adjustment or by storing successful combat sequences for re-use
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- A63F: CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

A server transmits an encoded game frame over a network to a respective client system as a set of packets. In response to transmitting the set of packets, the server determines a bandwidth estimate based on the size of the encoded game frame and the timing data associated with the transmitted set of packets. The server then compares the bandwidth estimate to a current video bitrate of the game stream being transmitted from the server to the respective client device. In response to the comparison indicating an underutilization of the network, the server increases the encoding bitrate. Further, in response to the comparison indication an overutilization of the network, the server decreases the encoding bitrate.

## Claims

### Claim 1

A method, comprising:
based on encoding a frame according to an encoding bitrate to produce an encoded frame, transmitting the encoded frame as a set of packets over a network;
determining a bandwidth estimate based on timing data associated with transmitting the set of packets over the network and based on an undershoot correction factor associated with a size of the encoded frame; and
modifying the encoding bitrate based on the bandwidth estimate.

### Claim 2 (depends on 1)

The method of claim 1, wherein the timing data comprises a first set of time stamps indicating when the set of packets was transmitted and a second set of time stamps indicating when the set of packets was received by a device.

### Claim 3 (depends on 1)

The method of claim 1, wherein modifying the encoding bitrate comprises:
based on the bandwidth estimate being less than a current video bitrate, decreasing the encoding bitrate.

### Claim 4 (depends on 1)

The method of claim 1, wherein modifying the encoding bitrate comprises:
based on the bandwidth estimate being greater than a current video bitrate, increasing the encoding bitrate.

### Claim 5 (depends on 1)

The method of claim 1, wherein determining the bandwidth estimate comprises:
determining a time interval to transmit the encoded frame based on the timing data, wherein the bandwidth estimate is determined based on the time interval.

### Claim 6 (depends on 1)

The method of claim 1, wherein determining the bandwidth estimate comprises:
modifying the bandwidth estimate based on a predetermined step size.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
based on encoding a second frame to produce a second encoded frame, transmitting the second encoded frame as a second set of packets over the network according to a pacing rate based on the bandwidth estimate.

### Claim 8

A computing device, comprising:
an encoder configured to encode a frame according to an encoding bitrate to produce an encoded frame; and
a processor configured to:
transmit the encoded frame as a set of packets over a network;
determine a bandwidth estimate based on timing data associated with transmitting the set of packets over the network and based on an undershoot correction factor associated with a size of the encoded frame; and
modify the encoding bitrate based on the bandwidth estimate.

### Claim 9 (depends on 8)

The computing device of claim 8, wherein the timing data comprises a first set of time stamps indicating when the set of packets was transmitted and a second set of time stamps indicating when the set of packets was received by a device.

### Claim 10 (depends on 8)

The computing device of claim 8, wherein the processor is configured to:
based on the bandwidth estimate being lower than a current video bitrate, decrease the encoding bitrate.

### Claim 11 (depends on 8)

The computing device of claim 8, wherein the processor is configured to:
based on the bandwidth estimate being greater than a current video bitrate, increase the encoding bitrate.

### Claim 12 (depends on 8)

The computing device of claim 8, wherein the processor is configured to:
determine a time interval to transmit the encoded frame based on the timing data, wherein the bandwidth estimate is determined based on the time interval.

### Claim 13 (depends on 8)

The computing device of claim 8, wherein the processor is configured to:
modify the bandwidth estimate based on a predetermined step size.

### Claim 14 (depends on 8)

The computing device of claim 8, wherein the processor is configured to:
based on the encoder encoding a second frame to produce a second encoded frame, transmit the second encoded frame as a second set of packets over the network according to a pacing rate based on the bandwidth estimate.

### Claim 15

A non-transitory computer-readable storage medium including instructions that, when executed by at least one processor of a computing device, cause the at least one processor to:
encode a frame according to an encoding bitrate to produce an encoded frame;
transmit the encoded frame as a set of packets over a network;
determine a bandwidth estimate based on timing data associated with transmitting the set of packets over the network and based on an undershoot correction factor associated with a size of the encoded frame; and
modify the encoding bitrate based on the bandwidth estimate.

### Claim 16 (depends on 15)

The non-transitory computer-readable storage medium of claim 15, wherein the timing data comprises a first set of time stamps indicating when the set of packets was transmitted and a second set of time stamps indicating when the set of packets was received by a device.

### Claim 17 (depends on 15)

The non-transitory computer-readable storage medium of claim 15 further including instructions that cause the at least one processor to:
based on the bandwidth estimate being lower than a current video bitrate, decrease the encoding bitrate.

### Claim 18 (depends on 15)

The non-transitory computer-readable storage medium of claim 15 further including instructions that cause the at least one processor to:
based on the bandwidth estimate being greater than a current video bitrate, increase the encoding bitrate.

### Claim 19 (depends on 15)

The non-transitory computer-readable storage medium of claim 15 further including instructions that cause the at least one processor to:
modify the bandwidth estimate based on a predetermined step size.

### Claim 20 (depends on 15)

The non-transitory computer-readable storage medium of claim 15 further including instructions that cause the at least one processor to:
based on encoding a second frame to produce a second encoded frame, transmit the second encoded frame as a second set of packets over the network according to a pacing rate based on the bandwidth estimate.
