# US 7,543,326 B2 · Dynamic rate control

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

- Number: US 7,543,326 B2
- Document ID: US7543326B2
- Status: Granted
- Kind: B2
- Application number: 10/170,052
- Filed: 2002-06-10
- Published: 2003-12-11
- Granted: 2009-06-02
- Earliest claimed: 2002-06-10
- Assignees: Microsoft Corporation
- Inventors: Shankar Moni
- Web page: https://patentgrep.com/patent/US7543326B2

## CPC

- H04N 21/234345: {the reformatting operation being performed only on part of the stream, e.g. a region of the image or a time segment}
- H04N 21/2187: Live feed
- 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)}
- H04N 21/64769: {for rate control (flow control in packet networks H04L47/10)}
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Dynamic rate control can be implemented in a television-based entertainment environment when forwarding coded data. Real-time information flows are encoded, transcoded, compressed, etc. into data streams that may be forwarded to other components within an apparatus or to other apparatuses across a network. In a described implementation, a bitcount accumulation of a data stream is monitored in multiple overlapping windows. The data stream is compared to a data limit in each window of the multiple overlapping windows to determine whether an expected bitcount accumulation has been exceeded. The data stream is modified responsive to the comparison(s). For example, if the bitcount accumulations in each window exceed the expected bit accumulations at the corresponding relative positions of each window, then the bit rate of the data stream can be modified by reducing bit rate consumption.

## Claims

### Claim 1

A method for providing real-time rate control, comprising:
tracking a current bitcount in a time window of a plurality of time windows;
noting a current time in the time window;
generating a window level modifier based on the current time and the current bitcount in the time window;
determining a new window level control parameter for the time window based on the window level modifier;
repeating the actions of tracking, noting, generating, and determining for each other time window of the plurality of time windows to produce a plurality of new window level control parameters, wherein each time window of the plurality of time windows overlaps at least one other time window of the plurality of time windows;
combining each new window level control parameters at a window level control parameter combiner, the window level control parameter combiner adapted to combine the new window level control parameter for each respective time window of the plurality of time windows to produce a combined window level control parameter, wherein the window level control parameter combiner is further adapted to combine the new window level control parameters for each respective time window of the plurality of time windows using an average of the new window level control parameters for each respective time window of the plurality of time windows; and
calculating a top level control parameter based on the new window level control parameter and the plurality of new window level control parameters.

### Claim 2 (depends on 1)

The method as recited in claim 1, wherein the action of tracking a current bitcount comprises accumulating bits from a data stream during the time window.

### Claim 3 (depends on 1)

The method as recited in claim 1, wherein the action of noting a current time comprises noting a time that corresponds to the current bitcount in the time window.

### Claim 4 (depends on 1)

The method as recited in claim 1, wherein the action of generating a window level modifier comprises:
ascertaining a time-related ratio between the current time and a total time for a time slot that corresponds to the time window;
ascertaining a bitcount-related ratio between the current bitcount and a target bitcount for a total expected bitcount accumulation that corresponds to the time window; and
generating the window level modifier responsive to the time-related ratio and the bitcount-related ratio.

### Claim 5 (depends on 1)

The method as recited in claim 1, wherein the action of generating a window level modifier comprises generating the window level modifier such that the window level modifier is greater the further the current bitcount is above an expected bitcount.

### Claim 6 (depends on 1)

The method as recited in claim 1, wherein the action of generating a window level modifier comprises generating the window level modifier such that the window level modifier is greater the closer the current time is to a total time for a time slot that corresponds to the time window.

### Claim 7

The method as recited in claim I, wherein the action of generating a window level modifier comprises generating the window level modifier such that the window level modifier is greater the closer the current bitcount is to a target bitcount of a total expected bitcount accumulation that corresponds to the time window.

### Claim 8 (depends on 1)

The method as recited in claim 1, wherein the action of generating a window level modifier comprises generating the window level modifier using at least one of a zone-based mechanism or a function-based mechanism.

### Claim 9 (depends on 1)

The method as recited in claim 1, wherein the action of determining a new window level control parameter comprises determining the new window level control parameter for the time window based on the window level modifier and an original window level control parameter.

### Claim 10 (depends on 9)

The method as recited in claim 9, wherein the action of determining the new window level control parameter comprises adding the window level modifier to the original window level control parameter.

### Claim 11 (depends on 9)

The method as recited in claim 9, wherein the action of determining the new window level control parameter comprises multiplying the window level modifier and the original window level control parameter.

### Claim 12 (depends on 1)

The method as recited in claim 1, wherein the action of determining a new window level control parameter comprises determining the new window level control parameter responsive to a group of pictures (GOP)-related parameter.

### Claim 13 (depends on 1)

The method as recited in claim 1, wherein the action of determining a new window level control parameter comprises determining the new window level control parameter responsive to at least one of a macroblock type or a frame type.

### Claim 14 (depends on 1)

The method as recited in claim 1, wherein the new window level control parameter comprises at least one of a quantization scale or a quantization matrix.

### Claim 15 (depends on 14)

The method as recited in claim 14, wherein the method is used in conjunction with a Moving Pictures Expert Group (MPEG)—compliant coding/compressing technique.

### Claim 16 (depends on 1)

The method as recited in claim 1, wherein the plurality of time windows comprise “n” total time windows, and the actions of tracking, noting, generating, and determining are repeated “n-1” times in the action of repeating; and
wherein the plurality of time windows are arranged such that each subsequent time window overlaps a previous time window by an “(n-1)/n” portion of a time window length.

### Claim 17 (depends on 1)

The method as recited in claim 1, wherein the action of calculating a top level control parameter comprises calculating the top level control parameter based on the new window level control parameter, the plurality of new window level control parameters, and a plurality of previous top level control parameters.

### Claim 18 (depends on 1)

The method as recited in claim 1, wherein the action of calculating a top level control parameter comprises calculating the top level control parameter responsive to a combination of the new window level control parameter and the plurality of new window level control parameters.

### Claim 19 (depends on 18)

The method as recited in claim 18, wherein the action of calculating a top level control parameter further comprises calculating the top level control parameter based on the combination and a plurality of previous top level control parameters.

### Claim 20 (depends on 18)

The method as recited in claim 18, wherein the action of calculating a top level control parameter further comprises calculating the top level control parameter based on the combination, a plurality of previous top level control parameters, and at least one weighting coefficient for each of the combination and the plurality of previous top level control parameters.

### Claim 21 (depends on 20)

The method as recited in claim 20, wherein the at least one weighting coefficient for each of the combination and the plurality of previous top level control parameters may be selected so as to control a speed at which a data stream bit rate is changed.

### Claim 22 (depends on 1)

The method as recited in claim 1, further comprising:
forwarding a data stream as modified by the top level control parameter.

### Claim 23 (depends on 22)

The method as recited in claim 22, wherein the action of forwarding a data stream comprises transmitting the data stream over a network.

### Claim 24 (depends on 22)

The method as recited in claim 22, wherein the action of forwarding a data stream comprises writing the data stream to memory storage.

### Claim 25 (depends on 1)

The method as recited in claim 1, wherein the method is performed by a headend of a television-based entertainment system.

### Claim 26 (depends on 1)

The method as recited in claim 1, wherein the method is performed by a client device of a television-based entertainment system.

### Claim 27 (depends on 1)

One or more electronically-accessible storage media comprising electronically-executable instructions that, when executed by at least one processor, direct an electronic apparatus to perform the method as recited in claim 1.

### Claim 28

An apparatus, comprising:
a time and bitcount monitor, the time and bitcount monitor adapted to monitor a current time and a current bitcount in each time window of a plurality of time windows, each time window of the plurality of time windows overlapping each other time window of the plurality of time windows;
a window level modifier generator, the window level modifier generator receiving the current time and the current bitcount for each time window from the time and bitcount monitor, the window level modifier generator adapted to generate a window level modifier for each time window based on the current time and the current bitcount for each respective time window;
a window level control parameter determiner, the window level control parameter determiner receiving the window level modifier for each time window from the window level modifier generator, the window level control parameter determiner adapted to determine a new window level control parameter for each time window based on the window level modifier for each respective time window;
a window level control parameter combiner, the window level control parameter combiner receiving the new window level control parameter for each time window from the window level control parameter determiner, the window level control parameter combiner adapted to combine the new window level control parameter for each respective time window of the plurality of time windows to produce a combined window level control parameter;
a top level control parameter history storage, the top level control parameter history storage storing a plurality of previous top level control parameters;
a top level control parameter calculator1 the top level control parameter calculator receiving the plurality of previous top level control parameters from the top level control parameter history storage and the combined window level control parameter from the window level control parameter combiner, the top level control parameter calculator adapted to calculate a top level control parameter based on the combined window level control parameter and the plurality of previous top level control; and
wherein the window level control parameter combiner is further adapted to combine the new window level control parameters for each respective time window of the plurality of time windows using an average of the new window level control parameters for each respective time window of the plurality of time windows.

### Claim 29 (depends on 28)

The apparatus as recited in claim 28, wherein the apparatus comprises a dynamic rate control unit.

### Claim 30 (depends on 28)

The apparatus as recited in claim 28, wherein the apparatus comprises a headend of a television-based entertainment environment.

### Claim 31 (depends on 28)

The apparatus as recited in claim 28, wherein the apparatus comprises a dent device of a television-based entertainment environment.

### Claim 32 (depends on 31)

The apparatus as recited in claim 31, wherein the apparatus further comprises at least one of a local network output or a memory storage.

### Claim 33 (depends on 32)

The apparatus as recited in claim 32, wherein the apparatus is adapted to forward a data stream that is modified by the top level control parameter to at least one of the local network output or the memory storage.

### Claim 34 (depends on 28)

The apparatus as recited in claim 28, wherein the new window level control parameter comprises at least one of a quantization scale or a quantization matrix of a Moving Pictures Expert Group (MPEG)-compliant coding/compressing technique.

### Claim 35 (depends on 28)

The apparatus as recited in claim 28, further comprising computer-accessible memory; wherein the time and bitcount monitor, the window level modifier generator, the window level control parameter determiner, the window level control parameter combiner, and the top level control parameter calculator are comprised at least partially of computer-executable instructions that are stored on the computer-accessible memory.

### Claim 36 (depends on 28)

The apparatus as recited in claim 28, wherein the time and bitcount monitor, the window level modifier generator, the window level control parameter determiner, the window level control parameter combiner, and the top level control parameter calculator are comprised at least partially of at least one discrete integrated circuit.

### Claim 37 (depends on 28)

The apparatus as recited in claim 28, wherein the time and bitcount monitor is adapted to monitor the current time and the current bitcount in each time window of the plurality of time windows in conjunction with monitoring an absolute time and a total bitcount accumulation that are associated with a data stream.

### Claim 38 (depends on 28)

The apparatus as recited in claim 28, wherein the window level modifier generator is further adapted to generate the window level modifier for each time window relative to a time slot length and a target bitcount accumulation associated with each respective time window.

### Claim 39 (depends on 28)

The apparatus as recited in claim 28, wherein the window level control parameter determiner is further adapted to determine the new window level control parameter based on at least one of a sum or a product determined responsive to the window level modifier and a previous window level control parameter for each respective time window.

### Claim 40

An apparatus, comprising:
a time and bitcount monitor, the time and bitcount monitor adapted to monitor a current time and a current bitcount in each time window of a plurality of time windows, each time window of the plurality of time windows overlapping each other time window of the plurality of time windows;
a window level modifier generator, the window level modifier generator receiving the current time and the current bitcount for each time window from the time and bitcount monitor, the window level modifier generator adapted to generate a window level modifier for each time window based on the current time and the current bitcount for each respective time window;
a window level control parameter determiner, the window level control parameter determiner receiving the window level modifier for each time window from the window level modifier generator, the window level control parameter determiner adapted to determine a new window level control parameter for each time window based on the window level modifier for each respective time window;
a window level control parameter combiner, the window level control parameter combiner receiving the new window level control parameter for each time window from the window level control parameter determiner, the window level control parameter combiner adapted to combine the new window level control parameter for each respective time window of the plurality of time windows to produce a combined window level control parameter;
a top level control parameter history storage, the top level control parameter history storage storing a plurality of previous top level control parameters; and
a top level control parameter calculator, the top level control parameter calculator receiving the plurality of previous top level control parameters from the top level control parameter history storage and the combined window level control parameter from the window level control parameter combiner, the top level control parameter calculator adapted to calculate a top level control parameter based on the combined window level control parameter and the plurality of previous top level control parameters;
wherein the top level control parameter calculator is further adapted to calculate the top level control parameter responsive to an autoregressive model in which the combined window level control parameter is weighted versus the plurality of previous top level control parameters.

### Claim 41

A client device for a television-based entertainment system, the client device comprising:
one or more processors; and
one or more memories in operative communication with the one or more processors, the one or more memories storing process or executable instructions that, when executed, cause the one or more processors to perform actions comprising:
monitoring a current bitcount of an associated data stream in each time window of a plurality of time windows, each time window of the plurality of time windows overlapping at least one other time window of the plurality of time windows;
generating a window level modifier for each time window based on the respective current bitcount for each time window and a respective current time for each time window that corresponds to the respective current bitcount;
determining a window level control parameter for each time window based on the respective window level modifier for each time window;
combining each window level control parameter for each time window of the plurality of time windows to produce a combined window level control parameter, wherein combining the new window level control parameters for each respective time window of the plurality of time windows uses an average of the determined window level control parameters for each respective time window of the plurality of time windows; and
modifying a quantization of the data stream based on the combined window level control parameter.

### Claim 42 (depends on 41)

The client device as recited in claim 41, wherein the client device comprises a set-top box.

### Claim 43 (depends on 41)

The client device as recited in claim 41, further comprising:
a memory storage in operative communication with the one or more processors;
wherein the processor-executable instructions that are stored by the one or more memories cause, when executed, the one or more processors to perform actions further comprising:
forwarding the data stream to the memory storage for storage thereat.

### Claim 44 (depends on 41)

The client device as recited in claim 41, further comprising:
a local output component in operative communication with the one or more processors;
wherein the processor-executable instructions that are stored by the one or more memories cause, when executed, the one or more processors to perform actions further comprising:
forwarding the data stream to the local output component for outputting therefrom over a local network.

### Claim 45 (depends on 41)

The client device as recited in claim 41, wherein the action of modifying a quantization of the data stream based on the combined window level control parameter comprises the action of modifying the quantization of the data stream based on the combined window level control parameter and at least one previous top level control parameter.

### Claim 46 (depends on 41)

The client device as recited in claim 41, wherein the associated data stream of the monitoring action is already encoded and the data stream of the modifying action is transcoded.

### Claim 47 (depends on 41)

The client device as recited in claim 41, wherein the associated data stream of the monitoring action is not encoded and the data stream of the modifying action is encoded.

### Claim 48

A method for providing real-time rate control, comprising:
tracking a current bitcount in a time window of a plurality of time windows;
noting a current time in the time window;
generating a window level modifier based on the current time and the current bitcount in the time window;
determining a new window level control parameter for the time window based on the window level modifier;
repeating the actions of tracking, noting, generating, and determining for each other time window of the plurality of time windows to produce a plurality of new window level control parameters;
combining the plurality of new window level control parameters to produce a combined window level control parameter;
calculating a top level control parameter based on the new window level control parameter and the plurality of new window level control parameters, wherein the top level control parameter is calculated responsive to an autoregressive model in which the combined window level control parameter is weighted versus a plurality of previous top level control parameters stored in a top level control parameter history storage;
wherein each time window of the plurality of time windows overlaps at least one other time window of the plurality of time windows.
