# US 8,751,679 B2 · HTTP adaptive streaming server with automatic rate shaping

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

- Number: US 8,751,679 B2
- Document ID: US8751679B2
- Status: Granted
- Kind: B2
- Application number: 13/268,237
- Filed: 2011-10-07
- Published: 2013-04-11
- Granted: 2014-06-10
- Earliest claimed: 2011-10-07
- Assignees: Ericsson Television Inc.
- Applicants: Kevin McHugh; Charles Dasher; Chris Phillips
- Inventors: Kevin McHugh; Charles Dasher; Chris Phillips
- Web page: https://patentgrep.com/patent/US8751679B2

## CPC

- H04N 21/23439: {for generating different versions}
- H04L 43/08: Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L 65/60: Network streaming of media packets
- H04L 65/80: Responding to QoS
- 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/47202: {for requesting content on demand, e.g. video on demand}
- H04N 21/6332: directed to client
- H04N 21/64322: {IP}
- H04N 21/8456: {by decomposing the content in the time domain, e.g. in time segments}
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

An adaptive streaming server and a method are described herein for determining if a congestion level within a network exceeds a predetermined threshold and when this occurs then one or more lower bit rate segments of a content stream will be transmitted to a client.

## Claims

### Claim 1

An adaptive streaming server for transmitting a content stream through a network to a client, the adaptive streaming server comprising:
a Hypertext Transfer Protocol (HTTP) server comprising an input interface configured to receive a request from the client to play the content stream;
a segmenting unit configured to receive multiple files of the content stream where the multiple files are encoded at different bit rates and further configured to segment each of the multiple files into a plurality of segments;
a segment storage unit configured to store the plurality of segments;
the HTTP server further comprising:
a processing unit configured to generate a master manifest that includes a plurality of child manifests, wherein the first child manifest has references to the segments having a first bit rate, the second child manifest has references to the segments having a second bit rate, and the third child manifest has references to the segments having a third bit rate, and wherein the first bit rate is higher than the second bit rate which is higher than the third bit rate;
an output interface configured to send the master manifest to the client;
the input interface configured to receive a request from the client to fetch a specific one of the segments corresponding to the content stream;
the processing unit configured to obtain the requested segment from the segment storage unit;
the output interface configured to send the requested segment to the client;
a bandwidth monitor configured to monitor a congestion level within the network; and
the processing unit is configured to determine if the congestion level within the network exceeds a predetermined threshold and when this occurs is further configured such that if the client requests the segments associated with the first child manifest then the client is sent segments which have a bit rate that is less than the first bit rate by:
receiving a request from the client to fetch one of the segments associated with the first child manifest corresponding to the content stream;
obtaining a corresponding segment associated with one of the multiple files which has a bit rate that is less than the first bit rate rather than obtain the requested segment, wherein the corresponding segment is referenced by one of the second child manifest or the third child manifest; and
sending the obtained segment to the client which playbacks the obtained segment.

### Claim 2 (depends on 1)

The adaptive streaming server of claim 1, wherein the content stream is a linear content stream of a video-on-demand content stream.

### Claim 3 (depends on 1)

The adaptive streaming server of claim 1, wherein the processing unit is configured to consider the segments referenced by the first child manifest to be the segments referenced by the second child manifest.

### Claim 4 (depends on 3)

The adaptive streaming server of claim 3, wherein the content stream is a linear content stream.

### Claim 5 (depends on 1)

The adaptive streaming server of claim 1, wherein the processing unit is configured to consider the requested segment referenced by the first child manifest to be the corresponding segment referenced by the second child manifest.

### Claim 6 (depends on 5)

The adaptive streaming server of claim 5, wherein the content stream is a linear content stream of a video-on-demand content stream.

### Claim 7 (depends on 1)

The adaptive streaming server of claim 1, wherein the server is configured to send the master manifest to a plurality of clients and when the congestion level within the network exceeds the predetermined threshold then the server is further configured to allow a portion of the clients to continue to receive segments associated with the first child manifest while preventing another portion of the clients from requesting the segments associated with the first child manifest or if those clients requests the segments associated with the first child manifest then sending the corresponding segments which have a bit rate that is less than the first bit rate to those clients.

### Claim 8 (depends on 1)

The adaptive streaming server of claim 1, wherein the client is one of: a personal computer, a mobile phone, a tablet, or a Hypertext Transfer Protocol (HTTP) capable television.

### Claim 9

A method implemented by an adaptive streaming server for transmitting a content stream through a network to a client, the method comprising:
receiving a request from the client to play the content stream;
receiving multiple files of the content stream where the multiple files are encoded at different bit rates;
segmenting each of the multiple files into a plurality of segments;
storing the plurality of segments;
generating a master manifest that includes a plurality of child manifests, wherein the first child manifest has references to the segments having a first bit rate, the second child manifest has references to the segments having a second bit rate, and the third child manifest has references to the segments having a third bit rate, and wherein the first bit rate is higher than the second bit rate which is higher than the third bit rate;
sending the master manifest to the client;
receiving a request from the client to fetch a specific one of the segments corresponding to the content stream;
obtaining the requested segment;
sending the requested segment to the client;
monitoring a congestion level within the network; and
determining if the congestion level within the network exceeds a predetermined threshold and when this occurs if the client requests the segments associated with the first child manifest then the client is sent segments which have a bit rate that is less than the first bit rate by:
receiving a request from the client to fetch one of the segments associated with the first child manifest corresponding to the content stream;
obtaining a corresponding segment associated with one of the multiple files which has a bit rate that is less than the first bit rate rather than obtaining the requested segment, wherein the corresponding segment is referenced by one of the second child manifest or the third child manifest; and
sending the obtained segment to the client which playbacks the obtained segment.

### Claim 10 (depends on 9)

The method of claim 9, wherein the content stream is a linear content stream of a video-on-demand content stream.

### Claim 11 (depends on 9)

The method of claim 9, wherein during the obtaining operation further considering the segments referenced by the first child manifest to be the segments referenced by the second child manifest.

### Claim 12 (depends on 11)

The method of claim 11, wherein the content stream is a linear content stream.

### Claim 13 (depends on 9)

The method of claim 9, wherein during the obtaining operation further considering the requested segment referenced by the first child manifest to be the corresponding segment referenced by the second child manifest.

### Claim 14 (depends on 13)

The method of claim 13, wherein the content stream is a linear content stream of a video-on-demand content stream.

### Claim 15 (depends on 9)

The method of claim 9, further comprising sending the master manifest to a plurality of clients and when the congestion level within the network exceeds the predetermined threshold then allowing a portion of the clients to continue to receive segments associated with the first child manifest while preventing another portion of the clients from requesting the segments associated with the first child manifest or if those clients requests the segments associated with the first child manifest then sending the corresponding segments which have a bit rate that is less than the first bit rate to those clients.

### Claim 16 (depends on 9)

The method of claim 9, wherein the client is one of a personal computer, a mobile phone, a tablet, or a Hypertext Transfer Protocol (HTTP) capable television.
