# US 10,771,833 B2 · System and method for improving streaming video via better buffer management

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

- Number: US 10,771,833 B2
- Document ID: US10771833B2
- Status: Granted
- Kind: B2
- Application number: 16/302,363
- Filed: 2017-05-31
- Published: 2019-10-03
- Granted: 2020-09-08
- Earliest claimed: 2016-05-31
- Assignees: The Trustees of Princeton University
- Applicants: The Trustees of Princeton University
- Inventors: Matvey Arye; Michael J. Freedman
- Web page: https://patentgrep.com/patent/US10771833B2

## CPC

- H04L 47/12: Avoiding congestion; Recovering from congestion
- G06F 8/4451: {Avoiding pipeline stalls}
- H04L 43/0864: Round trip delays
- H04L 47/27: Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
- H04L 47/29: {using a combination of thresholds}
- H04L 65/612: for unicast
- H04L 65/65: Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
- H04L 65/75: Media network packet handling
- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L 69/16: Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04N 21/23439: {for generating different versions}
- 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/2662: Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
- H04N 21/44004: {involving video buffer management, e.g. video decoder buffer or video display buffer}
- H04N 21/44209: {Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network (arrangements for maintenance or administration in data switching networks involving bandwidth and capacity management H04L41/0896)}
- H04N 21/6373: for rate control {, e.g. request to the server to modify its transmission rate (flow control in packet networks H04L47/10)}
- 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/8586: {by using a URL (processing chained hypermedia data for information retrieval G06F16/94; information retrieval from the Internet by using URLs G06F16/955; URL in broadcast information H04H20/93; Web-based protocols H04L67/02)}
- H04L 43/0882: Utilisation of link capacity
- H04L 43/0888: Throughput
- H04L 43/0894: Packet rate
- H04L 43/16: Threshold monitoring
- 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

## Abstract

Disclosed are solutions for improving Internet video streaming. A first number is determined based on one or more parameters, including network conditions. A second number is then determined corresponding to a number of video segments that is greater than or equal in size to a third number determined based on a bandwidth-delay product of the network to a remote machine. The second number of video segments is then requested in a pipelined fashion. Pipelined requests are stopped when a predetermined size of the video has been requested that is greater than or equal to the first number. Alternatively, a request is sent to the remote machine to send a portion of the video, where the size of the portion of the video is equal to the first number or equal to the size of video remaining if less than the first number. Combined with pipelining, the approach achieves near-optimal throughput and fast bitrate adaptation, regardless of control plane algorithm.

## Claims

### Claim 1

A method for improving video streaming performance of a video in a system having a client machine and remote machine, the method being performed by the client machine and comprising:
determining a first number based on one or more parameters, at least one of the parameters being related to current network conditions;
determining a second number corresponding to a number of video segments of the video, as calculated by a total size of the video segments, that is greater than or equal in size to a third number determined based on at least a bandwidth-delay product of the network to the remote machine, the third number being no less than two;
requesting from the remote machine the second number of video segments in a pipelined fashion, wherein a subsequent request for a video segment of the video is made before a response to a prior request is at least partially received, provided that no less than the second number of video segments are outstanding at any one time, and wherein another subsequent request is made if fewer than the second number of video segments are outstanding; and
stopping subsequent pipelined requests if a predetermined size of the video has been requested that is greater than or equal to the first number.

### Claim 2 (depends on 1)

The method of claim 1, wherein the requests occur via HTTP.

### Claim 3 (depends on 1)

The method of claim 1, wherein the current network conditions include an estimated bandwidth to the remote machine.

### Claim 4 (depends on 1)

The method of claim 1, wherein the current network conditions include an estimate of the network latency or round-trip time to the remote machine.

### Claim 5 (depends on 1)

The method of claim 1, wherein determining the first number includes determining a first number based on two or more parameters, at least two of the parameters being related to network conditions.

### Claim 6 (depends on 5)

The method of claim 5, wherein one of the two parameters is an estimated bandwidth to the remote machine.

### Claim 7 (depends on 5)

The method of claim 5, wherein one of the two parameters is an estimate of network latency or round-trip time to the remote machine.

### Claim 8 (depends on 1)

The method of claim 1, wherein determining the first number includes determining the first number based on an underperformance parameter used to determine how close performance should be to an optimal value.

### Claim 9 (depends on 1)

The method of claim 1, wherein determining the first number includes determining the first number based on TCP estimates.

### Claim 10 (depends on 9)

The method of claim 9, wherein the TCP estimates include a number of round-trips before TCP reaches a slow-start threshold or a bandwidth-delay-product.

### Claim 11 (depends on 9)

The method of claim 9, wherein the TCP estimates include a number of bytes transferred before TCP reaches a slow-start threshold or a bandwidth-delay-product.

### Claim 12 (depends on 1)

The method of claim 1, wherein the first number is determined by:
determining an underperformance value;
estimating a slow start threshold;
calculating an initial number of network round-trips that occur between a beginning of a response and a slow start threshold;
calculating a subsequent number of network round-trips that occur between the slow start threshold until a fair-bandwidth-delay product is reached;
determining a total number of network round-trips based on the initial number of network round-trips, the subsequent number of network round-trips, and the underperformance value; and
computing the first number based on the total number of network round-trips and the bandwidth-delay product.

### Claim 13 (depends on 1)

The method of claim 1, further comprising using an adaptive bit-rate algorithm to select a bitrate of outstanding video segments.

### Claim 14

An apparatus having improved video streaming performance, comprising:
a transceiver;
memory; and
at least one processor operatively connected to the memory and the transceiver, the at least one processor being operative to:
(i) determine a first number based on one or more parameters, at least one of the parameters being related to current network conditions; and
(ii) at least one of:
(a) determine a second number corresponding to a number of video segments of the video, as calculated by a total size of the video segments, that is greater than or equal in size to a third number determined based on at least a bandwidth-delay product of the network to the remote machine, the third number being no less than two, then request the second number of video segments in a pipelined fashion, and stop sending pipelined requests if a predetermined size of the video has been requested that is greater than or equal to the first number, and
(b) request that the remote machine send a portion of the video, the portion of the video having a size that is equal to the first number or equal to the size of video remaining if less than the first number.

### Claim 15 (depends on 14)

The apparatus of claim 14, wherein the processor determines the first number based on two or more parameters, at least two of the parameters being related to network conditions.

### Claim 16 (depends on 14)

The apparatus of claim 14, wherein the apparatus is a server, workstation, desktop computer, laptop, smart phone or mobile device, wearable device, smart TV, video-game console, digital video recorder, digital-media center, projector, tablet, set-top box, streaming stick, dongle, smart hub, or gateway.
