# US 9,438,652 B2 · Tiered content streaming

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

- Number: US 9,438,652 B2
- Document ID: US9438652B2
- Status: Granted
- Kind: B2
- Application number: 13/863,367
- Filed: 2013-04-15
- Published: 2014-10-16
- Granted: 2016-09-06
- Earliest claimed: 2013-04-15
- Assignees: OpenTV, Inc.
- Applicants: OpenTV, Inc.
- Inventors: Claes Georg Andersson; Nicholas Daniel Doerring; Nicholas Fishwick; John Michael Teixeira
- Web page: https://patentgrep.com/patent/US9438652B2

## CPC

- H04L 65/612: for unicast
- H04L 65/613: for the control of the source by the destination (control signals issued by the client directed to the server or network components specially adapted for selective content distribution H04N21/637)
- H04L 65/752: adapting media to network capabilities
- H04L 65/762: {at the source (reformatting of additional data in video distribution servers H04N21/2355)}
- H04L 65/80: Responding to QoS
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Techniques for providing live content at different quality levels to a user device include advertising content availability at multiple quality levels for selection by the user device, receiving a quality level selection from the user device, wherein the quality level selection matches one of the advertised multiple quality levels, determining whether the received quality level selection differs from a currently used quality level, when it is determined that the received quality level selection is different from the currently used quality level, reconfiguring a transcoder to transcode the live content to only the received quality level, and updating a metafile to include a first quality level at a first bitrate lower than a bitrate for the received quality level selection and a second quality level at a second bitrate higher than the bitrate for the received quality level selection.

## Claims

### Claim 1

A method of providing live content at different quality levels to a remote user device, comprising:
advertising content availability at multiple quality levels in a metafile for selection by the remote user device;
receiving a quality level selection from the remote user device, wherein the quality level selection matches one of the multiple quality levels in the metafile;
determining whether the received quality level selection differs from a currently used quality level for the remote user device;
when the received quality level selection is determined to be different from the currently used quality level, reconfiguring a transcoder to transcode the live content to only the received quality level; and
updating the metafile to include a first quality level at a first bitrate lower than a bitrate of the quality level selection received from the remote user device and a second quality level at a second bitrate higher than the bitrate of the quality level selection received from the remote user device,
receiving a message from the user device, the message comprising device capability information, the device capability information indicating an acceptable segment-to-segment bitrate change; and
selecting the first quality level and the second quality level responsive to the device capability information such that magnitudes of a first difference between the received quality level and the first quality level and a second difference between the received quality level and the second quality level are less than the acceptable segment-to-segment bitrate change,
wherein the first and second bitrates are based on a current output rate and a maximum bitrate change step size.

### Claim 2 (depends on 1)

The method of claim 1, wherein the metafile includes three quality level entries.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
storing the transcoded live content as program segments; and
allowing the remote user device to download the program segments.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
receiving the live content on a first network interface comprising a broadband cable interface, a satellite interface, a telephone line interface, a fiber optic interface or a cellular wireless interface.

### Claim 5 (depends on 4)

The method of claim 4, wherein the advertising comprises:
advertising content availability over a second network interface that is different from the first network interface.

### Claim 6 (depends on 3)

The method of claim 3, wherein each program segment has a pre-determined time duration.

### Claim 7 (depends on 4)

The method of claim 4, wherein the live content received over the first network interface is stored in a volatile memory.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
monitoring a plurality of past quality level selections from the user device to determine a trend; and
selecting the first quality level and the second quality level based on the trend.

### Claim 9

An apparatus for providing live content for viewing, comprising:
a first network interface that receives live content;
a second network interface, different from the first network interface, that communicatively couples the apparatus with a user device;
a content list advertiser that advertises, over a second network interface, availability of the live content in a list comprising a plurality of entries, each entry including a playout rate;
a play-out request receiver that receives, over the second network interface, a viewing request from a user device, the viewing request including a desired playout rate;
a transcoder that transcoders content;
a controller that controls the transcoder to transcode the live content from a rate at which the live content is received over the first network interface to a current output rate matching the desired play-out rate;
a memory that stores output of the transcoder as content segments and making content segments available to the user device; and
a list updater that updates the plurality of entries in the list to include the current output rate, a first rate that is greater than the current output rate and a second rate that is less than the current output rate,
wherein the controller is adapted to:
receive a message from the user device, the message comprising device capability information indicating an acceptable segment-to-segment bitrate change, and
select a first quality level and a second quality level based on the device capability information such that magnitudes of a first difference between a current quality level and the first quality level and a second difference between the current quality level and the second quality level are less than the acceptable segment-to-segment bitrate change, and
wherein the first and second rates are based on the current output rate and a maximum bitrate change step size allowable for the apparatus.

### Claim 10 (depends on 9)

The apparatus of claim 9, wherein:
the playout request receiver is further configured to periodically receives viewing requests from the user device, the viewing request comprising a desired playout rate;
a request checker module that checks, for every viewing request, whether a corresponding new desired playout rate has changed from a last viewing request, and
when a change is determined, the list updater updates the list to include the new desired playout rate and a new rate greater than the new desired playout rate and a new low rate less than the new desired playout rate, and controlling the transcoder to transcoder live content to output transcoded content at the new desired playout rate.

### Claim 11 (depends on 9)

The apparatus of claim 9, wherein the list comprises exactly three bitrate entries.

### Claim 12 (depends on 9)

The apparatus of claim 9, wherein the first network interface comprises a satellite broadcast network interface, a coaxial cable interface, a wireless cellular data network interface or a digital subscriber loop (DSL) network interface.

### Claim 13 (depends on 9)

The apparatus of claim 9, wherein the second network interface comprises an Ethernet interface or a wireless network interface.

### Claim 14

A computer program product comprising a non-transitory computer-readable medium having code stored thereon, the code, when executed, causing a processor to implement a method of streaming live content, the method comprising:
controlling a transcoder to receive live content and output transcoded live content at a current quality level, wherein the current quality level is selected based on a content playback request from a user device;
storing transcoded live content at a local memory as individually addressable segments, wherein each segment has a playback duration;
transmitting a message to the user device indicating that the live content is available at least at the current quality level and at least two additional quality levels, without having any locally stored content segments corresponding to the at least two additional quality levels,
receiving a message from the user device, the message comprising device capability information, the device capability information indicates an acceptable segment-to-segment bitrate change; and
selecting a first quality level for the at least two additional quality levels and a second quality level for the at least two additional quality levels based on the device capability information such that magnitudes of a first difference between the current quality level and the first quality level and a second difference between the current quality level and the second quality level are less than the acceptable segment-to-segment bitrate change;
wherein the at least two quality levels do not exceed a maximum bitrate change step size allowable for the transcoder.

### Claim 15 (depends on 14)

The computer program product comprising a non-transitory computer-readable medium of claim 14, wherein the method further comprises:
transmitting, in response to a request received from the user device, a stored segment from the local memory.

### Claim 16 (depends on 15)

The computer program product comprising a non-transitory computer-readable medium of claim 15, wherein the method further comprises:
deleting, in real time, the segment after transmitting the segment to the user device.

### Claim 17

An apparatus for presenting a live content to a user, the apparatus comprising:
a memory that stores program instructions;
a network interface over which the apparatus receives the live content and associated metadata; and
a processor that reads and executes program instructions from the memory to:
receive, from the user, a viewing request for the live content;
initiate a streaming session with a server of the live content, wherein the streaming session comprises downloading the live content as multiple program segments, each having an encoding bitrate;
communicate a bitrate change maximum step size from one program segment to next that is acceptable to the apparatus;
present the downloaded program segments to the user;
receive a message from the user device, the message comprising device capability information having an acceptable segment-to-segment bitrate change; and
select a first quality level and a second quality level based on the device capability information such that magnitudes of a first difference between a current quality level and the first quality level and a second difference between the current quality level and the second quality level are less than the acceptable segment-to-segment bitrate change,
wherein the first and second quality levels do not exceed the bitrate change maximum step size.

### Claim 18 (depends on 17)

The apparatus of claim 17, wherein the processor also reads and executes program instructions from the memory to:
monitor an operational parameter; and
select a program segment for download based on the operational parameter.

### Claim 19 (depends on 18)

The apparatus of claim 18, wherein the processor also reads and executes program instructions from the memory to:
receive a time interval value; and
control times of program segment downloads so that start of a next program segment download is at least the time interval value after a previous segment download starts.

### Claim 20 (depends on 18)

The apparatus of claim 18, wherein the operational parameter comprises an available network bandwidth.

### Claim 21 (depends on 17)

The apparatus of claim 17, wherein the processor also reads and executes program instructions from the memory to:
provide a quality feedback to the server.
