# US 8,788,695 B2 · Method and apparatus for session bandwidth estimation and rate control

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

- Number: US 8,788,695 B2
- Document ID: US8788695B2
- Status: Granted
- Kind: B2
- Application number: 13/525,069
- Filed: 2012-06-15
- Published: 2012-12-20
- Granted: 2014-07-22
- Earliest claimed: 2012-06-15
- Assignees: Allot Communications Ltd.
- Applicants: Michael Fox; Faisal Mushtaq; Ashwani Arya; Ron Garrison
- Inventors: Michael Fox; Faisal Mushtaq; Ashwani Arya; Ron Garrison
- Web page: https://patentgrep.com/patent/US8788695B2

## CPC

- G06F 15/781: {On-chip cache; Off-chip memory}
- H04L 65/752: adapting media to network capabilities
- H04L 65/612: for unicast
- H04L 65/762: {at the source (reformatting of additional data in video distribution servers H04N21/2355)}
- 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/2343: involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements {(video transcoding H04N19/40; media packet handling at the source H04L65/762)}
- 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)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

An intermediate device receives a content data message addressed to a receiving device for a communication session between a source device and the receiving device. The intermediate device substitutes adapted content data for content data of the content data message and then sends the adapted content data to the receiving device such that it appears to the receiving device that the adapted content data originated from the source device. The communication from the source device to the receiving device is intercepted by the intermediate device in a manner that is transparent to the source device and receiving device.

## Claims

### Claim 1

A method of streaming video data from a content source over a network to a client device, the method comprising:
performing Deep Packet Inspection (DPI)analysis of traffic data that is transferred on a network route from (i) the content source to (ii) a regional wireless network to which the client device is wirelessly connected;
based on the DPI analysis, determining that a portion of the traffic data is streaming video data, and redirecting the streaming video data to an Adaptive Progressive Download (APD) server which is connected in said network route between (i) the content source and (ii) the regional wireless network to which the client device is wirelessly connected;
at said APD server which is connected in said network route, performing:
(a) creating a fixed-size Transmission Control Protocol (TCP) out-buffer in a TCP stack of a TCP application layer running on said APD server;
(b) preparing a first data-block of the streaming video data, wherein the first data-block has a size which is greater than a size of the fixed-size TCP out-buffer;
(c) writing the first data-block of the streaming video data, into the fixed-size TCP out-buffer of the TCP stack in the TCP application layer on said APD server;
(d) while said first data-block of streaming video data is still being written into the fixed-size TCP out-buffer of the APD server, continuously releasing content from the fixed-size TCP out-buffer, by said TCP application of the APD server to a downstream directed to the client device;
(e) upon completion of the writing of the data-block of streaming video data, into the fixed-sized TCP out-buffer of the APD server, signaling within the APD server by a write completion signal of a socket library of an operating system running on said APD server;
(f) computing at said APD server an estimate of the bandwidth of said downstream, without receiving feedback from the client device,
wherein the data-block to the fixed-sized TCP out-buffer, by (B) the size of the data-block written to the fixed-size TCP out-buffer.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
determining a bit rate at which to re-encode a second data-block of the streaming video data, based on the estimated bandwidth of said downstream.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
determining that a transmit time to send the first data-block of streaming video data has exceeded a threshold time; and
estimating the bandwidth of said downstream based on an (A) an amount of the first data-block that has been transmitted and (B) the threshold time.

### Claim 4 (depends on 1)

The method of claim 1, comprising:
at the Adaptive Progressive Download (APD) server, which is connected along the network route between (i) the content source and (ii) the regional wireless network to which the client device is wirelessly connected, performing:
(a) de-multiplexing the streaming video data into multiple video epochs, wherein each video epoch begins with an intra-coded frame (I-Frame) to enable each video epoch to be decoded independently of other video epochs;
(b) based on said estimate of the bandwidth of said downstream, determining that a current video epoch requires re-encoding at a lower bitrate;
(c) re-encoding the current video epoch at the lower bitrate;
(d) multiplexing the re-encoded current video epoch and other video epochs to generate an output content stream.

### Claim 5 (depends on 1)

The method of claim 1, comprising:
at the Adaptive Progressive Download (APD) server, which is connected along the network route between (i) the content source and (ii) the regional wireless network to which the client device is wirelessly connected, performing:
(a) de-multiplexing the streaming video data into multiple video epochs, wherein each video epoch begins with an intra-coded frame (I-Frame) to enable each video epoch to be decoded independently of other video epochs;
(b) based on said estimate of the bandwidth of said downstream, determining that a current video epoch requires re-encoding at a lower bitrate;
(c) re-encoding the current video epoch at the lower bitrate;
(d) multiplexing (A) the re-encoded current video epoch, and (B) other non-re-encoded video epochs, to generate an output content stream.

### Claim 6 (depends on 5)

The method of claim 5, wherein re-encoding the current video epoch comprises:
changing a frame rate of the current video epoch.

### Claim 7 (depends on 5)

The method of claim 5, wherein re-encoding the current video epoch comprises:
changing a frame type of the current video epoch, wherein the frame type is selected from the group consisting of: I-Frame, P-Frame, B-Frame.

### Claim 8 (depends on 5)

The method of claim 5, wherein re-encoding the current video epoch comprises:
changing a quantization level of the current video epoch.

### Claim 9 (depends on 1)

The method of claim 1, wherein computing at said APD server the estimate of the bandwidth of said downstream, comprises:
computing at said APD server the estimate of the bandwidth of a downstream between (a) the APD server, and (b) said regional wireless network to which multiple client devices are wirelessly connected.

### Claim 10

A system for streaming video data front a content source over a network to a client device, the system comprising:
a Deep Packet Inspection (DPI) module to intercept traffic data being transferred over a network route from (i) the content source to (ii) a regional wireless network to which the client device is wirelessly connected;
an Adaptive Progressive Download (APD) server associated with said DPI module and connected on said network route from (i) the content source to (ii) the regional wireless network to which the client device wirelessly connected;
wherein the DPI module is (A) to determine that a portion of the traffic data is streaming video data, and (B) to redirect the streaming video data to the ADP server;
wherein the APD server which is connected in said network route is:
(a) to create a fixed-size Transmission Control Protocol (TCP) out-buffer in a TCP stack of a TCP application layer running on said APD server;
(b) to prepare a first data-block of the streaming video data, wherein the first data-block has a size which is greater than a size of the fixed-size TCP out-buffer;
(c) to write the first data-block of the streaming video data, into the fixed-size TCP out-buffer of the TCP stack in the TCP application layer running on said APD server;
(d) while said first data-block of streaming video data is still being written into the fixed-size TCP out-buffer of the APD server, to continuously release content from the fixed-sized TCP out-buffer, by said TCP application of the APD server to a downstream directed to the client device;
(e) upon completion of the writing of the data-block of streaming video data, into the fixed-sized TCP out-buffer of the APD server, to signal within the APD server by a write completion signal of a socket library of an operating system running on said APD server;
(f) to compute at said APD server an estimate of the bandwidth of said downstream, without receiving feedback from the client device, by diving (A) a time period required to complete the writing of the data-block to the fixed-size TCP out-buffer, by (B) the size of the data-block written to the fixed-size TCP out-buffer.

### Claim 11 (depends on 10)

The system of claim 10, wherein the second portion of data is encoded at an encoded bit rate, and the processor is further configured to determine a bit rate at which to re-encode the second portion based on the determined second presentation time and the determined metric.

### Claim 12 (depends on 10)

The system of claim 10, wherein the processor is to determine that the first transmit time to send the first portion has exceeded a threshold time,
wherein the processor determines the metric of the bandwidth capacity based on an amount of the first portion that has been transmitted and the threshold time.
